微服务模式:Sidecar

【架构师之路】微服务架构设计中的边车(Sidecar)模式 Sidecar模式是一种架构设计模式,通常用于微服务架构中。它通过将辅助功能与主应用程序分离,使得主服务可以专注于其核心业务逻辑。Sidecar模式指的是在微服务架构中,将一些常见的功能(如日志记录、监控、服务发现等)封装在一个独立的服务或代理中(例如 Kubernetes 中的 Pod),这个服务与主服务并行运行,形成“侧车”结构。如下图所示,sidecar 模式允许您在应用程序旁边添加更多功能,而无需额外第三方组件配置或修改应用程序代码。 阅读详情

 

合理设计的微服务应遵循单一职责原则,因此分离应该被架构中的其他服务重用的通用功能很重要。Sidecar模式提倡通过识别每个服务中的通用功能来增强模块性,将它们组合到库中,或将它们移到单独的服务中。

顾名思义,Sidecar模式提倡分离横切关注点(cross-cutting concern),将横切关注点从实际服务中移除,推送到单独的模块、库或服务,然后这些功能可被架构中的其他服务重用。

本文讨论了微服务架构中哪种功能可以作为候选功能或可以被视为Sidecar,以及Sidecar的实现方法和优缺点。

Sidecar候选功能

面向切面编程带来了分离横切关注点这个值得关注的概念;简而言之,从代码中移除通用功能,只关注业务逻辑,这就是在服务内的每个方法/函数中重复相同代码的意义所在。

Sidecar模式本质上相似;唯一的区别是,Sidecar模式从微服务方面进行对话。将代码的通用部分抽象出来变得更重要了。

一些最重要的候选功能包括如下:

•日志聚合

•安全

•错误处理,并在发布错误日志或将错误事件推送到Kafka主题或监控队列之后采取必要的动作。

•项目中的通用功能类似于实体(数据库模型)或其他服务也使用的特定业务逻辑。

•其他服务正常运行所需要的服务或数据库配置、Kafka配置、队列配置等方面的配置更改。

•缓存需求(如果有这种需求的话)。

所有这些通用功能/Sidecar可以附加到服务上,就像边车附加到摩托车上那样。

优缺点

•优点

实施这种模式的最大优点是,所有通用功能都可供架构中的所有服务使用,它通过将通用功能抽象到不同的层,大大降低了架构的复杂性。

微服务本质上是多语言的,这些通用功能可以使用最适合该特定操作的技术或编程语言来开发。

模式隐式避免了代码重复,因为我们不需要在每个服务中编写这种重复的代码。

服务和Sidecar候选功能之间是松散耦合的关系。

•缺点

Sidecars具有单独的可维护性,这可能是库或单独的服务。如果我们在应用程序中有大量的Sidecar,那么它会影响服务的性能。需要确定Sidecar功能是否需要独立于主服务进行扩展;如果是,需要将这些Sidecar作为单独的服务来托管。

实施方法

•将Sidecars保存在单独的库中

最常见的方法是将Sidecars保存在单独的库中,并将这些库单独导入到微服务中,比如将数据库模型保存在单独的库中,然后通过该库将这些模型导入到所有微服务,有各种构建工具(比如Maven、Gradle或SBT等)可用用于配置。

这种方法有以下缺点:

Sidecar过载:设想一个项目中维护多个Sidecar,比如架构中存在的日志、缓存、配置和安全都可能会在所有微服务中带来Sidecar过载的问题。

版本不一致:维护每个库的正确版本对于开发人员来说将是一场噩梦,想象一下cache-lib Sidecar拥有服务A在使用的最新版本1.1,但我们忘了提及仍在使用cache-lib版本1.0的服务B的正确版本,这会在应用程序中产生明显的不一致,而这种不一致很难调试和识别。

解决这个问题的一种方法是创建一个含有所有这些Sidecar库的Uber库,然后我们需要做的就是在微服务中维护Uber库的正确版本,我们需要确保Uber库经过更新,使用最新版本的Sidecars,比如说cache-lib 1.1应该在Uber库中可用。

•将Sidecars保留为单独的服务

另一种方法是在单独的服务中各自维护Sidecar。但是为每个操作调用服务调用会带来严重的性能问题,但理想情况下,我们通常不为日志或通用功能创建服务。安全或缓存可能是理想的独立的服务候选功能。

