边车模式Sidecar是怎么产生的?边车模式的设计重点有哪些?边车模式适用的业务场景有哪些?服务网格Service Mesh是什么?
打卡Day25:今天学习了《54|管理设计篇之“边车模式”》和《55|管理设计篇之“服务网格”》,我的收获如下:
边车模式 Sidecar
来源于三轮摩托车,给摩托车加上边车来扩展现有服务和功能,做到控制和逻辑的分离。
如监视、日志、限流、熔断、服务注册、协议适配转换等控制面功能,由边车实现。
边车模式设计
- 通过sdk、lib和framework等软件包方式,在开发时与应用集成;
- 通过sidecar方式,在运维时与应用集成。
两种方式的最大区别是,软件包方式对应用有侵入,而sidecar方式没有。
边车设计的重点
- 进程间通讯机制,不要侵入应用。如通过信号、共享内存,使用网络远程调用;
- 统一服务协议。sidecar => service、sidecar => sidecar/service;
- 使用docker容器技术降低运维复杂度;
- 小心sidecar中包含通用功能的影响。如重试操作对非幂等接口可能不安全;
- 考虑应用和sidecar的上下文传递机制。如最大重试次数、限流发生、远程服务不可用。
sidecar适用场景
- 老应用系统改造。
- 多语言分布式服务。
- 应用由不同的供应商提供。
服务网格 Service Mesh
CNCF(Cloud Native Computing Foundation,云原生计算基金会)目前主力推动的新一代的微服务架构。
Service Mesh特点
- 基础设施
- 轻量的服务通讯的网络代理
- 对应用无侵入
- 解耦和分离控制面
Service Mesh相关开源软件
- Istio
- Linkerd
- Conduit
Service Mesh设计重点
Sidecar的组件不可用,就会导致整个架构出现致命的问题,所以一定要是高可靠的,或出现故障有workaround的方式(如部署集中式的sidecar作为本机的备份)。
不一定和Service一起部署,可以作为基础设施独立部署,成为一个PaaS平台。
可以考虑和Kubernetes密切结合。