边车模式Sidecar是怎么产生的?边车模式的设计重点有哪些?边车模式适用的业务场景有哪些?服务网格Service Mesh是什么?

打卡Day25:今天学习了《54|管理设计篇之“边车模式”》和《55|管理设计篇之“服务网格”》,我的收获如下:

边车模式 Sidecar

来源于三轮摩托车,给摩托车加上边车来扩展现有服务和功能,做到控制和逻辑的分离。

如监视、日志、限流、熔断、服务注册、协议适配转换等控制面功能,由边车实现。

边车模式设计

  1. 通过sdk、lib和framework等软件包方式,在开发时与应用集成;
  2. 通过sidecar方式,在运维时与应用集成。

两种方式的最大区别是,软件包方式对应用有侵入,而sidecar方式没有。

边车设计的重点

  • 进程间通讯机制,不要侵入应用。如通过信号、共享内存,使用网络远程调用;
  • 统一服务协议。sidecar => service、sidecar => sidecar/service;
  • 使用docker容器技术降低运维复杂度;
  • 小心sidecar中包含通用功能的影响。如重试操作对非幂等接口可能不安全;
  • 考虑应用和sidecar的上下文传递机制。如最大重试次数、限流发生、远程服务不可用。

sidecar适用场景

  1. 老应用系统改造。
  2. 多语言分布式服务。
  3. 应用由不同的供应商提供。

服务网格 Service Mesh

CNCF(Cloud Native Computing Foundation,云原生计算基金会)目前主力推动的新一代的微服务架构。

Service Mesh特点

  • 基础设施
  • 轻量的服务通讯的网络代理
  • 对应用无侵入
  • 解耦和分离控制面

Service Mesh相关开源软件

  • Istio
  • Linkerd
  • Conduit

Service Mesh设计重点

Sidecar的组件不可用,就会导致整个架构出现致命的问题,所以一定要是高可靠的,或出现故障有workaround的方式(如部署集中式的sidecar作为本机的备份)。

不一定和Service一起部署,可以作为基础设施独立部署,成为一个PaaS平台。

可以考虑和Kubernetes密切结合。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/5909

https://time.geekbang.org/column/article/5920