服务网格(Service Mesh)流行工具

news2025/7/19 14:03:17

在这篇博客中,我们将介绍微服务的最佳服务网格工具列表,这些工具提供安全性、金丝雀部署、遥测、负载均衡等。

用于部署和操作微服务的服务网格工具的数量不断增加。在这篇文章中,我们将探讨您应该用来构建自己的服务网格架构的顶级服务网格工具。

在制定选择正确工具的策略时,首先要做的是了解它将为您提供什么以及它的效果如何。

注意:为了更好地理解服务网格,您应该了解微服务和 Kubernetes 或类似的容器编排工具。

什么是服务网格

在软件架构中,服务网格是一个专用的基础设施层,用于使用代理促进服务或微服务之间的服务到服务通信 -- wikipedia.org

如果要管理、监视和保护所有微服务之间的通信,该怎么办?这就是服务网格的用武之地。

服务网格是一种为微服务提供抽象层的工具。它们在服务之间提供智能路由、弹性和负载均衡功能,具有比传统解决方案更好的容错能力。

总体而言,服务网格管理所有服务到服务的通信。它拦截服务之间的所有流量。最好的部分是,您可以以声明方式管理所有服务网格功能,就像在 Kubernetes 中部署对象一样。

服务网格有什么用

服务网格本质上主要使用 sidecar 代理管理多个微服务之间的流量。

Service mesh traffic flow

使用服务网格有很多好处,包括通过提供通信加密来提高安全性,通过可观测性工具简化调试过程,以及由于智能故障转移功能和跨容器或机器的分布式跟踪而实现的水平可扩展性而提高可用性。

服务网格旨在提供以下功能

  1. 路由和负载平衡
  2. 服务发现
  3. 身份验证和授权
  4. 金丝雀部署
  5. 熔断、限流、运行状况检查和重试预算
  6. 相互传输级别安全性 (mTLS) 和访问控制列表。
  7. 通过分布式跟踪实现可观测性
  8. 服务间通信访问日志

在大多数情况下,与应用程序容器一起运行的 sidecar 容器会处理上述所有功能。您不必专门设计应用程序来使用服务网格。此外,无需额外的仪器即可监控具有服务网格功能的服务。

最好的服务网格工具?

下面是一些流行的服务网格工具

1. Istio

GithubGitHub - istio/istio
官网istio.io
文档Istio Official Documentation

Istio 是一个服务网格,由 Google 开发并开源的。它提供了一种连接、管理和保护相互通信的微服务的方法。

Istio service mesh architecture

Istio 的安全功能包括加密传输中的服务之间的所有通信,以及为授权用户提供身份验证凭证。Istio 还提供跨容器或机器的分布式跟踪等功能,而无需在单个节点中使用第三方软件代理。

Istio 被 Adobe、百度和谷歌等许多公司用于生产。

2. Linkerd

GithubGitHub - linkerd/linkerd2
官方网站linkerd.io
官方文档https://linkerd.io/2.10/overview/

Linkerd 是一个开源服务网格,可以在 Kubernetes 或 Mesos 集群上运行,专为管理大量微服务的大规模环境而设计。

Linkerd service mesh architecture

Linkerd 还将提供监控、跟踪、路由、负载均衡和其他功能,以及跨集群的自动部署升级

3. Cilium Service Mesh

Githubhttps://github.com/cilium/cilium
官方网站cilium.io
文档https://docs.cilium.io/en/stable/

Cilium 是一种用于容器和微服务的开源轻量级网络和安全解决方案。它使用 Linux 内核的 BPF(Berkeley 数据包过滤器)技术为容器和微服务提供透明度、可见性和安全性。Cilium 提供了一种灵活的方法来容器化和微服务化应用程序,而无需绑定到任何特定的编排解决方案。

  1. 容器和微服务感知网络策略
  2. 自动发现服务
  3. L7(第 7 层)感知策略实施
  4. 容器和主机的统一安全模型
  5. 细粒度的安全可见性
  6. 容器和微服务之间的安全通信
  7. 无需中央控制器或管理开销

Cilium 是一种无需更改任何代码即可提高容器化应用程序安全性和网络的简单方法。Cilium 与 Docker、Kubernetes 和 Mesos 等流行的编排解决方案集成,可与任何基于 Linux 的应用程序一起使用。

如果您正在寻找一种轻量级、易于使用的解决方案来保护容器和微服务并联网,那么 Cilium 是您的正确选择。

4. Consul connect

Githubhttps://github.com/hashicorp/consul
官方网站consul.io
文档https://www.consul.io/docs/connect

Consul Connect 是 Hashicorp 的服务网格解决方案。

Consul 最初是为服务发现而设计的。但是,通过 consul connect,服务网格部署在 consul 之上,并提供服务发现、配置同步和故障检测。

5. Traefik Mesh

Githubhttps://github.com/traefik/mesh
官方网站traefik.io
文档https://doc.traefik.io/traefik-mesh/

Traefik Mesh 是一个简单的服务网格解决方案,主要用于负载均衡。

Traefik Mesh 是流行的反向代理 Traefik 的插件,可帮助发现服务并在服务之间路由以平衡工作负载。

