边车模式也叫搭档模式。
边车模式的设计思想是将控制和逻辑分离,常用于分布式架构中的逻辑和控制分离设计。边车来实现这些与业务逻辑没有关系的控制功能。
以边车的方式,对应用服务没有侵入性,并且不用受到应用服务的语言与技术的限制,可以做到控制和逻辑的分开升级和部署。
很多系统是用C语言写的,因为没有分布式系统,所以边车的方式就可以进行低风险改造。
一、边车的注意事项
边车模式着重需要关注控制和逻辑的分离、服务调用中上下文的问题。
1、进程间通讯机制是这个设计模式的重点,千万不要使用任何对应用服务有侵入的方式
2、服务协议方面,也请使用标准统一的方式。这里有两层协议,一个是 Sidecar 到 service 的内部协议,另一个是 Sidecar 到远端 Sidecar 或 service 的外部协议。对于内部协议,需要尽量靠近和兼容本地 service 的协议;对于外部协议,需要尽量使用更为开放更为标准的协议。但无论是哪种,都不应该使用与语言相关的协议
3、使用这样的模式,需要在服务的整体打包、构建、部署、管控、运维上设计好。使用 Docker 容器方面的技术可以帮助你全面降低复杂度
4、Sidecar 中所实现的功能应该是控制面上的东西,而不是业务逻辑上的东西,所以请尽量不要把业务逻辑设计到 Sidecar 中
5、小心在 Sidecar 中包含通用功能可能带来的影响。例如,重试操作,这可能不安全,除非所有操作都是幂等的。
6、另外,我们还要考虑允许应用服务和 Sidecar 的上下文传递的机制。 例如,包含 HTTP 请求标头以选择退出重试,或指定最大重试次数等等这样的信息交互。或是 Sidecar 告诉应用服务限流发生,或是远程服务不可用等信息,这样可以让应用服务和 Sidecar 配合得更好
二、边车模式使用场景
1.对老应用系统的改造和扩展
2.对多种语言混合出来的分布式服务系统进行管理和扩展
3.应用服务由不同的供应商提供
4.把控制和逻辑分离,标准化控制面上的动作和技术,从而提高系统整体的稳定性和可用性。也有利于分工。