Sidecar 模式
Sidecar 模式
问题引入
应用程序和服务通常需要一组相关的外围功能,例如监控、日志记录、配置和网络服务等。
对于单应用程序程序而言,这些外围功能往往紧密集成在主应用程序中,好处是可以在运行主应用程序的同一个进程中共享内存资源,不过,这也意味着无法对它们进行有效的隔离,当其中一个组件发生故障,可能会影响到其他组件甚至整个应用程序的正常运行,此外,这样做的另一个局限是需要使用与主应用程序相同的语言来开发这些外围组件。因此,外围组件和主应用程序之间保持着紧密的耦合关系。
如果单应用程序被分解为不同的微服务,则可以使用不同的语言和技术构建每个微服务,这样做提高了系统的灵活性,但同时也意味着外围组件与微服务之间的交互变得复杂,需要基于构建微服务的特定语言实现与微服务的资源共享以及对底层平台的访问,此外,将这些外围功能部署为单独的服务可能会增大应用程序的延迟。因此,管理这些特定于语言的接口代码和依赖关系会显著增加系统的复杂性。
解决方案
Sidecar 模式是一种将应用功能从应用本身剥离出来作为单独进程的方式,该模式允许我们向应用无侵入添加多种功能,避免了为满足第三方组件需求而向应用添加额外的配置代码。
就像边车加装在摩托车上一样,在软件架构中,sidecar附加到主应用,或者叫父应用上,以扩展/增强功能特性,同时Sidecar与主应用是松耦 合的。