我们身处于一个充斥着分布式系统解决方案的计算机时代 , 无论是支付宝、微信这样顶级流量产品、还是区块链、IOT 等热门概念、抑或如火如荼的容器生态技术如 Kubernetes , 其背后的技术架构核心都离不开分布式系统 。
为什么要懂分布式架构设计
系统学习分布式架构设计对于技术人的成长非常关键 , 对于云原生开发者而言如何设计出符合云原生设计哲学的应用 , 往往离不开分布式系统知识与方法论的运用 。 如何设计出高弹性、可配置、可分布、高性能、高容错、更安全、更韧性、快交付的云原生应用往往是衡量开发者水准的重要参考 。
然而分布式系统是一个很大的概念 , 从架构设计、研发流程、运维部署、工程效率等多个角度均有很深的知识可以挖掘 , 学习成本和难度相对较大 。
近期 , 我整理了过去阅读过的一些和分布式相关书刊和文章 , 加上自己做分布式开发的一些的心得分享给大家 , 本文作为开篇 , 总体上给出知识概览 , 后续将分篇结合代码实践来进行阐述 。 起草仓促 , 水平有限 , 欢迎大家一起学习指正 。
分布式系统大图
文章图片
一、设计
1、网关模式 , Gateway
1)功能
①请求路由 , 客户端直接调用 Gateway , Gateway 负责路由转发到注册服务上
②服务注册 , 后端服务将 API 注册 , Gateway 负责路由
③负载均衡 , 支持多种负载策略
- round robin
- 随机均衡算法
- 多权重负载
- session 粘连
- 其它
【高弹性|可能是全网最完整的分布式架构设计图谱(含22个知识点)】⑤灰度发布 , 可以针对服务版本或者租户等特性做灰度发布
⑥API 聚合 , 将多个后端接口聚合 , 减少客户端调用次数
⑦API 编排 , 通过编排来串接多个 API 完成特定业务
2)设计要点
①可用性 , 必须保证高可用
②扩展性 , 可以灵活扩展以支持特定业务比如特定业务流控
③高性能 , 通常使用异步 IO 模型框架实现 , 比如 Java netty , Go Channel
④安全 , 如加密通信 , 鉴权 , DDOS 防御等
⑤运维
- 应用监控 , 包括容量 , 性能 , 异常检测等
- 弹性伸缩 , 具备高弹性能力 , 以低成本应对高峰值
- 与业务解耦合 , 提供扩展扩展机制比如 Plugin , Serverless 的思路支持后端业务
- 服务隔离 , 可以按照后端服务划分网关 , 做到不同服务使用不同网关
- 网关部署靠近后端 , 保证网络损耗最小 , 性能最佳
推荐阅读
- 浦峰|冬奥纪实8k超高清试验频道开播,冬奥结束后转入常态化运转
- 年轻人|人生缺少的不是运气,而是少了这些高质量订阅号
- 精度|将建模速率提升10倍,消费级3D扫描仪Magic Swift在2021高交会大显“身手”
- Tesla|最高涨幅21088元:特斯拉Model 3/Y入门车型价格调整
- 新机|快准稳,捕捉每个高光瞬间! 刘衡分享EOS R5拍摄体验
- Apple|苹果高管解读AirPods 3代技术细节 暗示蓝牙带宽可能成为瓶颈
- 人工智能|聚焦车载人工智能计算芯片研究 推进汽车产业高质量发展
- 凝胶|高交会刮起 “专精特新”风 “小巨人”撑起大视野
- Tesla|特斯拉新款Model S电池体积小能量密度高 外媒揭秘三大关键技术
- 养殖|科创信达冠名!第二届智慧养殖高峰论坛帷幕:推动畜牧行业新升级