0

0

云原生中的 Sidecar 模式是什么,如何应用于 .NET?

星降

星降

发布时间:2025-10-17 16:50:01

|

226人浏览过

|

来源于php中文网

原创

Sidecar 模式通过将辅助功能剥离到独立容器,使主应用专注业务逻辑。在 Kubernetes 中,Sidecar 与主容器共存于同一 Pod,共享网络和存储,实现日志收集、服务代理、配置同步等任务。以 .NET 应用为例,部署在 Istio 环境时无需修改代码,自动注入 Envoy Sidecar 实现 mTLS、服务发现、链路追踪等功能;也可自定义 Sidecar 同步 Consul 配置,提升可移植性与解耦程度,是云原生架构中职责分离与能力复用的典型实践。

云原生中的 sidecar 模式是什么,如何应用于 .net?

Sidecar 模式是云原生架构中一种常见的设计模式,它的核心思想是将应用的辅助功能(如日志收集、监控、网络通信、配置管理等)从主应用中剥离,交由一个与主应用容器紧密协作的独立进程或容器来处理。这个辅助容器就像摩托车旁的边车(Sidecar),与主应用容器部署在同一 Pod(Kubernetes 中)中,共享网络和存储资源,但职责分离。

Sidecar 模式的本质

在 Kubernetes 环境中,一个 Pod 可以包含多个容器。主应用容器负责业务逻辑,而 Sidecar 容器负责支撑性任务。两者通过 localhost 通信,共享生命周期和资源视图。

常见用途包括:

  • 服务代理:如 Istio 的 Envoy 代理,处理服务间通信、熔断、重试、加密(mTLS)等
  • 日志收集:Sidecar 容器读取主容器写入共享卷的日志文件并转发到集中式系统
  • 配置同步:监听配置中心变化并更新本地配置文件供主应用使用
  • 健康检查增强:提供更复杂的探活逻辑

在 .NET 应用中的典型应用场景

.NET 应用运行在 Kubernetes 中时,无需修改代码即可通过 Sidecar 获得分布式能力增强。

例如,使用 Istio 时:

  • 你的 ASP.NET Core Web API 服务只关注处理 HTTP 请求
  • Istio 自动注入 Envoy 作为 Sidecar 容器
  • 所有进出流量都经过 Envoy,实现服务发现、负载均衡、链路追踪、流量镜像等功能

这意味着你不需要在 .NET 项目中引入大量中间件或 SDK 来实现这些功能,降低了代码复杂度。

魔法映像企业网站管理系统
魔法映像企业网站管理系统

技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作

下载

实际操作示例:.NET + Istio Sidecar

假设你有一个基于 ASP.NET Core 的微服务,部署到启用了 Istio 的 Kubernetes 集群。

1. 构建镜像并打包为 Deployment
你的 Dockerfile 仅包含 .NET 应用本身:
FROM mcr.microsoft.com/dotnet/aspnet:8.0
COPY app /app
WORKDIR /app
ENTRYPOINT ["dotnet", "MyService.dll"]
2. 部署到 Istio 注入启用的命名空间
给命名空间打上标签:
kubectl label namespace default istio-injection=enabled
3. 应用部署后自动注入 Envoy Sidecar
当你部署 Deployment 后,Istio 会自动向 Pod 中注入 Envoy 容器。你可以通过以下命令查看:
kubectl get pod  -o jsonpath='{.spec.containers[*].name}'
输出会显示两个容器:你的 .NET 应用和 istio-proxy4. 验证功能
此时,即使你的 .NET 代码没有任何服务网格相关逻辑,也能享受以下能力:
  • 与其他服务的安全 mTLS 通信
  • 被纳入全局可观测体系(Prometheus + Grafana + Jaeger)
  • 支持灰度发布、流量切分等高级路由规则

自定义 Sidecar 的场景

除了使用服务网格提供的通用 Sidecar,你也可以为特定需求编写自定义 Sidecar。

例如,一个 .NET 应用需要实时从 Consul 获取配置:

  • 主容器运行 .NET 程序,定期读取本地文件 /config/appsettings.json
  • Sidecar 容器运行一个小脚本或 Go 程序,监听 Consul 变化并更新该文件
  • 两者共享一个 Volume

这样,.NET 应用完全无感知外部配置源,提升了可移植性和职责清晰度。

基本上就这些。Sidecar 模式让 .NET 微服务更专注于业务逻辑,把平台级能力交给外围组件处理,是云原生环境下解耦和复用的典范实践。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.10.07

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

213

2025.12.18

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

416

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

310

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

75

2025.09.10

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号