极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/06:02
登录|注册

云开发的高性能高可用架构设计

讲述:丁婵大小:8.29M时长:06:02
你好,欢迎收听极客视点。
云开发作为一个公有云服务,不仅要能为开发者提供各类能力支持,更重要的是能为客户业务提供连续不间断的服务。这里,云开发的高可用就包括两个方面:一是确保云开发自身服务的高可用,可以不间断提供服务;二是为客户提供支持高并发的能力支持,确保客户业务不断上涨过程中,客户业务高可用。
而云开发服务调用链路上有非常多的功能模块,这就要求云开发内部的所有功能模块都是高性能和高可用的。目前云开发服务内部依赖模块,日常均达到远超过 99.99% 的服务可用性和极低的响应时间。
那么云开发如何保证高可用高性能呢?最近,腾讯高级前端开发工程师艳杰在 InfoQ 介绍了云开发的高性能高可用架构设计,重点如下。
首先,看一下云开发整体架构图:
从图中可以看到用户的一次服务调用需经过多个中间层服务,最终到达客户资源层,所以云开发服务的高可用高性能从大的层面上可分为 “数据链路”和 “底层资源”两个方面。

数据链路

数据链路是用户请求能否成功到达客户资源的关键,链路耗时也会对用户请求总耗时产生直接影响。所以保证链路的高可用性和高性能非常关键,以下为部分设计优化建议:
尽可能简单,不引入不必要的依赖;
各模块无状态设计,便于在系统请求量上升时快速进行横向扩容;
各模块可降级设计,在单个模块出现问题时,可自动或手动降级到备用方案,并且有兜底方案;
多级缓存设计,提升系统性能;
自动故障转移,链路上下游主机可以自动发现和剔除故障主机,快速恢复服务;
链路中各模块进行跨机房的多集群部署,在故障时能够进行切换;
针对系统中可重试的场景设计重试机制,保证成功率;
网络策略优化,长连接优化,部分模块内部采用更高效的 RPC 调用;
采用更高性能的实现方式,减少耗时;
快慢请求分离,快请求同步慢请求异步的方式提高性能。

底层资源

底层资源的高可用是云开发服务高可用的关键一环,这一部分将对 “云函数 ”和 “云数据库”进行分别介绍。

云函数优化

下图为云函数高可用的部署架构:
云函数从接入层到资源层,各层均进行了多集群的部署,每个集群都按跨机房的方式部署。集群内单机或单机房故障系统能够自动发现并且快速剔除,这种部署方式可以应对单机故障、机房网络故障等设施类故障。集群故障也能够快速切换用户集群来快速恢复服务,缩短故障时间,保证高可用性。另外这种部署上的设计,也便于进行更大范围的横向扩容,提供更大的系统并发容量,以满足客户不断上涨的业务需求。
熟悉云开发的开发者应该了解,函数在一次调用中会涉及到函数的启动,启动又可以分为冷启动和热启动,热启动是非常快速的,而冷启动则相对较慢。
启动耗时对于云函数性能来说是非常关键的,所以云函数性能的优化重点之一就在于减少冷启动率和冷启动耗时:
优化代码下载耗时,在虚拟机内和可用区内建立多级缓存,提升下载云函数代码包下载速度;
优化函数网络部署策略,降低部署耗时;
优化容器启动,降低启动时间;
基于用户请求量变化趋势和周期性的请求量变化规律,对云函数并发量进行准实时预测,提前进行扩缩容量;
支持版本别名,用户更新代码, 以 Rolling Update 方式进行新旧版本替换,保证热启动率;
优化函数实例预留时间,保证整体的低冷启动率。

云数据库优化

云数据库的部署架构如图所示:
云数据库接入层进行了分层设计并支持水平横向扩容,所有用户请求会被分配到不同的主机上,每个主机都独立维护用户数据库连接,这种方式保证了数据库接入层能够大规模进行水平扩展。另外,在部署上也进行了多集群的策略部署,集群内部能够自动发现故障主机并剔除。不同用户分配到不同的接入集群,用户请求可在多集群上进行灵活调度,以应对可能出现的服务故障,提供更高的可用性和更短的恢复时间。
此外,数据库引擎实例也均进行了跨主机的多数据库实例的部署,在单数据库实例故障时能够进行自动化转移。
以上就是云开发的高性能高可用架构设计,希望能给你带来参考价值。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
数据链路
底层资源
云函数优化
云数据库优化
显示
设置
留言
收藏
39
沉浸
阅读
分享
手机端
快捷键
回顶部