什么是服务网格?

发布日期 2024年11月21日
蓝色抽象背景,弯曲的白色螺旋线在实心蓝色球体周围形成漩涡
By Mesh Flinders and Ian Smalley

服务网格定义

服务网格是现代应用程序架构中的一个软件层,用于管理微服务之间的连接,使应用程序能够正常运行。服务网格提供了许多关键功能,例如服务间通信、服务发现、负载均衡身份验证

现代商业环境中应用开发者面临的最大挑战之一是扩展性。随着应用程序用户数量的增加, DevOps (一种通过自动化加速应用程序交付的软件开发方法)工程师很难监控服务性能。服务网格提供的关键特性,有助于监控和管理关键服务,例如日志记录、跟踪和流量控制。

随着应用程序已成为数字化转型的基础,服务网格的重要性也日益凸显。如今,它们是一些最先进应用技术的关键推动因素,包括云原生应用、微服务和容器。

据《福布斯》报道,2022 年,70% 的组织已经运行服务网格,19% 的组织正在评估服务网络。 1

什么是微服务?

微服务,也称为微服务架构,是一种云原生架构方法,其中应用程序由许多独立的、较小的组件或微服务构建而成。这种方法使开发人员能够更轻松地更新代码并添加或删除特性和功能,而不会影响应用程序的其余部分,从而获得了高可扩展性。

服务网格对微服务架构至关重要。它们提供高度可配置的基础架构层,微服务应用程序中的所有服务都可以在该层连接并交换信息。除了服务网格之外,微服务架构还与容器技术及其最常用的平台 Kubernetes 协同使用。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

什么是容器和 Kubernetes?

容器科技,以及其最流行的容器编排平台之一Kubernetes,已成为服务网格功能不可或缺的一部分,因为它能帮助开发人员管理复杂的、基于微服务的应用程序。

容器是软件的可执行单元,它将应用程序代码与其库和依赖项打包在一起,以便代码可以在任何计算环境中运行。随着容器在现代应用程序架构中的普及,管理大型容器组迅速成为一项挑战。

Kubernetes(也称为 k8s 或 Kube)应运而生,它是一个容器编排平台,如今已成为市场上最流行的编排解决方案之一。Kubernetes 集群(代表物理机和虚拟机的节点集合)在控制平面上进行管理。

服务网格功能的另一个重要方面是管理对特定集群内服务的访问方式,这个过程称为入口

服务网格如何运作?

当今最流行的应用程序要求同时部署许多工作量或计算任务和进程。微服务架构使开发人员能够将每个应用程序构建为一组小型、独立的服务,从而更容易管理。

然而,为了使应用程序代码正常运行,微服务需要快速准确地进行通信,而服务网格架构的关键作用正体现在这里。服务网格的设计方式能让开发人员更好地控制应用程序中的服务间通信。

在最基本的层面上,服务网格依赖于一种称为基于代理的通信的通信类型,增强基于微服务的应用程序的可管理性和控制。基于代理的通信具有代理服务器(也称为代理),这些服务器充当微服务和组织网络之间的中介,允许流量通过代理流入服务和从服务流出。这种称为网络代理通信的功能,对于维护许多应用程序的可管理性、可观测性和安全性至关重要。

除了代理之外,服务网格架构还依赖于两个主要组件来实现其功能:控制平面和数据平面。

控制平面

控制平面计算机网络的一部分,用于控制数据在用户和设备(也称为节点)之间路由的方式。控制平面遵循路由规则或协议,这些规则或协议由确定数据在网络中传输的最佳路径的算法决定。

在服务网格中,控制平面包含专门设计的代理,称为边车代理,它们抽象了某些功能(例如监控和安全),以提高效率。当服务需要与服务网格中的另一个服务通信时,边车代理会拦截请求并创建一个安全且加密的通道供其传输。

数据平面

数据平面(也称为转发 平面)使数据能够通过路由器和交换机等设备在网络中发送。数据平面使用边车代理来管理服务之间的消息传递以及熔断和请求重试等重要功能。数据平面也负责执行负载平衡、服务发现和路由等关键能力。

服务网格与 API 网关

除了数据平面和控制平面外,应用程序协议接口 API 网关 是微服务的另一个重要部分,它与服务网格功能密切相关。

API 是使软件应用程序能够通信和交换数据的协议。API 网关作为工具,充当 API 客户端(例如,帮助开发人员构建应用程序的流行REST API)和位于服务器上的后端服务之间的中介。

AP I网关和服务网格的相似之处在于,它们都能提高应用程序的开发效率。然而,API 网关控制 API 的访问,而服务网格则连接应用程序内的微服务。API 网关和服务网格经常一起部署,以提高应用程序生态系统的灵活性和可观测性。

服务网格的优势

服务网格及其所实现的微服务架构,为组织带来了许多关键益处。以下是一些最常见的益处。

可观察性

服务网格为整个微服务架构提供内置的可观测性,即对复杂系统状态的更深入理解。这使开发人员能够监控重要的指标,如依赖关系延迟和错误率,这些指标对于了解应用程序的运行情况非常重要。