这种方法的最大缺点是,始终需要优化服务间通信以获得更好的性能。在这种情况下,它就像架构中的另一个微服务,总是需要扩展,监控哪种有悖Sidecar的用途。

结论

Sidecar模式是一种非常有用且简洁的模式,它使横切关注点远离实际的服务实现。合理设计的微服务应该始终遵循单一职责原则(SRP),而Sidecar模式通过远离重复功能来补充SRP原则。每个设计原则都有优缺点,在库中维护Sidecar以及保留最重要功能的混合方法应该在单独的服务中加以维护。 

微服务设计模式-边车模式(Sidecar Pattern) 边车模式(Sidecar Pattern)是一种将应用程序的功能分离到一个独立的进程或容器中的设计模式。这个独立的进程或容器被称为边车(Sidecar),它与主应用程序(Main Application)一起运行,并为其提供额外的功能和服务。边车模式可以看作是一种插件式的架构,它允许开发人员在不修改主应用程序代码的情况下,为其添加新的功能,帮助我们构建灵活、可维护的系统。 阅读详情

相关推荐

Java微服务Sidecar落地实践:透明流量接管与治理改造全记录

微服务架构在拆分服务后,往往面临基础设施能力难以统一的问题:传统SDK集成方式易引发版本冲突、代码侵入、异构重复实现等痛点。Sidecar作为一种伴生进程模型,将流量转发、健康检查、服务注册等横切能力从业务进程中剥离,实现基础设施与业务逻辑的物理隔离,成为容器化与微服务治理中的热门方案。其透明流量接管机制让Java老服务无需改动监听端口即可接入统一治理,广泛应用于注册发现、限流降级、指标监控等场景。本文基于Java业务集群改造实践,完整记录Sidecar的安装配置、流量注入、容器与物理机部署、线上排障及调优

weixin_33824385的博客 224

k8s部署服务接入skywalking之java agent使用(基于sideCar模式)

sideCar模式实现简单来说就是在同一个pod中,启动两个容器,容器A为正常的服务容器,容器B为辅助容器。同时让两个容器共享存储。辅助容器在启动后将前提条件准备好, 例如把服务容器需要使用到的agent包,提前放到共享目录当中,等到服务容器启动时就能直接使用共享目录中的agent包了以上只是sideCar模式的其中一种用法。

qq_44209563的博客 2880

Sidecar模式:下一代微服务架构的关键

Sidecar设计模式正在收到越来越多的关注和采用。作为Service Mesh的重要要素,Sidecar模式对于构建高度高度可伸缩、有弹性、安全且可便于监控的微服务架构系统至关重要。而Service Mesh也已经被证明,正在改变企业IT的“游戏规则”,它降低了与微服务架构相关的复杂性,并提供了负载平衡、服务发现、流量管理、电路中断、遥测、故障注入等功能特性。 什么是Sidecar模式? ...

好雨云帮 优快云 博客 1万+

微服务中的Sidecar模式

sidecar是服务网络架构的产物。Sidecar,全称 Sidecar proxy,为在应用程序旁运行的单独的进程,它可以为应用程序添加许多功能,而无需在应用程序中添加额外的第三方组件,或修改应用程序的代码或配置。将应用程序的功能划分为单独的进程运行在同一个最小调度单元中(例如 Kubernetes 中的 Pod)可以被视为 sidecar 模式。在软件架构中, Sidecar 连接到父应用并且为其添加扩展或者增强功能。Sidecar 应用与主应用程序松散耦合。

weixin_45770491的博客 3115

微服务Sidecar模式实战:流量拦截、熔断限流与避坑指南

在微服务架构中,横切关注点如服务发现、熔断限流、链路追踪等常导致代码重复与维护困难。Sidecar模式通过将基础设施能力剥离到独立代理进程,与业务服务共享网络命名空间,实现流量拦截与策略执行。其核心原理基于iptables重定向和xDS动态配置,技术价值在于语言无关、零网络开销和生命周期绑定。典型应用场景包括Kubernetes环境下的服务网格实现,以及需要统一可观测性和流量治理的分布式系统。本文深入拆解Sidecar的流量劫持、熔断配置与实操避坑经验,帮助团队在微服务架构中落地这一模式。

weixin_30074763的博客 312

C++cgal库配置+VS2017

