如何避免Serverless的反模式?
极客时间编辑部
讲述:丁婵大小:7.90M时长:05:45
你好,欢迎收听极客视点。
Serverless 技术近年来大火,这是因为它提供了云服务开发人员无法抗拒的产品,其主要优势是将服务器管理的工作抽象给了供应商,对用户来说,Serverless 也可以随用随付。但是,任何技术都有其特有的缺点,在 Serverless 的应用过程中,开发者发现一些错误的使用方式会让它引发很多问题。
软件工程师萨吉尔·优素福(Sarjeel Yusuf)发文揭示了那些困扰 Serverless 体系架构的反模式以及如何规避他们。公众号“架构头条”对原文进行了翻译,极客视点摘录了其中的两点,供你参考。
1. 到底多小才算特别小
Serverless 的主要目标是将复杂的基础架构抽象化,从而让人们把更多的关注重点放在业务逻辑上面。但是很明显的是,随着业务逻辑被拆分成各个 function,慢慢达到了平衡点,额外开销也开始逐渐超过了拆分带来的收益。而随着 function 的数量不断增加,这个问题会几何倍数地增大。因此这种情况可以被列为一种反模式。
解决方案
云供应商已经充分认识到使用无服务器 function 的开销。例如,AWS 发布了 Serverless Event Bus 服务—— AWS EventBridge。该服务减轻了与 function 之间传递事件有关的问题,甚至允许第三方工具将事件发送到 AWS 架构。但是,这不能完全解决问题。
想要找到解决方案,需要先知道什么场景会出现这种问题。使用 Serverless 的 function 来提高开发便捷性这件事已经是众所皆知了。构建 function 相对来说非常容易,因此开发人员更倾向于不断创建新的 function ,导致了过度设计。
因此解决方案应该从开发过程开始的时候,就对架构设计进行思考,并且深入理解业务逻辑。这可以先分析客户预期如何使用应用程序,根据其使用的场景来考虑性能问题以及用例,从而实现需求。
主要目标还是了解用户期望采用的流程,以及在哪个区域的应用程序期望承受更高的负载。因此,对这些要求更为清晰的了解将有助于确定实际所需要的 function 以及它们的作用域。当务之急是与产品经理或其他人一起,制定出业务的目标和流程。
2. 递归可不是朋友
递归是计算机科学中不可或缺的一个概念,它会降低计算机计算时的复杂性,相关的文献中广泛使用的“大 O 表示法”就是递归的典型应用。不过在 Serverless 中,递归可能产生无法预期的影响。特别是它的伸缩性会极大地加剧这种影响,应该抵制使用递归,尤其是在递归算法导致无限递归的场景。
在对容器或其他以 CPU 为中心的实例进行编程时,核心问题在于,由于递归会增加处理能力,从而使 CPU 利用率达到最大化。一个个 function 会不断地自我触发,这可能导致在各个线程中触发的 function 数量呈指数增长。
在 Serverless 的场景下,实例的 CPU 利用率达到最大并不是问题,因为它可以自动伸缩。从理论上讲,可以增加无限数量的工作节点,甚至可以满足最严格的递归算法的需求。但是,从成本的角度出发,递归会导致 DoW(Denial on Wallet) 的攻击。
时刻需要记住,在 Serverless 的场景下,计费里面不止包含计算能力,还包括调用和运行时间。结果就是递归导致你云供应商收费激增。选择 Serverless 模式是为了节约成本,而这种使用方式却抵消了这种优势,你以为费用下降了,但实际却恰恰相反。
解决方案
显而易见的解决方案是在构建无服务器应用程序时注意代码库中的递归算法。但是,可能有些应用程序仍需要递归操作。例如,在机器学习的应用中,重复训练模型直到在训练数据或验证数据上达到一定有意义的精度。但是,问题是可以提供多少次递归?
就像前面说的,递归函数最大的威胁点是无限递归的可能性。不过在大多数情况下,这是一种意料之外的结果,程序理论上不需要特殊处理无限递归。因此如果需要使用到递归,请确保进行严格的测试,尽可能完全避免这种问题。
此外,你也可以在自己的 function 之间传递数据,以保持一个递归计数,并设置一个失效保护的开关,以便当递归计数达到一定的数量时停止正在运行的 function。这将使系统知道递归发生的次数,并允许可配置的限制随着时间的推移而变化,同时考虑到无服务器应用程序的成本和其他因素。这样你的系统就知道递归实际发生的次数,并允许配置一个限制,可以随着时间的变化而变化,同时牢记成本和无服务器应用程序的其他因素。
总而言之,Serverless 无疑正在彻底改变应用程序在云服务上面的构建方式。但是,在应用过程中,注意避免反模式。希望今天的内容对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论