Istio 项目会往用户的 Pod 里注入 Envoy 容器,用来代理 Pod 的进出流量,这是什么设计模式?

news/2024/9/22 14:28:19/

Istio 项目会往用户的 Pod 里注入 Envoy 容器,用来代理 Pod 的进出流量,这是什么设计模式
A. 装饰器
B. sidecar
C. 工厂模式
D. 单例

选择B
‌Sidecar模式是一种设计模式,它将应用程序的一部分功能作为单独的进程实现,与主应用程序分离。这种模式通过将公共基础设施相关功能抽象到不同的层,降低了微服务的代码复杂性,实现了多个应用的公共部分与每个应用的自有部分的解耦。Sidecar通常与主应用程序共享相同的生命周期,一起创建和退出,它可以在不修改主应用程序代码的情况下添加多种功能,如负载平衡、服务注册、服务发现、流量管理等。此外,Sidecar模式在微服务架构中特别重要,因为它有助于构建高度可伸缩、安全且便于监控的系统

微服务边车(sidecar)模式
“Sidecar 模式” 是一种微服务架构中常见的模式,它指的是将辅助性质的服务(通常被称为 sidecar)与主要的服务实例部署在一起,以提供一些额外的功能、能力或支持。

在微服务的架构中,一个主要的服务实例可能只负责核心业务逻辑,而与之关联的 sidecar 则负责提供一些辅助功能,例如日志记录、监控、安全性、通信、或其他横切关注点。Sidecar 与主服务实例协同工作,使得主服务更专注于核心功能,同时 sidecar 提供了一种可插拔的方式来添加或修改服务的功能。

以下是 Sidecar 模式的一些特点和优势:

解耦功能: Sidecar 模式有助于将辅助功能与主服务解耦,使得主服务更加单一职责,便于维护和升级。
可插拔性: Sidecar 可以被添加或替换,而无需修改主服务实例的代码。这使得系统更加灵活,能够动态地调整其功能。
横切关注点的处理: Sidecar 可以用于处理横切关注点,如安全性、监控、日志记录等,而不会对主服务的核心逻辑产生直接影响。
统一管理: Sidecar 可以作为一个独立的进程或容器运行,并通过相同的编排和管理工具进行管理,从而简化了整个系统的部署和运维。
透明性: 对于主服务而言,它可能无需关心 Sidecar 的存在,因为 Sidecar 通常通过本地主机或网络与主服务进行通信。
复用和共享: 多个服务实例可以共享同一个 Sidecar 实例,提高了资源的利用率,并减少了冗余的功能组件。
在容器编排系统(如 Kubernetes)中,Sidecar 模式通常通过共享同一 Pod 来实现,其中主服务和 Sidecar 共享相同的网络命名空间和存储卷。这种方式使得它们能够更加紧密地协同工作。

总体而言,Sidecar 模式是微服务架构中的一种灵活而强大的模式,使得系统更容易扩展、维护和管理。

Sidecar有哪些实现
Sidecar 模式的实现通常涉及使用特定的技术或工具,这些工具可以作为辅助性质的服务与主服务实例一起部署。以下是一些常见的 Sidecar 模式实现:

Istio:
Istio 是一个服务网格框架,它通过在应用程序的每个服务实例旁边部署一个 Envoy Sidecar 来实现。Envoy 是一个高性能的代理和通信总线,负责处理服务之间的网络通信、负载均衡、故障恢复等任务。
Linkerd:
Linkerd 是另一个服务网格实现,通过在每个服务实例旁边部署一个代理(Linkerd Proxy)来实现 Sidecar 模式。Linkerd 提供了负载均衡、故障注入、监控和可观察性等功能。
Consul Connect:
Consul Connect 是 HashiCorp 公司的 Consul 服务发现和配置管理工具的一部分。它通过在每个服务实例旁边运行一个代理(sidecar)来提供安全的服务到服务通信。
NGINX:
NGINX 是一种高性能的反向代理服务器,也可以作为 Sidecar 部署在每个服务实例旁边。通过配置 NGINX 作为反向代理,可以实现负载均衡、安全性和其他网络功能。
Envoy Proxy:
Envoy 是一个开源的边缘和服务代理,它被广泛用于服务网格和 Sidecar 模式的实现。多个服务网格项目,包括 Istio 和 Maesh,使用 Envoy 作为其 Sidecar 实现。
Kuma:
Kuma 是一个用于连接、安全和监控微服务的开源服务网格。它支持 Sidecar 模式,其中每个微服务都有一个 Kuma Sidecar 与之关联,处理服务之间的通信。
这些工具和框架提供了在微服务架构中实现 Sidecar 模式的基础设施,并为开发者提供了一种将辅助功能添加到服务实例中的方式。


http://www.ppmy.cn/news/1509172.html

相关文章

Anaconda入门详解(超级详细)

Anaconda入门详解,超级详细 1.Anaconda安装下载地址添加环境变量conda源修改2.Conda的命令更新conda查询某个命令的帮助3.虚拟环境的管理3.1创建虚拟环境方法1:默认创建方式(==不推荐==)方法2:指定虚拟环境目录3.2查看虚拟环境3.3激活虚拟环境3.4删除虚拟环境4.包的管理4.…

【practise】栈的压入和弹出序列

关于我: 睡觉待开机:个人主页 个人专栏: 《优选算法》《C语言》《CPP》 生活的理想,就是为了理想的生活! 作者留言 PDF版免费提供:倘若有需要,想拿我写的博客进行学习和交流,可以私信我将免费提供PDF版。…

WookTeam searchinfo SQL注入漏洞复现

0x01 产品简介 WookTeam是一款轻量级的在线团队协作工具,提供各类文档工具、在线思维导图、在线流程图、项目管理、任务分发,知识库管理等工具。 0x02 漏洞概述 WookTeam /api/users/searchinfo 接口存在SQL注入漏洞,未经身份验证的恶意攻击者利用 SQL 注入漏洞获取数据库…

【Js】fetch网络请求

一、网络请求方式: AJAX:基于XMLHttpRequest收发请求,使用较为繁琐,代码量会比较多axios:基于promise的请求客户端,在浏览器和node中均可使用,使用便捷,功能强大fetch:内…

【leetcode】特殊数组I【(炒鸡)简单】

好像这题没啥子好说的欸&#xff0c;那就祝点进来的友友今天有好事发生叭~ AC代码见下&#xff1a; class Solution { public:bool isArraySpecial(vector<int>& nums) {for(int i1; i<nums.size(); i)if(nums[i]%2 nums[i-1]%2) return false;return true;} }…

k8s分布式存储-ceph

文章目录 Cephdeploy-ceph部署1.系统环境初始化1.1 修改主机名&#xff0c;DNS解析1.2 时间同步1.3 配置apt基础源与ceph源1.4关闭selinux与防火墙1.5 **创建** ceph **集群部署用户** cephadmin1.6分发密钥 2. ceph部署2.1 **安装** ceph 部署工具2.2 **初始化** mon **节点**…

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式&#xff0c;并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式&#xff08;singleton&#xff09; 单例模式是创建一个对象保证只有这个类的唯一实例&#xff0c;单例模式分为饿汉式和懒汉式&#xff0c;饿汉式是…

详解LVS-dr模式

什么是LVS-dr模式 图解 在LVS-DR模式下&#xff0c;负载均衡器&#xff08;也称为调度器&#xff09;接收来自客户端的请求&#xff0c;并根据预设的调度算法将请求转发给后端的真实服务器&#xff08;也称为RS&#xff09;。真实服务器处理完请求后&#xff0c;直接将响应返回…