Cgal几何图形库在VS2017上的下载、安装与配置。想要一口气下载完所有安装配件的,可以去文章末尾的链接。httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。

dsn3S的博客 1491

Sidecar模式终极指南:微服务架构的黄金搭档

在当今的微服务架构中,**Sidecar模式**已经成为解决服务治理、可观测性和安全性的**终极解决方案**。这个巧妙的设计模式通过为每个服务实例附加一个辅助容器,实现了功能与业务逻辑的完美分离,让开发者能够专注于核心业务开发。 ## 什么是Sidecar模式? **Sidecar模式**是一种分布式系统设计模式,它的核心思想是为每个主服务实例配备一个辅助容器,就像摩托车旁边的边车一样。这个边

gitblog_00844的博客 1038

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 621

sidecar模式:下一代微服务架构的关键

Sidecar设计模式正在收到越来越多的关注和采用。作为Service Mesh的重要要素,Sidecar模式对于构建高度高度可伸缩、有弹性、安全且可便于监控的微服务架构系统至关重要。而Service Mesh也已经被证明,正在改变企业IT的“游戏规则”,它降低了与微服务架构相关的复杂性,并提供了负载平衡、服务发现、流量管理、电路中断、遥测、故障注入等功能特性。 什么是Sidecar模式? Sidecar模式是一种将应用功能从应用本身剥离出来作为单独进程的方式。该模式允许我们向应用无侵入添加多种功能,避

AlbenXie的博客 926

深入探索 ClickHouse:性能优化之道

在大数据处理的广袤天地里,ClickHouse 宛如一颗璀璨的明星,以其卓越的性能为海量数据的存储与查询提供了强大助力。但要想让 ClickHouse 发挥出极致效能,性能优化至关重要。今天,就让我们一同深入探寻 ClickHouse 的性能优化之路。

arnold66的专栏 1549

AI测试:手把手教你用AI创建流程图「喂饭教程」

本文介绍了如何利用next-ai-draw-io开源项目,通过AI快速生成专业流程图,提升测试工作效率。该工具支持自然语言交互,兼容多种AI模型(如OpenAI、Claude等),并集成draw.io图表引擎,实现实时编辑。

blues_C的博客 762

微服务架构模式之 sidecar 模式(上):原理概述

问题引入 应用程序和服务通常需要一组相关的外围功能,例如监控、日志记录、配置和网络服务等。 对于单应用程序程序而言,这些外围功能往往紧密集成在主应用程序中,好处是可以在运行主应用程序的同一个进程中共享内存资源,不过,这也意味着无法对它们进行有效的隔离,当其中一个组件发生故障,可能会影响到其他组件甚至整个应用程序的正常运行,此外,这样做的另一个局限是需要使用与主应用程序相同的语言来开发这些外围组件。因此,外围组件和主应用程序之间保持着紧密的耦合关系。 如果单应用程序被分解为不同的微服务,则可以使用不同的

AlbenXie的博客 3555

2025年下半年网络工程师案例分析真题及答案解析

2025年下半年网络工程师案例分析真题及答案解析

鹿鸣天涯 1096

使用Envoy Sidecar代理的微服务模式:系列

过去,我曾写过一篇关于“我对'2.0'微服务堆栈感到兴奋的博客”以及其中的一些内容。 我什至试图阐明为什么服务交互/对话和网络是实际微服务实现中最难的部分。 在本篇文章(以及后续系列文章)中,我想开始更进一步。 随着最近Istio Mesh项目的公告,包括Red Hat对项目的支持 ,我想在接下来的博客中深入了解该技术( Envoy Proxy , Istio Mesh等),并解释其功能...

danpu0978的博客 553

Coze实战:解锁多Bot协同与条件分支工作流的奥秘

本文详细介绍了在字节跳动Coze平台实现多Bot协同与条件分支工作流的方法。首先阐述了Coze平台的功能优势,包括丰富的插件、知识库和工作流功能。随后分步骤讲解了多Bot协同的实现:从准备工作、创建Bot到协同配置,并提供了电商客服的实例演示。在条件分支工作流部分,详细说明了条件节点的作用类型、条件设定方法以及具体配置操作,强调测试优化的重要性。最后通过电商平台综合案例,展示了多Bot协同与条件分支的实际应用效果,并针对常见问题提供解决方案。文章为开发者在Coze平台上构建智能应用提供了实用指导,有助于提升

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 452

