Sidecar 模式
2020-12-08 本文已影响0人
quanCN
什么是 Sidecar 模式
将应用程序的组件部署到单独的进程或容器中以提供隔离和封装,这种模式被视为
Sidecar
模式。
Sidecar
设计模式允许你为应用程序添加许多功能,而无需额外第三方组件的配置和代码。Sidecar
还与父应用程序共享相同的生命周期,并与父应用程序一起创建和退出。
微服务生态系统中的Sidecar设计模式
sidecar
注
:Sidecar:(摩托车的)跨斗,边车
Sidecar
服务不一定是应用程序的一部分,而是与之相关联。它适用于父应用程序的任何位置,与父应用完全松耦合。Sidecar支持与主应用程序一起部署的进程或服务。这就像是如图所示的边三轮摩托车那样,将边车安装在一辆摩托车上,就变成了边三轮摩托车。每辆边三轮摩托车都有自己的边车。类似同样的方式,边车服务共享其父应用程序的主机。对于应用程序的每个实例,边车的实例被部署并与其一起托管。
使用Sidecar
模式的优势
- 抽象出与功能相关的共同基础设施到一个不同层,降低了微服务代码的复杂度
- 辅助工具在运行时环境和编程语言方面与其主应用程序无关,因此无需为每种语言开发一个辅助工具
- Sidecar靠近主应用程序,因此它们之间的通信没有明显的延迟
- 边车可以访问与主应用程序相同的资源
注
:Sidecar
模式通常与容器一起使用,称为Sidecar
容器
使用场景
- 主应用程序使用不同种类的语言和框架。位于sidecar服务中的组件可由使用不同框架以不同语言编写的应用程序使用
- 组件由远程团队或其他组织拥有
- 组件或功能必须与应用程序位于同一主机上
- 需要与主应用程序共享整个生命周期但可以独立更新的服务
- 需要对特定资源或组件的资源限制进行细粒度的控制。例如,您可能想限制特定组件使用的内存量。您可以将组件部署为辅助工具,并独立于主应用程序管理内存使用情况
Sidecar
模式工作流程
Sidecar
是容器应用模式的一种,也是在Service Mesh
中发扬光大的一种模式,服务网格层可以存在于与应用程序一起运行的Sidecar
容器中。每个应用程序旁边都附有相同Sidecar
的副本。
来自单个服务的所有传入和传出网络流量都流经Sidecar
代理。 因此,Sidecar
能够管理微服务之间的流量,收集遥测数据并实施相关策略。从某种意义上说,该服务不了解整个网络,只知道附加的Sidecar
代理。这实际上就是Sidecar
模式如何工作的本质——将网络依赖性抽象为 Sidecar
。
在服务网格中有数据平面和控制平面的概念:
- 数据平面
数据平面的职责是处理网格内部服务之间的通信,并负责服务发现、负载均衡、流量管理、健康检查等功能 - 控制平面
控制平面的职责是管理和配置 Sidecar 代理以实施策略并收集遥测