sidecar模式

Sidecar模式是什么

Sidecar模式是一种单节点、多容器的应用设计形式。Sidecar主张以额外的容器来扩展或增强主容器,而这个额外的容器被称为Sidecar容器

sidecar 模式也符合当前微服务的以下特点:

  • 隔离(separation of concerns):让每个容器环境不需要相互依赖而独立运行,也就意味着sidecar程序可以和任何语言的应用服务一起运行。

  • 单一责任原则(single responsibility principle),各个容器负责自己的处理逻辑,各司其职

  • 内聚性/可重用性(Cohesiveness/Reusability)

sidecar模式原则

  • 考虑部署服务、进程或容器时所用的部署和打包格式。容器特别适合用于sidecar模式。

  • 在设计sidecar服务时,请慎重决定进程间通信机制。除非达不到性能要求,否则请尽量使用不区分语言或框架的技术。

  • 在将功能放入sidecar之前,请考虑该功能是作为独立的服务还是更传统的守护程序运行更有利。

此外,请考虑是否能够以库的形式或使用传统扩展机制实现功能.特定于语言的库可能提供更深度的集成和更少的网络开销。

什么时候适合使用sidecar

在以下情况下使用此模式:

  • 主应用程序使用一组异类语言和框架.使用不同框架以不同语言编写的应用程序可以使用sidecar服务中的某个组件。

  • 某个组件由远程团队或不同的组织拥有。

  • 某个组件或功能必须共置在应用程序所在的同一台主机上

  • 希望某个服务与主应用程序具有相同的整体生命周期,但同时又能独立更新该服务。

  • 需要精细控制特定资源或组件的资源限制.例如,想要限制特定组件使用的内存量.可将组件部署为sidecar,然后独立于主应用程序管理内存用量。

此模式可能不适用于以下情况:

  • 当进程间通信需要优化时.父应用程序与sidecar服务之间的通信会产生一定的开销,执行调用时存在明显的延迟。频繁通信的接口可能无法接受这种弊端。

  • 在某些小型应用程序中,为每个实例部署sidecar服务所产生的资源开销会抵消隔离所带来的优势。

  • 当服务需要以不同于或独立于主应用程序的方式缩放时.如果存在这种情况,将功能部署为独立的服务可能更好。

Last updated