高弹性|可能是全网最完整的分布式架构设计图谱(含22个知识点)

我们身处于一个充斥着分布式系统解决方案的计算机时代 , 无论是支付宝、微信这样顶级流量产品、还是区块链、IOT 等热门概念、抑或如火如荼的容器生态技术如 Kubernetes , 其背后的技术架构核心都离不开分布式系统 。
为什么要懂分布式架构设计
系统学习分布式架构设计对于技术人的成长非常关键 , 对于云原生开发者而言如何设计出符合云原生设计哲学的应用 , 往往离不开分布式系统知识与方法论的运用 。 如何设计出高弹性、可配置、可分布、高性能、高容错、更安全、更韧性、快交付的云原生应用往往是衡量开发者水准的重要参考 。
然而分布式系统是一个很大的概念 , 从架构设计、研发流程、运维部署、工程效率等多个角度均有很深的知识可以挖掘 , 学习成本和难度相对较大 。
近期 , 我整理了过去阅读过的一些和分布式相关书刊和文章 , 加上自己做分布式开发的一些的心得分享给大家 , 本文作为开篇 , 总体上给出知识概览 , 后续将分篇结合代码实践来进行阐述 。 起草仓促 , 水平有限 , 欢迎大家一起学习指正 。
分布式系统大图

高弹性|可能是全网最完整的分布式架构设计图谱(含22个知识点)
文章图片

一、设计
1、网关模式 , Gateway
1)功能
①请求路由 , 客户端直接调用 Gateway , Gateway 负责路由转发到注册服务上
②服务注册 , 后端服务将 API 注册 , Gateway 负责路由
③负载均衡 , 支持多种负载策略

  • round robin
  • 随机均衡算法
  • 多权重负载
  • session 粘连
  • 其它
④安全特性 , 支持 HTTPS , 账户鉴权 , 及其它安全特性支持
【高弹性|可能是全网最完整的分布式架构设计图谱(含22个知识点)】⑤灰度发布 , 可以针对服务版本或者租户等特性做灰度发布
⑥API 聚合 , 将多个后端接口聚合 , 减少客户端调用次数
⑦API 编排 , 通过编排来串接多个 API 完成特定业务
2)设计要点
①可用性 , 必须保证高可用
②扩展性 , 可以灵活扩展以支持特定业务比如特定业务流控
③高性能 , 通常使用异步 IO 模型框架实现 , 比如 Java netty , Go Channel
④安全 , 如加密通信 , 鉴权 , DDOS 防御等
⑤运维
  • 应用监控 , 包括容量 , 性能 , 异常检测等
  • 弹性伸缩 , 具备高弹性能力 , 以低成本应对高峰值
⑥架构