简介: 在8月20日“阿里巴巴技术质量精品课”上,来自蚂蚁的经国分享了对云原生时代微服务的高可用架构设计的全面解析,为大家介绍了应用架构演进路径、云原生时代的技术福利、高可用架构的设计原则以及经典案例的设计。
演讲嘉宾简介:
经国,蚂蚁金服资深技术专家,毕业于浙江大学。2014年加入蚂蚁金服,先后负责过支付宝的单元化、弹性、去ORACLE等架构升级,担任多年支付宝双十一、双十二、新春红包大型活动等技术保障负责人,现为蚂蚁金服数字金融线担任技术风险架构师,负责高可用架构、技术风险平台、应急快反等技术底盘的建设。
**以下内容根据演讲视频以及PPT整理而成。
本次分享主要围绕以下五个方面:
• 应用架构演进路径
• 云原生时代的技术福利
• 高可用架构的设计原则
• 经典案例的设计
• 未来思考**
微服务是当下非常热门的一种架构,阿里目前正在从SOA架构体系向微服务架构迁移。同时整个软件应用研发开始进入云原生时代。在这些技术演进背景下讨论如何更好地实现稳定且高可用的架构方案,保证应用持续可用非常有必要。
一、应用架构演进路径
支付宝最开始是一个单体应用。随着业务不断发展,支付宝拆分成了多个服务,衍生出了若干代架构。微服务是服务化后的进一步演进,服务的粒度比服务化更细,具有很好的流量管控机制,中间件和编程模型。云原生的发展使Serverless也得到了发展,FAAS是Serverless的一种典型实现,能够以非常小的成本搭建小程序。另外,低代码和无代码现在也非常流行。
基础设施同样也得到了很好的发展。最开始,单体架构是托管式的,通常将应用程序托管给电信运营商的某个机房,在物理机上运行单体应用。后来,基础设施开始向虚拟化演进,比如VMware等公司在物理机上构建虚拟化层和虚拟机,在虚拟机上运行操作系统。再后来,云化结合虚拟化技术和基础设施,在虚拟机上运行Docker进程,在Docker进程中运行应用程序。现在,根据云通未来的理念,包括蚂蚁在内的很多公司都在实现上云。蚂蚁的基础设施已经完全实现了云化,包括公有云和私有云。从架构角度来看,蚂蚁的基础设施就是在云底座上运行一层K8S,在Pod里运行APP,其上层对应着FAAS、网格化、Service mesh、微服务等应用程序。
作为一个复杂的业务应用,如何实现技术支撑对蚂蚁非常关键。蚂蚁目前正在尝试许多FAAS相关的技术选型,但从更大的范围来看,微服务仍然是主流的选择。蚂蚁所使用的微服务架构本身也在不断演进,比如把和业务无关的功能下沉到Sidecar,将数据库的一些中间件mesh化等。尽管从应用研发的角度看,蚂蚁所使用的架构风格相比于原来发生了很大的变化,但从整体趋势来看,最主要的变化仍在于将和业务能力无关并且和基础设施相关的能力下沉。
二、云原生时代的技术红利
云原生已经演化成了一个非常庞大的生态。这张图囊括了云原生里非常多的内容。从设计高可用且稳定性高的应用的角度来看,相关的内容包括数据库技术、云原生存储、Service mesh、可观测性、Serverless等。
数据库技术
应用开发不仅需要关注业务逻辑,还需要关注数据,将领域模型、业务流程、配置等数据以Online形式存储。近几年,数据库技术发生了很大的变化,HBase等分布式数据库提供的强一致保证给云原生应用的设计和开发带来了许多好处。此前,应用设计需要考虑读写分离,需要连接不同的数据源处理读写分离的结果,并且这些功能都需要写入应用程序代码。而现在,这些功能可以直接利用数据库的水平扩展能力来实现,数据库技术的发展极大地避免了我们直接和数据层交互。
云原生存储
蚂蚁的大部分业务已经实现云盘存储,也就是将日志存储到远方磁盘。此前,单体应用通常将数据存储于本机磁盘,并且不提供其它冗余备份