在Serverless环境中如何设计微服务?

2022-09-06 02:51:32
关注

作者 | Raja Saravanan

编译 | EthanServerless

已成为企业在数字化、现代化升级过程中越来越流行的范式,不管是国内的阿里云、腾讯云、华为云,还是国外的亚马逊云科技,微软等云计算厂商,都正在大力投入无服务器计算领域。由于 Serverless 提供了一个微型的架构,终端客户无需部署、配置或管理服务器服务,而且代码运行所需要的服务器服务皆由云端平台来提供,这就为企业提高了灵活性,同时降低了运营开销和成本。但与之而来的问题在于,Serverless 体系结构的高度分布式特性,要求开发人员重新思考其应用程序设计和开发方法。本文介绍几个最佳实践设计模式,以飨读者。

​众所周知,Serverless 是基于微服务体系结构的自然选择。以基于 AWS 的 Serverless 应用程序为例,它依赖于 AWS Lambda 函数,这些函数在设计上是无状态和短暂的,Lambda 函数被设计为运行小块代码以响应其他服务发出的事件。Lambda 还与一系列可用于实现分布式系统中常见模式的托管服务集成,如消息队列(Amazon 简单队列服务)、API(Amazon API 网关)和事件流(Amazon Kinesis)。这将有助于将构建微服务过程中的痛点最小化。

为工作负载选择适当的设计模式 

1、扼杀器(Strangler)模式​Strangler 模式允许开发人员用微服务(可以用一个或多个 Lambda 函数实现)逐步替换其单体组件,而不是完全关闭或一次性替换。

Strangler 模式

此模式使用 strangler(如API网关)来接受对遗留系统的传入请求。然后,再将它们路由到遗留应用程序或新的 Serverless 应用。因为客户端只与 strangler 交互,所以他们不知道后端服务受到影响。一旦整个遗留系统被重构,并且所有流量都被路由到新应用程序,则可以安全地弃用前者。

2、聚合器(Aggregator)模式

在基于微服务的架构中,客户端通常需要调用多个后端服务来执行操作。由于这些调用发生在网络上,客户端和微服务之间的聊天通信可能会增加应用程序延迟,特别是在带宽有限的情况下。

​聚合器模式

聚合器模式通过使用单个 Lambda 函数来接受所有客户端请求,减少了客户端需要进行的调用数量。然后,Lambda 函数将请求转发给适当的微服务和第三方 API,来聚合它们的结果,并向客户端返回单个响应。

3、状态机模式(State Machine)​构建应用程序时,业务工作流往往会变得非常复杂。AWS 中的有一个比较好用的“Step”功能,可以用于协调涉及多个微服务的复杂工作流。“Step”功能包括内置的状态管理、分支、错误处理和重试功能,无需编写样板代码。

​状态机模式

4、Saga 模式

在基于微服务的应用中,每个微服务通常都有自己的数据库,其中包含与其他微服务数据库中的数据密切相关的数据。Saga 模式通过协调互连微服务中的一系列本地事务来确保数据一致性。一旦微服务执行其本地事务,它就会触发链中的下一个服务执行其事务。如果一个事务在此过程中失败,将启动一系列补偿事务,以回滚以前事务中所做的更改。

​Saga 模式

Saga 模式可以通过 choreography 或 orchestration 来实现。在 choreography 模型中,每个服务发布一个事件,触发下一个服务运行。而在orchestration 中,由中央协调器管理整个事务链。

5、断路器(Circuit breaker)模式

在分布式系统中,在满足一个请求时涉及多个服务,思考如何处理服务故障是至关重要的。有些问题(如网络延迟)是间歇性的,可以自行解决,可能只需上游服务的重调用即可。然而,更严重的问题或停机,就需要主动干预,解决所需的时间成本都是不确定的。在这些情况下连续重试可能会消耗关键资源,并导致依赖同一资源池的其他服务匮乏,这可能导致灾难性级联故障。

​Circuit breaker 模式