Transformer实战(1)——词嵌入技术详解

词嵌入的核心思想是,通过将词语表示为稠密的向量,使得计算机可以更有效地处理和理解文本中的语义关系。在本节中,我们学习了单词分布式表示的概念及其实现,包括静态嵌入和动态嵌入,实现了 Word2Vec 和 GloVe 模型,并介绍了如何使用 Gensim API 探索嵌入空间。

盼小辉丶的博客 1万+

envoy_使用Envoy Sidecar代理的微服务模式:系列

envoy 过去,我曾写过“我为'2.0'微服务堆栈感到兴奋”以及其中的某些内容。 我什至试图阐明为什么服务交互/对话和网络是实际微服务实现中最难的部分。 在本篇文章(以及后续系列文章)中,我想开始更进一步。 随着最近Istio Mesh项目的公告,包括Red Hat对项目的支持 ,我想在接下来的几篇博客中深入了解该技术( Envoy Proxy , Istio Mesh等),并说明其功能...

danpu0978的博客 419

SAP S/4HANA 数据归档的实施方法

实施 SAP S/4HANA 数据归档是一个系统的过程,涉及到策略的定义、技术的执行以及后续的维护和验证。正确的归档策略不仅能优化系统性能,还能帮助企业降低运营成本,确保数据安全,并符合相关法律法规的要求。通过以上案例,我们可以看到不同行业如何依据自己的业务需求和法规要求,利用 SAP S/4HANA 的强大功能来实现数据归档的目标。这些实践证明了数据归档在现代企业信息管理中的重要地位和作用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 891

告别微服务部署噩梦:Dapr Sidecar模式如何拯救你的分布式架构

你是否还在为微服务部署的复杂性而头疼?服务网格配置繁琐、多语言支持困难、分布式追踪难以实现——这些问题是否让你的团队效率低下?本文将深入解析Dapr(分布式应用运行时)的Sidecar架构与服务部署模式,带你一步步掌握如何用最少的代码实现企业级微服务部署,提升开发效率20-40%。读完本文,你将清晰了解Sidecar注入原理、多环境部署策略以及实际生产案例中的最佳实践。 ## Dapr架构核心:...

gitblog_00141的博客 605

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

微服务边车模式深度解析:赋能云原生应用的终极指南(自己搞一个简单SideCar?)

通过使用Sidecar模式,我们能够实现对微服务架构的强化,也就是关注点分离,让你专注于开车,开好车,开快车。它提供了一种有效的方式去分摊微服务的辅助功能(如日志记录、监控、配置管理、网络通信等),而无需改动微服务的核心业务逻辑。这带来了显著的优点,包括简化开发复杂度、增强服务的可维护性和可伸缩性,以及提供了横切关注点(cross-cutting concerns)的统一管理。

fofcn的专栏 4982

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

微服务架构模式之 sidecar 模式(下):应用实例

这篇分享学院君主要通过示例代码的方式演示在 PHP 中基于 Micro Proxy 实现微服务的注册和引用,并使其能够与现有的其它语言实现的微服务(如 Go、Python、Java 等)可以相互通信。 整体思路 整体实现思路如下: 我将基于 PHP 的 Swoole 扩展来实现一个 HTTP 服务器提供对外的微服务接口,在 HTTP 服务器启动时,将该服务节点注册到 Go Micro 的注册中心(Consul),接下来,当用户通过 HTTP 发起远程服务请求时(通过 Micro Proxy),

AlbenXie的博客 941

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深入理解Sidecar模式:微服务治理的云原生实践

在微服务架构中,限流、鉴权、日志等基础设施能力往往与业务逻辑耦合,导致升级维护成本高昂。Sidecar模式通过将辅助功能放入与业务进程同生命周期的旁路容器中,并与主容器共享网络命名空间,实现了基础设施与业务的彻底解耦。这种模式具备语言无关、独立升级、故障隔离等技术优势,已成为服务网格、流量治理、可观测性等云原生场景的核心基石。无论是Kubernetes上的应用部署,还是大规模微服务改造引入服务网格,Sidecar模式都能有效解决跨服务横切能力统一治理的难题。本文从一次完整请求链路讲起,对比公共SDK的取舍,

weixin_32612263的博客 288
上一篇: HTTP/3正式发布,深入理解HTTP/3协议
下一篇: 一种可灰度的接口迁移方案
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值