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

2、边车模式 , Sidecar
1)价值
①分离控制与逻辑 , 分离业务逻辑与路由 , 流控 , 熔断 , 幂等 , 服务发现 , 鉴权等控制组件
②适用场景

  • 老系统改造扩展 , Sidebar 进程与服务进程部署在同一个节点 , 通过网络协议通讯
  • 多语言混合分布式系统扩展
  • 应用程序由多方提供
2)设计要点
①标准服务协议 , Sidebar 到 Service , Sidebar 到 Sidebar 协议尽可能与语言解耦
②聚合控制逻辑比如流控 , 熔断 , 幂等 , 重试 , 减少业务逻辑
③不要使用对服务侵入的方式进行进程间通讯如信号量 , 共享内存 , 优先使用本地网络通讯的方式比如 TPCP 或者 HTTP
3、服务网格 , Service Mesh
新一代微服务架构 , 本质是服务间通信的基础设施层 。

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

架构图(图片来源于网络 , 若有侵权请联系作者删除)
1)特点
①应用间通讯中间层
②轻量级网络代理
③解耦应用程序
④应用程序无感知
2)主流框架
①Istio
②Linkerd
4、分布式锁
1)解决方案
①Redis 分布式锁 , SETNX key value PX expiretime
  • value 生成 , 最好全局唯一比如 TraceID , 可以使用 /dev/urandom 生成
  • expiretime 单位是毫秒 , 过期锁自动释放, 锁持有者保证过期时间内争抢资源完成计算
②悲观锁 , 先获取锁 , 再进行操作 , 吞吐量底
③乐观锁 , 使用版本号方式实现 , 吞吐量高 , 可能出现锁异常 , 适用于多读情况
④CAS , 修改共享数据源的场景可以代替分布式锁
2)设计要点
①排他性 , 任意条件只有一个 client 可以获取锁
②锁有自动释放方式 , 比如超时释放
③锁必须高可用 , 且持久化
④锁必须非阻塞且可重入
⑤避免死锁 , client最终一定可以获取锁 , 不存在异常情况锁无法释放的情况
⑥集群容错性 , 集群部分机器故障 , 锁操作仍然可用
5、配置中心
  • 静态配置 , 环境及软件启动配置
  • 动态配置 , 运行时动态调整的配置如流控开关 , 熔断开关等
6、异步通讯