赞
踩
sidecar是服务网络架构的产物。
Sidecar,全称 Sidecar proxy,为在应用程序旁运行的单独的进程,它可以为应用程序添加许多功能,而无需在应用程序中添加额外的第三方组件,或修改应用程序的代码或配置。将应用程序的功能划分为单独的进程运行在同一个最小调度单元中(例如 Kubernetes 中的 Pod)可以被视为 sidecar 模式。在软件架构中, Sidecar 连接到父应用并且为其添加扩展或者增强功能。Sidecar 应用与主应用程序松散耦合。它可以屏蔽不同编程语言的差异,统一实现微服务的可观察性、监控、日志记录、配置、断路器等功能。
下图为异构服务通过sidecar接入注册中心。异构服务本身可能为非Java或传统应用,接入困难。
来自单个服务的所有传入和传出网络流量都流经 Sidecar 代理。因此,Sidecar 能够管理微服务之间的流量,收集遥测数据并实施相关策略。从某种意义上说,该服务不了解整个网络,只知道附加的 Sidecar 代理。
异构服务本身不会和注册中心有请求调用,而是通过sidecar代理注册接入注册中心,获得服务注册、发现等功能。
异构服务本身不和注册中心有直接联系,所以异构服务的调用也需要走sidecar,通过sidecar进行服务发现调用,sidecar收到异构服务的请求后通过服务发现和负载均衡选中目标服务实例,转发请求至目标服务。
如果异构服务为服务提供方(会被其它服务调用),服务发起方会先注册中心发现sidecar代理注册的实例信息,将请求发送到Sidecar,Sidecar将请求转发给异构服务完成调用请求。
K8s 的pod,Istio,MOSN(兼容Istio,使用Go语言)
假设服务端运行在 1.2.3.4 这台机器上,监听 20880 端口
经过上述的服务发现过程,流量转发过程就显得非常自然了:
使用 sidecar 模式部署服务网格时,无需在节点上运行代理,但是集群中将运行多个相同的 sidecar 副本。在 sidecar 部署方式中,每个应用的容器旁都会部署一个伴生容器,这个容器称之为 sidecar 容器。Sidecar 接管进出应用容器的所有流量。
在 Kubernetes 的 Pod 中,在原有的应用容器旁边注入一个 Sidecar 容器,两个容器共享存储、网络等资源,可以广义的将这个包含了 sidecar 容器的 Pod 理解为一台主机,两个容器共享主机资
因其独特的部署结构,使得 sidecar 模式具有以下优势:
Sidecar和AOP(面向切片编程,Aspect-Oriented Programming)是两种不同的概念,主要在软件架构和编程范式上有不同的应用,不过它们在某些场景下可以有共同的或类似的目标,例如解耦关注点和增强功能的实现。
关系与区别:
术语表 · Kubernetes 中文指南——云原生应用架构实战手册 (jimmysong.io)
Sidecar 模式 · Kubernetes 中文指南——云原生应用架构实战手册 (jimmysong.io)
什么是 Sidecar[通俗易懂]-腾讯云开发者社区-腾讯云 (tencent.com)
Sidecar Design Pattern in your Microservices Ecosystem – samirbehara
微服务中的 Sidecar 设计模式解析 | 云原生社区(中国) (cloudnative.to).
支持几十种业务场景,字节跳动大规模 Sidecar 运维管理实践-腾讯云开发者社区-腾讯云 (tencent.com)
Sidecar 模式 - failymao - 博客园 (cnblogs.com)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。