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

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

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

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

注意:为了更好地理解服务网格,您应该了解微服务和 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.mzph.cn/news/660699.shtml

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

相关文章

【Eclipse平台】2 Eclipse Workbench工作台介绍

Eclipse Workbench工作台介绍 本文介绍Eclipse工作台Workbench。 当工作台启动时,首先看到的是一个对话框,该对话框允许我们选择工作区的位置。工作区是存储工作的目录。现在,只需单击“确定”即可选择默认位置。 选择工作区位置后&#x…

如何访问 Oracle OKE 集群

OKE是Oracle Cloud提供的托管Kubernetes服务,为用户提供强大而灵活的容器编排平台。在本文中,我们将详细介绍如何有效地与OKE集群进行交互,包括访问集群的不同方式、管理访问权限以及执行常见操作的步骤。 1 安装oci命令 1.1 在Oracle Linux…

【gRPC】protoc文件转py文件

以下基于Win系统下Python的venv虚拟环境演示 《Python3笔记之venv虚拟环境》《Python笔记之pip国内镜像修改方法》 在桌面创建个test目录作为项目目录,初始化venv环境后,安装基础依赖: pip install grpcio grpcio-reflection grpcio-tools p…

证券开户怎么联系专属客户经理?新手必看!

证券开户联系专属客户经理的方式有很多,可以通过手机网上找客户经理,现在这种方式是最多的,比如咱们网站都是各大券商专业的客户经理,在线联系就可以帮您安排。您自己也可以挑选自己觉得好的券商和客户经理,然后再沟通…

MIMIC-IV官方视图解析 - cardiac_marker心脏标记表

今天在学习官方衍生表mimiciv_derived.cardiac_marker心脏标记表时候发现了一些问题: 该表中troponin_t (肌钙蛋白t)的值结果都是空值null 或者 ___ (由于去标识化), 这明显是不合理的 小编查看了该表的官…

MySQL-运维篇-日志

一、错误日志 二、二进制日志 1、介绍 2、日志格式 3、日志查看 4、日志删除 三、查询日志 四、慢查询日志

汽车软件开发模式的5个特点

汽车软件开发属于较为复杂的系统工程,经常让来自不同知识背景的工程师在观点交锋时出现分歧。在解决复杂性和对齐讨论基准时,可以通过勾勒出讨论对象最关键的几个特征来树立典型概念。本文旨在通过5个典型特点的抽取,来勾勒出汽车软件开发模式…

python实现贪吃蛇小游戏(附源码)

文章目录 导入所需的模块坐标主游戏循环模块得分 贪吃蛇小游戏,那个曾经陪伴着00后和90后度过无数欢笑时光的熟悉身影,仿佛是一把打开时光之门的钥匙。它不仅是游戏世界的经典之一,更是我们童年岁月中不可或缺的一部分,一个承载回…

新媒体与传媒行业数据分析实践:从网络爬虫到文本挖掘的综合应用,以“中国文化“为主题

大家好,我是八块腹肌的小胖, 下面将围绕微博“中国文化”以数据分析、数据处理、建模及可视化等操作 目录 1、数据获取 2、数据处理 3、词频统计及词云展示 4、文本聚类分析 5、文本情感倾向性分析 6、情感倾向演化分析 7、总结 1、数据获取 本…

SwiftUI 动画入门之一:路径动画(Path Animations)

概览 在 SwiftUI 的开发中,我们往往需要使用千姿百态的动画把我们的界面元素妆点的更加鲜活灵动。 如上图所示,我们使用路径动画使折线图更加生动了!这是怎么做到的呢? 在本篇博文中,您将学到以下内容: 概览1. 路径与形状(Path and Shape)2. 路径动画的原理3. 让路径…

Zookeeper服务注册与发现实战

目录 设计思路 Zookeeper注册中心的优缺点 SpringCloudZookeeper实现微服务注册中心 第一步:在父pom文件中指定Spring Cloud版本 第二步:微服务pom文件中引入Spring Cloud Zookeeper注册中心依赖 第三步: 微服务配置文件application.y…

页面切换导致echarts不加载的问题

1. 问题描述 在A页面写了echarts,初始化dom元素加载,显示正常.当切换到B页,再切换回A页面时,echarts加载不出来. f12召唤出来看看报错,没有问题,但是有这样的警告 渲染echarts的dom元素上多了一个" echarts_instance "的属性,这是用来表示唯一性的. 2. 问题解决 …

杂题——试题-算法训练-P0604-runaround数

分析: 题目有三个关键点: 一:结束时,回到起始位置(比较结束时和起始时的下标位置是否相同)二:该整数的所有数字都必须遍历一遍,且只能遍历一遍(把遍历过的数字做个标记&a…

记录下Flybirds移动端ui自动化框架的搭建

一、参考文档 1.官方文档:携程机票跨端跨框架 BDD UI 自动化测试方案Flybirds — flybirds v0.1.5 文档 2.Flybirds运行环境:Flybirds运行环境 - 简书 3.Windows系统连接IOS安装tidevice:iOS自动化之tidevice-CSDN博客 二、Windows系统演…

DNS服务实战:使用自定义域名访问Redis服务

前言 在这篇文章中,你将了解到如何在 CentOS 系统上安装 Redis 服务,并且掌握通过自定义域名来访问 Redis 服务的技巧。通过使用自定义域名,你可以方便地管理和访问你的 Redis 数据库,提高工作效率。无论你是开发者、系统管理员还是对 Redis 感兴趣的读者,这篇文章都会为…

springboot145基于java的在线问卷调查系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

亚信安慧的AntDB数据库:稳定可靠的保障

亚信安慧AntDB数据库在运营商自主可控替换项目中的成功应用,具有极其重要的意义。该数据库的落地,不仅为这一项目注入了强大的支持力量,还在更大程度上提升了整体的运营效能。作为一种高效可靠的数据库解决方案,AntDB引入了先进的…

AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长

今天分享的是AIPC系列深度研究报告:《AIPC专题:深耕笔电背光模组领域,AIPC与车载显示拉动公司成长》。 (报告出品方:东兴证券) 报告共计:19页 公司深耕笔电背光模组,主要下游客户为…

缓存相关问题记录解决

缓存相关问题 在这里我不得不说明,我写的博客都是我自己用心写的,我自己用心记录的,我写的很详细,所以会有点冗长,所以如果你能看的下去的化,会有所收获,我不想写那种copy的文章,因为对我来说没什么益处,我写的这篇博客,就是为了记录我缓存的相关问题,还有我自己的感悟,所以如果…

TypeScript(十) Map对象、元组、联合类型、接口

1. Map对象 1.1. 简述 Map对象保存键值对,并且能够记住键的原始插入顺序。   任何值都可以作为一个键或一个值。 1.2. 创建 Map 使用Map类型和new 关键字来创建Map: 如: let myMap new Map([["key1", "value1"],[&…