Traefik service mesh architecture

它还提供 SSL 终止和 Web 套接字代理等功能,因此您不必担心这些事情,如果它们

6. Open Service Mesh (OSM)

Github的OSM 存储库
官方网站openservicemesh.io
学习OSM 官方文档

Open Service Mesh (OSM) 是一种轻量级且可扩展的云原生服务网格,支持动态服务发现、监控和路由。

OSM在所有级别上都是可插拔的,以提供最适合您要求的产品:

  1. 服务发现 – 第四层 (IP) 或第七层 (URL)
  2. 监控 – 基于 Prometheus 的指标,后端支持 Graphite、InfluxDB 和 Elasticsearch
  3. 路由 – HAProxy 作为服务之间的代理,通过集群中 Pod 之间的请求负载均衡来提供高可用性。它还提供 SSL 终止和 Web 套接字代理等功能,因此如果它们运行在不安全的协议(例如明文 TCP/UDP 连接)上,您不必担心这些事情。这有助于通过仅允许来自授权 IP 的流量通过服务网格来确保访问控制。

7. Nginx Service Mesh (NSM)

Nginx 服务网格是用于 kubernetes 的轻量级服务网格,具有零信任环境,可在容器之间提供加密流量。

Nginx service mesh

它使用由 Nginx Plus 提供支持的数据平面管理容器之间的数据流量。Nginx 服务网格主要关注以下几点。

  1. 安全性:服务之间的 mTLS 加密流量。
  2. 流量管理:具有速率限制和断路器的服务之间的策略管理流量控制。
  3. 可视化:内置的 Grafana 仪表板提供了对 NGINX 和指标的可见性。
  4. 混合部署:遗留应用程序可以通过 Nginx 入口控制器与服务网格进行社区化。

8. Kuma

Github的Kuma 开源存储库
官方网站kuma.io
学习Kuma 官方文档

Kuma 服务网格最初由 Kong, Inc 创建,现在是 CNCF 沙盒项目。它建立在 Envoy 代理之上。它可以充当 kubernetes 集群和 VM 的服务网格。

以下是隈研吾的主要特点

  1. 通用控制平面
  2. 轻量级数据平面
  3. 多网格
  4. mTLS 和 TLS 轮换
  5. 故障注入
  6. 流量跟踪和流量指标
  7. 与平台无关
  8. 透明代理

其他要考虑的 Service Mesh 工具

以下是其他基于 CNCF 的服务网格工具。

  1. 网状物
  2. Gloo 网状物
  3. 灰质
  4. 服务网格接口
  5. 网络服务网格

以下是一些云托管的服务网格服务。

  1. AWS 应用网格
  2. Anthos 服务网格
  3. GitHub - linkerd/linkerd2

总结

做出选择时,首先要深入研究服务网格功能。您应该能够使用 Service Mesh 工具提供的功能来调整组织的需求。

其次,确定您是否拥有具有实施和管理该工具的技能组合的团队。初始设置总是很容易,真正的麻烦在于其生命周期管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(已解决)spingboot项目如何做QQ邮箱注册功能,如何在邮箱注册中进行随机数添加作为动态验证码,并满足分层解耦

前面我们已经完成了发送静态验证码,现在用随机数作为动态验证码。 文章地址:spingboot 后端发送QQ邮箱验证码 使用注解Component进行分层解耦加入ioc容器,方便调用。 package com.example.tianyidemo.utils; import org.springframework.st…

深度学习(7)--Keras项目详解(卷积神经网络)

目录 一.项目介绍 二.卷积神经网络构造 2.1.判断是否是channels first的back end 2.2.卷积层构造 2.3.添加激活函数 2.4.池化层构造 2.5.全连接FC层构造 三.完整代码 3.1.学习率衰减设置 四.首次运行结果 五.数据增强对结果的影响 六.BatchNormalization对结果的影…

MIT6.5830 实验3

前置回顾 在实验2中,完成了增删查改、排序、分组、聚合、连接等基本操作,在已提供 sql 解析器的基础上,能够运行进本的 sql 语句。都是逻辑层的实现,没有涉及物理存储方面的内容。 实验目标 实现最简单的基于锁的transaction&am…

RabbitMQ之死信交换机