断路器模式允许使用键值存储来跟踪请求故障和断路器状态,而且通过 Lambda 函数来决定是否需要基于故障计数对受影响的服务进行后续调用,从而在系统中构建容错能力。

总结 

毫无疑问,云计算正在悄无声息的影响着改变着我们的生活。不论是商业,还是科研,Serverless 计算正在成为当下云计算的主流发展方向之一。于开发者而言,Serverless 的部署比较简单,但前提是,我们应该借鉴最佳实践模式来设计,减少不必要的资源浪费。

原文链接:

https://medium.com/@raja.sk.saravanan/architect-your-microservices-in-serverless-with-right-design-pattern-60ebe674968

您觉得本篇内容如何
评分

相关产品

EC Sense 爱氪森科技 DS-IR-HT-CO2 高温二氧化碳气体传感器 NDIR红外二氧化碳传感器

· 多温度点 / 全量程校准 · RMS 噪声 10 年 · 双通道设计,漂移少· 高温灭菌温度可达190 摄氏度· 提供自动校准模式和手工校准模式

Visual Sound Q7 音频麦克风

,我们生产的最好的钕手持式动态话筒采用高输出、低阻抗设计和心形拾音模式。我们生产的最好的钕手持式动态话筒。终极全能话筒。*出色的舞台和录音室人声话筒*高输出、低阻抗设计*钕动态话筒元件*心形拾音模式

凯纳福科技 KNF-1311 液位传感器

KNF-1311/KNF-1311A 毫米波雷达是专门针对水文检测进行设计的雷达。该雷达采用FMCW模式,非接触式安装设计,体积小巧,结构紧凑、精度高,功耗低,抗干扰能力强。

Plast-O-Matic FSA100 液体流量计

系列FSA可调流量开关可用于PVC或CPVC,流量范围为8– 1900 GPM,设计用于管道尺寸1″到10″。在运行期间提供连续调节;SPDT15安培开关容量模式或干式计算机/PLC接口模式。

Transcat, Inc. FLIR E6-NIST 热像仪

产品亮点,易于使用,直观,用户友好的界面,可在热模式或MSX模式下进行测量。,方便地共享图像和结果,下载图像,创建报告,并立即显示您的发现。,紧凑耐用,专为便携性和恶劣环境而设计

武汉普赛斯仪表 LDBIxx型 仪表

普赛斯大功率led管liv测试设备采用全新开发、自主设计的大电流脉冲恒流源,可以完美兼容CW模式以及QCW模式,支持直流恒流、直流扫描、脉冲直流、脉冲扫描等四种模式。

ROHM Semiconductor 罗姆半导体 BU7150NUV 音频放大器和前置放大器

BU7150NUV是专为单电池供电的音频产品设计的音频放大器(VDD=0.93~3.5V,Ta=0~85°C)。BU7150NUV可选择单端模式用于立体声耳机,BTL模式用于单声道扬声器操作。对于VDD=1.5V、THD+N=1%时的BU7150NUV,单端模式下RL=16O时的输出功率为14mW,BTL模式下RL=8O时的输出功率为85mW。

CARLO GAVAZZI 佳乐 PD112CNB25BP 光电传感器及开关

坚固的外壳,精密的机械设计和大功率LED,在恶劣环境下具有卓越的性能。对于门模式,传感器有一个测试输入,设计用于远程禁用(静音)发射器,从而从门控制器或PLC评估传感器功能。内置2种可选模式:用于一般自动化的u201d工业模式和专门用于门和闸门控制的u201d模式

TelephoneStuff.com SDO-450 音频麦克风

鹅颈话筒专为狭窄环境设计。特点:-镀铬屏幕-黑色外壳和19英寸镀铬鹅颈,带安装法兰-全向模式-按键通话开关

Dytran by HBK 迪川仪器 3196C 振动传感器

Dytran 3196C型是一种高温充电模式加速计,设计用于在高达+500°F(+260°C)的温度下可靠地工作。

评论

您需要登录才可以回复|注册

提交评论

51CTO

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

常见磁传感器及原理和应用

提取码
复制提取码
点击跳转至百度网盘