文章目录
我们身处于一个充斥着分布式系统解决方案的计算机时代,无论是支付宝、微信这样顶级流量产品、还是区块链、IOT 等热门概念、抑或如火如荼的容器生态技术如 Kubernetes,其背后的技术架构核心都离不开分布式系统。
为什么要懂分布式架构设计
系统学习分布式架构设计对于技术人的成长非常关键,对于云原生开发者而言如何设计出符合云原生设计哲学的应用,往往离不开分布式系统知识与方法论的运用。如何设计出高弹性、可配置、可分布、高性能、高容错、更安全、更韧性、快交付的云原生应用往往是衡量开发者水准的重要参考。
然而分布式系统是一个很大的概念,从架构设计、研发流程、运维部署、工程效率等多个角度均有很深的知识可以挖掘,学习成本和难度相对较大。
近期,我整理了过去阅读过的一些和分布式相关书刊和文章,加上自己做分布式开发的一些的心得分享给大家,本文作为开篇,总体上给出知识概览,后续将分篇结合代码实践来进行阐述。起草仓促,水平有限,欢迎大家一起学习指正。
分布式系统大图
一、设计
1、网关模式,Gateway
1)功能
2)设计要点
2、边车模式,Sidecar
1)价值
2)设计要点
3、服务网格,Service Mesh
新一代微服务架构,本质是服务间通信的基础设施层。
架构图(图片来源于网络,若有侵权请联系作者删除)
1)特点
2)主流框架
4、分布式锁
1)解决方案
2)设计要点
5、配置中心
6、异步通讯
7、幂等性
二、性能
1、分布式缓存
2、异步处理
3、数据库扩展
三、容错
1、系统可用性
2、服务降级
3、服务限流
1)限流目的
2)限流方式
3)解决方案
4)流控算法
5)设计要点
4、熔断设计
1)场景
2)三个状态
3)设计要点
5、补偿事务
四、DevOps
1、部署
1)基础设施
2)部署策略
2、配置管理
3、监控
4、CI 与 CD
五、工程效率
1、敏捷管理
2、持续集成
3、持续交付
总结及学习建议
分布式系统在阿里巴巴经济体有着广泛的应用,以笔者所在的弹性计算技术团队为例,当业务足够规模化后,最终面临的技术问题都是通过践行分布式系统架构的设计理念和方法论得以解决,可以说分布式系统架构的知识与方法论是当前互联网应用规模化后的通用解决方案。
学习分布式系统设计也不是一蹴而就,需要不断汲取理论知识,然后将理论不断付诸实践,最终通过一次次的调优来将知识的价值最大化。
笔者最后的建议是先理论、后实践、重实践、不妥协,所谓纸上得来终觉浅,绝知此事要躬行,与君共勉。
作者丨杨泽强(竹涧)
来源丨公众号:阿里巴巴云原生(ID:Alicloudnative)