
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
说起分布式编程开发相信大家应该都不陌生的吧,而今天我们就通过案例分析来了解一下,在Serverless环境中如何实现分布式编程。
由于无状态计算是一种特质,所有的持久性需求都将存储在后端即服务(BaaS)中,通常是BaaS的组合中。一旦你更多地使用FaaS,你还会发现你的部署单元(即函数)比你已习惯了的可能还要小。因此,在默认情况下,Serverless架构是分布式的,并且有许多组件必须要通过网络来进行集成。你的架构还将包括将服务连接在一起,比如身份验证、数据库、分布式队列等。
分布式系统有很多好处,比如我们前面讨论过的弹性。在默认情况下,分布式还能为你的架构带来了单区域的高可用性。在Serverless环境中,当云供应商所在区域的某个可用性区域出现故障时,你的架构将能够利用其他仍在运行的可用性区域——从开发人员的角度来看,所有这些都是不透明的。
在选择架构时总要权衡利弊。在这个特质中,你牺牲了一致性来换取可用性。通常在云上,每个Serverless服务也都有自己的一致性模型。例如,在AWSS3中,通过在S3桶中对新对象的PUT操作可以获得“写后读”(read-after-write)的一致性。对于对象更新,S3是终一致的。对于你来说,决定使用哪种BaaS是很常见的,因此要注意它们的一致性模型的行为。
另一个挑战是你需要熟悉分布式消息的传递方法。例如,你需要熟悉并了解精确一次投递(exactly-oncedelivery)这一难题,因为分布式队列的常见消息投递方式是至少一次投递(at-least-once-delivery)。由于这种投递方式,AWSLambda可以被多次调用,因此你必须确保你的实现是幂等的(了解FaaS的重试行为也很重要,其中AWSLambda可能会在失败时多次执行)。你需要了解的其他挑战还包括分布式事务的行为。然而,随着微服务的普及,构建分布式系统的学习资源一直在演进。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。