无服务器入门知识
- 作者:新网
- 来源:新网
- 浏览:100
- 2018-05-03 13:32:17
无服务器环境中的基本单位是任务或作业,它是围绕特定工作负载处理的实例化和执行。 任务处理自从编程开始就存在,所以它也不是一个全新的事物。 但是考虑到这些工作负载处理的高度分布的性质和抽象的方式,因此跨过具体的实现层次,并有广泛的理解是必要的。
无服务器环境中的基本单位是任务或作业,它是围绕特定工作负载处理的实例化和执行。 任务处理自从编程开始就存在,所以它也不是一个全新的事物。 但是考虑到这些工作负载处理的高度分布的性质和抽象的方式,因此跨过具体的实现层次,并有广泛的理解是必要的。
同步与异步
虽然处理任务的性质 - 无论是同步还是异步 - 通常是一个平台问题,但它也是在任务级别需要考虑的一个重要因素。 传统的工作和作业处理系统在很大程度上是异步的,这意味着调用进程不保持与执行任务处理组件的持久连接。 作业将排队,因此,它们可能不会立即运行。 调用函数和处理器之间唯一的特定连接将任务排队等待运行。 (注意,某些平台可以允许对任务获得状态,但是通过API调用而不是直接/持久连接)。
许多新的无
服务器平台允许同步处理,从而保持连接并且客户端在功能正在处理时等待。 同步处理的优点是可以直接从处理平台获得结果,而在异步处理中,获得结果必须作为独立的调用来完成。 我将在平台部分讨论更多细节,虽然一般的规则是同步处理适用于轻量级函数(类似于API调用获得天气信息),而异步处理更多的涉及处理作业(音频转录或作为小批量处理作业的一组事件的处理),以及启动处理的应用/组件/功能不是处理结果的应用/组件/功能的地方。
无状态
无论处理方法如何,开发微服务和/或无
服务器功能的核心原则之一是每个服务或方法应被视为无状态。(小编:无状态也反复在在高可用架构群讨论及分享中提及)。 无状态是指每个任务是一个单独且不同的处理请求,其包含足够的信息来满足该请求。 服务和方法不应存储任何唯一的软件配置或状态。 任何配置数据都应来自方法外部,通常作为任务的一部分或通过平台内的配置服务。 该方法应该仅用于其计算资源,仅用于处理单个工作负载。
另外,应当有明显的开始状态和结束状态,并且服务或方法应以相同的方式处理每个任务。 借用一个 principles of clean code, bad code — and bad microservices and serverless functions [1] 一文中的观点,我们应该聚焦并使用单一责任原则(SRP)[2] 。 思考无服务器函数的一个好方法是每个函数应该有一个且只有一个维度或向量的变化。 换句话说,如果有多种方式可以扩展函数(例如,将检查多个特征的图像分析),则对于每个向量应当存在两个或更多个不同的函数。
在我们使用的用例中,每个
电子邮件是一个单独的事件,因此每个电子邮件都有一个单独的任务序列。每个任务将承载为相应的任务或方法提供处理的数据。以上就是我们的今日分享,希望对您有所帮助。