K8s

Sidecar模式

2021-10-09  本文已影响0人  Go语言由浅入深

Sidecar模式:将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。此模式还允许应用程序由异构组件和技术实现。

为什么称为Sidecar模式,是因为它类似于连接在摩托车旁的边车。在该模式中,sidecar服务被附加到主应用程序中,并为应用程序提供其所支持的特性。sidecar也与主应用程序有相同的生命周期,与主应用程序一起创建和退出。sidecar模式有时被称为sidekick模式,它是一种分解模式。

背景和问题

应用程序和服务通常需要一些相关的基础功能,如监控、日志、配置和网络服务。这些外围功能可以作为独立的组件或服务实现。

如果将它们直接集成到应用程序中,则它们可以与应用程序在相同的进程中运行,从而有效地利用共享资源。然而,这也意味着它们之间没有很好地隔离,其中一个组件的中断可能会影响其他组件或整个应用程序。此外,它们通常需要使用与主应用程序相同的语言来实现。因此,组件和应用程序之间具有强相互依赖关系。

如果将应用程序分解为不同服务,则可以使用不同的语言和技术实现每个服务。虽然这提供了更多的灵活性,但这意味着每个组件都有自己的依赖项,并且需要特定于语言的库来访问底层平台与主应用程序共享的任何资源。此外,将这些特性部署为独立的服务可能会增加应用程序的延迟。管理这些特定于语言的接口的代码和依赖关系也会增加相当大的复杂性,特别是对于服务托管、部署和管理。

解决方案

将这些基础服务和应用程序绑定在一起,但使用独立的进程或容器部署,这能为跨语言的平台服务提供同构接口。



sidecar服务不一定是应用程序的一部分,但它会连接到应用程序。应用程序部署到哪里,它就部署到哪里。Sidecars是支持与主应用程序一起部署的流程或服务。在摩托车上,边车与一辆摩托车相连,每辆摩托车都可以有自己的边车。以同样的方式,sidecar服务和其主应用程序具有相同的生命周期。对于应用程序的每个实例,sidecar的一个实例被部署和托管在它旁边。
sidecar模式的优点:

sidecar模式经常与容器一起使用,并被称为sidecar容器或sidekick容器。

问题及思考

什么时候使用sidecar模式

不适合使用sidecar情况:

案例

sidecar模式适用于许多场景。一些常见的例子:

sidecar模式随着容器的应用越来越广泛,很多流行框架都基于该模式来实现例如dapr,以及其他基于kubernetes构建的应用。

上一篇 下一篇

猜你喜欢

热点阅读