云开发的高性能高可用架构设计
极客时间编辑部
讲述:丁婵大小:8.29M时长:06:02
你好,欢迎收听极客视点。
云开发作为一个公有云服务,不仅要能为开发者提供各类能力支持,更重要的是能为客户业务提供连续不间断的服务。这里,云开发的高可用就包括两个方面:一是确保云开发自身服务的高可用,可以不间断提供服务;二是为客户提供支持高并发的能力支持,确保客户业务不断上涨过程中,客户业务高可用。
而云开发服务调用链路上有非常多的功能模块,这就要求云开发内部的所有功能模块都是高性能和高可用的。目前云开发服务内部依赖模块,日常均达到远超过 99.99% 的服务可用性和极低的响应时间。
首先,看一下云开发整体架构图:
从图中可以看到用户的一次服务调用需经过多个中间层服务,最终到达客户资源层,所以云开发服务的高可用高性能从大的层面上可分为 “数据链路”和 “底层资源”两个方面。
数据链路
数据链路是用户请求能否成功到达客户资源的关键,链路耗时也会对用户请求总耗时产生直接影响。所以保证链路的高可用性和高性能非常关键,以下为部分设计优化建议:
尽可能简单,不引入不必要的依赖;
各模块无状态设计,便于在系统请求量上升时快速进行横向扩容;
各模块可降级设计,在单个模块出现问题时,可自动或手动降级到备用方案,并且有兜底方案;
多级缓存设计,提升系统性能;
自动故障转移,链路上下游主机可以自动发现和剔除故障主机,快速恢复服务;
链路中各模块进行跨机房的多集群部署,在故障时能够进行切换;
针对系统中可重试的场景设计重试机制,保证成功率;
网络策略优化,长连接优化,部分模块内部采用更高效的 RPC 调用;
采用更高性能的实现方式,减少耗时;
快慢请求分离,快请求同步慢请求异步的方式提高性能。
底层资源
底层资源的高可用是云开发服务高可用的关键一环,这一部分将对 “云函数 ”和 “云数据库”进行分别介绍。
云函数优化
下图为云函数高可用的部署架构:
云函数从接入层到资源层,各层均进行了多集群的部署,每个集群都按跨机房的方式部署。集群内单机或单机房故障系统能够自动发现并且快速剔除,这种部署方式可以应对单机故障、机房网络故障等设施类故障。集群故障也能够快速切换用户集群来快速恢复服务,缩短故障时间,保证高可用性。另外这种部署上的设计,也便于进行更大范围的横向扩容,提供更大的系统并发容量,以满足客户不断上涨的业务需求。
熟悉云开发的开发者应该了解,函数在一次调用中会涉及到函数的启动,启动又可以分为冷启动和热启动,热启动是非常快速的,而冷启动则相对较慢。
启动耗时对于云函数性能来说是非常关键的,所以云函数性能的优化重点之一就在于减少冷启动率和冷启动耗时:
优化代码下载耗时,在虚拟机内和可用区内建立多级缓存,提升下载云函数代码包下载速度;
优化函数网络部署策略,降低部署耗时;
优化容器启动,降低启动时间;
基于用户请求量变化趋势和周期性的请求量变化规律,对云函数并发量进行准实时预测,提前进行扩缩容量;
支持版本别名,用户更新代码, 以 Rolling Update 方式进行新旧版本替换,保证热启动率;
优化函数实例预留时间,保证整体的低冷启动率。
云数据库优化
云数据库的部署架构如图所示:
云数据库接入层进行了分层设计并支持水平横向扩容,所有用户请求会被分配到不同的主机上,每个主机都独立维护用户数据库连接,这种方式保证了数据库接入层能够大规模进行水平扩展。另外,在部署上也进行了多集群的策略部署,集群内部能够自动发现故障主机并剔除。不同用户分配到不同的接入集群,用户请求可在多集群上进行灵活调度,以应对可能出现的服务故障,提供更高的可用性和更短的恢复时间。
此外,数据库引擎实例也均进行了跨主机的多数据库实例的部署,在单数据库实例故障时能够进行自动化转移。
以上就是云开发的高性能高可用架构设计,希望能给你带来参考价值。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论