前言 消息队列是分布式系统中常用的组件,用于异步通信、解耦和提高系统可靠性。然而,在实际应用中,难免会遇到一些异常情况,例如消息处理失败、超时等。为了更好地处理这些异常情况,死信交换机(Dead Lette…

搭建高效企业培训平台:教育系统源码开发详解

为了更好地满足企业培训的需求,许多组织纷纷转向数字化教育,搭建高效的企业培训平台成为当务之急。本篇文章,小编将为您讲解教育系统源码的开发细节,为搭建一个功能强大、灵活高效的企业培训平台提供详尽的指南。 一、教育系统的…

“2024成都国际自动驾驶技术展览会”展示前沿技术与创新融合

近年来,新一轮科技革命和产业革命正向纵深发展,以互联网为代表的新一代信息技术与汽车产业的加速融合推动了汽车产品形态和分布的深刻变革,汽车已开始向大型移动智能终端的方向演变。汽车、信息、互联网等企业、研究院所、高校及各国政府纷纷…

单细胞scRNA-seq测序基础知识笔记

单细胞scRNA-seq测序基础知识笔记 scRNA-seq技术scRNA-seq 分析流程数据预处理聚类标准化数据筛选有用的数据数据降维聚类 Clustering 注释细胞类型 scRNA数据分析结尾 该笔记来源于 B站up 江湾青年 scRNA-seq技术 首先是如何测序,上图瓶中有很多细胞,…

echarts 饼图循环高亮展示

echarts 饼图循环高亮展示 this.categorychart.setOption(option);let currentIndex 0; // 当前高亮图形在饼图数据中的下标selectPie()if (this.changePieInterval)clearInterval(this.changePieInterval);this.changePieInterval setInterval(selectPie, 5000); // 设置自动…

实现vue3响应式系统核心-shallowReactive

简介 今天来实现一下 shallowReactive 这个 API。 reactive函数是一个深响应,当你取出的值为对象类型,需要再次调用 reactive进行响应式处理。很明显我们目前的代码是一个浅响应,即 只代理了对象的第一层,也就是 shallowReactiv…

以 AI 升级自我 | Kyligence 荣获多个奖项及榜单认可

回顾 2023 年的企业开年信,Kyligence 联合创始人兼 CEO 韩卿借用了历史上一句经典口号“时间就是金钱,效率就是生命”,鼓励团队顺势而为,抓住时代的机会,快速发展,快速成长。 Kyligence 一直都在践行“Ret…

【系统设计】12306架构设计难点(下)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

Linux第38步_编译“正点原子移植好的uboot”

uboot的全称是Universal Boot Loader,uboot是一个遵循GPL协议的开源软件,uboot是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB等高级功能。 uboot官方的uboot源码是给所有的半导体厂商准备的。ST公司会…

c++ 字符串切分split

c 字符串切分split 的举例实现 一共给出了四种方式 1、 strtok 2、 stringstream 3、 字符串查找 4、 基于封装的方式&#xff0c;提供了 c11 foreach 接口 代码 vector<string> split(string s) {vector<string> res;const char *p strtok((char *) s.c_str(),…

【LVGL源码移植】

LVGL源码移植 ■ LVGL源码移植一&#xff1a;下载LVGL源码二&#xff1a;修改LVGL文件夹1: 将这5个文件&#xff0c;复制到一个新的文件夹2: 简化文件&#xff0c;减少内存消耗&#xff08;去除不必要的文件&#xff09;3: 为了规范化&#xff0c;我们将下列文件进行重命名 三&…

强化学习 - Monte Carlo Tree Search (MCTS)

什么是机器学习 强化学习中的Monte Carlo Tree Search (MCTS) 是一种用于决策制定和搜索的算法&#xff0c;特别在不确定环境下表现出色。 1. 强化学习背景 在强化学习中&#xff0c;一个智能体通过与环境的交互学习&#xff0c;以便在某个任务上获得最大的奖励。MCTS是一种…

Kotlin 协程:深入理解 ‘lifecycleScope‘

Kotlin 协程&#xff1a;深入理解 ‘lifecycleScope’ Kotlin 协程是一种强大的异步编程工具&#xff0c;它提供了一种简洁、易读的方式来处理并发和异步操作。在 Kotlin 协程库中&#xff0c;lifecycleScope 是一个关键的概念&#xff0c;它允许我们将协程的生命周期绑定到 An…

LeetCode 828. 统计子串中的唯一字符

一开始想的是两次前缀和&#xff0c;发现自己蠢了 看了灵神的题解&#xff0c;类似于DP的思想 我们维护以每个字符串结尾的子字符串对答案的贡献&#xff0c;s[i]的贡献是多少&#xff1f;首先我们知道他需要自己单独一个串或者接在以s[i-1]结尾的那些字符串的后面&#xff0c…

从法律风险的角度看待项目验收前自测的必要性

大家好&#xff0c;我是不会魔法的兔子&#xff0c; 一枚从事企业合同纠纷预防与解决的执业律师&#xff0c;从法律的角度分享关于项目管理中的问题及预防&#xff0c;让项目管理者能够提早发现与解决项目执行过程中的风险&#xff0c;同时欢迎大家一起交流&#xff0c;微信搜…

做外贸发货时发现货物有问题要怎么办

一个客户向一个伙伴订购了一批衣服&#xff0c;在准备装货的时候&#xff0c;小伙伴到工厂检查货物&#xff0c;发现衣服非常的潮湿&#xff0c;于是小伙伴担心货物万一经过长期的海运&#xff0c;到达客户那边发霉了怎么办呢&#xff1f; 但是工厂这边已经打好包装&#xff0c…

MySQL备份和恢复(二)mysqldump

注意&#xff1a;mysqldump是完全备份 一、mysqldump备份命令 1、 备份数据库 含创建库语句 &#xff08;1&#xff09;备份指定数据库 完全备份一个或多个完整的库&#xff0c; mysqldump -uroot -p[密码] --databases 库名1 [库名2].. >/备份路径/备份文件名.sql#导出…