无服务器架构应用的挑战与解决方案
1. 不同工作量的工作单元问题
在无服务器平台中,工作单元的工作量不一致是一个常见问题。如果将请求所需资源看作是由内存、CPU 容量和执行时间构成的三维块,那么大多数发往单个无服务器服务的工作应该大小相近,特别是在内存和 CPU 容量维度上。无服务器平台通常假设大多数工作单元大小相似来管理工作执行,即便某个工作单元稍大,也主要是增加该单元的执行时间。
但当工作单元需要更多内存或 CPU 容量时,无服务器平台通常会为每个实例设置相同的维度限制(以及有一定弹性的执行超时时间)。超出这些限制的实例会被终止或阻止执行,这对较大的工作单元来说是个问题。简单的解决办法是增加每个实例允许的内存或 CPU,但这意味着为每个工作单元支付资源溢价,以确保少数工作单元有足够资源完成。
这个问题会影响无服务器单体应用和微服务,大多数工作可能会有些失衡,不过监控直方图可以帮助诊断哪些工作项需要比其他请求多 10 倍或 100 倍的资源。虽然不平衡的工作负载并非无服务器实现的障碍,但会削弱无服务器架构的资源效率优势。
解决方案
- 与无服务器架构契合的方案 :将不同类型的工作单元分离到不同的服务中。无服务器架构便于服务的部署和维护,可将相同的应用代码部署到具有不同资源配置的多个服务中。如果工作是同步交付给应用的,可能需要一个 API 网关根据请求属性路由请求;如果工作以事件形式交付,可利用现有的事件分发系统根据事件属性路由工作。
- 与无服务器架构无关的方案 :
- 每个请求处理固定量的工作,并发出
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