可观测性也有助于故障排除、性能优化、遥测(记录系统行为)和调试,因为它能让开发人员全面、无阻碍地了解微服务生态系统的内部运作情况。

控制

为了使应用程序正常运行,开发人员和应用程序管理员需要控制服务在应用程序内的相互通信方式。服务网格为部署微服务架构的组织提高了治理能力。例如,在受严格监管的行业中,让团队能够更好地执行安全和合规性要求。

此外,服务网格提供专用的基础设施层,专门用于处理与分布式应用程序(即同时在多台互联计算机上运行的应用程序)的服务间通信需求。

安全性

服务网格通过双向传输层安全 (mTLS) 加密和身份验证等功能帮助确保服务之间的安全通信。mTLS 身份验证功能有助于确保应用程序中客户端和服务器之间的双向流量安全可信。

mTLS 还通过加密服务间通信发送的信息来确保数据保持机密。它允许管理员强制执行授权策略,例如访问特定端点,该过程称为端点安全

服务发现

服务网格具有一种称为自动服务发现的功能,可以帮助减少管理服务端点(即服务网格中可以访问特定微服务的位置)的工作量。服务注册表允许服务自动相互发现和通信,无论它们位于何处,从而使开发人员能够快速、轻松地部署新服务。

负载均衡

负载平衡是服务网格的一项关键功能,即在多个服务器之间分配网络流量以优化应用程序性能。服务网格利用算法帮助平衡节点间的工作负载,优化计算资源,并总体上确保应用程序的高可用性。

流量管理与流量拆分

服务网格提供高级的流量管理和流量拆分功能,有助于优化网络上的信息流和资源流。虽然流量管理和流量拆分都用于控制网络上的信息流,但它们有一个值得注意的重要区别。流量管理侧重于对基础设施进行长期、系统性的更改,以改善信息流量,而流量拆分则涉及跨后端或服务版本的基于权重的流量分配。

服务网格能够对路由和流量行为进行细粒度、高度精细的控制,从而在应用程序更新到新软件版本时实现更平滑的过渡。例如,在广泛流行的 "金丝雀 "部署中,应用程序的新版本只向一小部分用户发布,以测试其功能和性能,再向所有用户全面发布。

选择合适的服务网格解决方案

全球网格服务提供商市场发展势头强劲,而且增长迅速。最近的一项调查显示,2023 年其估值为 2.22 亿美元,预计到 2032 年将增长到 5.05 亿美元,复合年增长率 (CAGR) 为 41.3%。2

在这样一个快速增长的行业中,选择合适的服务网格解决方案并非易事。需要考虑的关键因素包括成本、实施难易度、与现有技术的兼容性、安全性、性能和支持等。

以下是 5 种最流行的服务网格解决方案及其独特之处的简要概述。

Istio

最流行的服务网格是 Istio。其庞大的功能集意味着它具有高度自适应性,并且非常适合企业级工作量。Istio 以其先进的流量管理能力、安全功能和可扩展性而闻名,这些特性因其庞大的贡献者生态系统而得到了增强。

与其他一些服务网格产品一样,Istio 是一个开源项目,这意味着它是通过开放协作开发和维护的,任何人都可以使用。它可以与 Kubernetes 和许多其他服务网格相邻的科技很好地配合。

Linkerd

比 Istio 更轻量、更简单,Linkerd 是一种简单的服务网格解决方案,可在保持低延迟的同时提升性能。Linkerd 具备企业期望从服务网格获得的所有基本功能,包括负载均衡、服务发现、加密等等。与 Istio 一样,Linkerd 也是开源的。

NGINX Service Mesh

NGINX 比大多数其他服务网格更全面。它既可以作为Web 服务器,也可以作为反向代理,这意味着它可以提供比其他服务网格更广泛的协议支持。NGINX 专为追求极致性能和稳定性而设计,被许多高流量网站所采用。与 Linkerd、Istio 和其他服务网格解决方案一样,它是开源的。

Consul

由流行的云基础设施公司 HashiCorp 创建的 Consul 是一个多云服务网格,提供与许多其他流行服务网格相同的功能。Consul 是目前可用的最灵活的服务网格解决方案之一,可在许多不同的操作系统上使用,包括 Windows、Linux、macOS、FreeBSD 和 Solaris。Consul 同样是开源的,并因其流行的 Prometheus 插件(可增强监控能力)而广为人知。

AWS App Mesh

专为 Amazon Web Services (AWS) 云部署而设计,AWS App Mesh 是一种服务网格,具有许多与 Linkerd、Istio 等相同的功能,包括增强的安全性、流量管理和可观测性。然而,AWS App Mesh 不够灵活,通常仅被认为适合已集成到 AWS 架构中的组织。

作者

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

探索 DevOps 解决方案
云咨询服务

通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

深入了解我们的云咨询服务
采取后续步骤

从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

  1. 了解 IBM Instana
  2. 探索 DevOps 解决方案
脚注

1 《服务网格是实现应用程序现代化的桥梁》,福布斯,2023 年 3 月

2 《服务网格市场报告》,Business Research Insights,2024 年 10 月