首页 > 企业站 > 企业站_资讯眼> 正文

Service Mesh:增强微服务通信

佚名 整合编辑: 王珂玥 发布于:2023-12-06 11:55

微服务要实现其最优功能,需要一种鲁棒、安全、高效的通信机制。Service mesh有助于提供这些需求,允许应用程序内的服务以最优和可扩展的方式进行通信。

在本文中,我们将探讨Istio和Linkerd等工具如何在云原生设置中增强服务到服务的通信,并详细介绍它们提供的功能。从负载平衡和流量路由到安全特性和采用服务网格架构的含义,我们将提供这个重要软件层的全面概述。

什么是Service mesh?

Service mesh是处理应用程序中服务之间通信的所有方面的软件层。这些层由容器化的微服务组成,因此如果应用程序的规模发生变化,微服务的数量也会发生变化。如果没有Service mesh,在评估和管理性能方面可能会带来重大挑战。

为什么采用Service mesh?

现代应用程序由一系列相互独立部署的微服务组成。通常,每个微服务都是由不同的一方开发的,使用不同的编程语言和开发工具,这使得建立有效的通信变得更加复杂。这种通信的速度和健壮性决定了应用程序的整体性能。

为了确保通信是最佳的,开发人员需要监视和控制每个微服务,以有效地管理通信。这就是Service mesh的优势所在,它提供了两个关键功能来实现最大性能。

服务等级的可观测性

每当部署新的工作负载和服务时,开发人员有时会面临一场艰苦的斗争。Service mesh可以更好地了解新的工作负载和服务如何在应用程序层进行通信,从而可以评估诸如下游和上游依赖关系之类的变量。

此外,服务网格通过提供实时度量和健壮的日志功能简化了调试过程。当服务出现中断或彻底失败时,开发人员可以快速查明问题,而不必筛选复杂的日志或破译不明确的指标。

服务等级的可控制性

服务需要严格管理,包括它们如何相互通信以及它们可以执行什么操作。Service mesh提供了对微服务行为和交互的高级治理,同时还实施了相关的安全策略。这对于与多个后端服务交互以获取数据或提供功能的前端组件至关重要。

例如,当使用React PDF查看器时,应用程序可能会从一个服务请求PDF,从另一个服务请求用户注释,并依赖第三个服务进行身份验证,这使得Service mesh对于维护平滑、安全的交互非常宝贵。同样,医疗保健和金融服务也可以从服务网格中受益,以便每天执行数百万个安全交互。

Service mesh的好处

采用开源Service mesh有四个主要好处——负载平衡、流量路由(管理)、服务发现和高级安全特性。

负载平衡

使用一组算法,Service mesh可以在多个服务实例之间自动分配请求。这确保了高网络可用性、无缝可伸缩性和资源的最佳使用,从而提高了性能。

流量路由

高级流量管理功能提供了对请求路由和流量行为的高级控制,包括:

分流:将进入的流量划分到不同的服务版本或配置中。

请求镜像:在不中断主请求流的情况下,复制流量以测试监视服务以进行分析。

金丝雀部署:一小部分流量可以定向到一个新的服务版本,以评估其在真实场景中的行为和性能。

服务发现

自动化服务发现将管理服务端点的操作负载降至最低,而不是使用服务注册中心进行动态发现,同时还保留网格内所有微服务的记录。这意味着服务可以即时发现并相互通信,而不管它们位于何处或所处的环境如何。

高级安全特性

Service mesh的一个关键优点是它如何使用诸如互TLS之类的特性来保护通信。这样可以进行身份验证,并通过对流量进行加密来确保数据的机密性。还可以实施授权策略,以提供额外的控制级别。

监视也是一个主要的安全特性,它提供了服务行为和性能的完全可观察性。这对于优化服务性能和排除任何问题至关重要,为评估延迟、错误率和资源利用率等因素提供了有价值的指标。

因此,服务网格的价值不仅在于解决眼前的问题,还在于它适应未来挑战的能力。通过加入一个专门用于流量管理、安全性和可观察性的层,整个网络将更加安全,有效地应对未来。

通过故障注入、断路和限速等功能,服务网格可以确保您的系统能够承受不可预测的变化,并毫不费力地适应变化。

Istio和Linkerd:在云原生设置中增强服务对服务的通信

有两种开源Service mesh,Istio和Linkerd,在提供高级功能和无与伦比的性能的同时,也不容忽视地脱颖而出。

Istio

这种开源服务网格可以添加到现有的分布式应用程序中,通过一系列监控功能提供额外的安全性和效率。Istio帮助改进负载平衡和服务到服务的身份验证,只需很少或零服务代码更改,是各种数字环境(包括云原生设置)的理想选择。

由于Istio运行在Kubernetes上,它在可扩展性和部署多样性方面表现出色,因此可以轻松添加部署在Kubernetes中的应用程序,将Service mesh扩展到其他集群,以及连接虚拟机(vm)和运行在Kubernetes之外的其他端点。

此外,Istio由强大的社区支持,由一系列集成、合作伙伴、贡献者和分销商提供支持,为众多用例提供最佳解决方案。

Istio的主要特性

通过TLS加密,以及健壮的基于身份的身份验证和授权,确保集群内的服务到服务通信安全

自动负载均衡的HTTP, WebSocket, TCP和gRPC流量

完全控制交通行为

集群内所有流量的自动度量、日志和跟踪

可插拔的策略层和配置API

Linkerd

Linkerd是另一个应该考虑的开源Service mesh;然而,与Istio不同的是,Linkerd是基于由Buoyant Cloud提供的网络微代理。这是一个为容器化环境构建的强大的服务网格,添加了Kubernetes和Docker支持,但与Istio不同的是,Linkerd不支持虚拟机。

Linkerd帮助开发人员克服运行和管理微服务应用程序的挑战,提供了每个服务如何通信的全面可见性,以创建高效的网络并提高安全性。

Linkerd的主要功能

严格的授权策略,限制在网状服务之间允许的流量类型

自动启用相互传输层安全性(TLS)

能否透明且安全地连接运行在不同集群中的服务

所有TCP流量都被代理

在HTTP、HTTP/2和gRPC连接上对目的端点的请求自动负载均衡

采用Service mesh基础设施:可能的影响

在某些情况下,采用Istio和Linkerd这样的Service mesh可能会带来挑战。挑战可能包括兼容性问题、缺乏内部专业知识以及额外的运营资源分配。

增加了复杂性

采用Service mesh可能会引入额外的复杂性层,特别是在缺乏内部专业知识的情况下。添加新的基础设施组件、部署注意事项和配置需求。随着开发人员和网络运营商掌握这项技术,最初的学习曲线可能相当陡峭,有时很难实现平稳过渡。

操作要求

由于Service mesh需要对数据平面代理和控制平面组件的部署、管理和监视进行更改,操作开销可能会给许多组织带来挑战。这通常会导致需要额外的操作资源,或者可能需要采用新的体系结构。

兼容性

Service mesh必须与现有的基础设施集成,没有任何问题,包括容器编排平台,如Docker和技术栈中使用的任何网络工具。由于云环境的多样性,这需要持续的测试和计划,以确保一切都配置正确,特别是在需要任何升级的情况下。

结论

Service mesh可以自动化和优化应用程序中服务之间的通信,自动处理诸如负载平衡和服务发现等过程。与任何新的集成一样,采用服务网格也会带来挑战,但通过适当的规划和逐步集成,这些挑战都可以被克服。

原文《Service Meshes: Enhancing Microservices Communication》

网友评论

聚超值•精选

推荐 手机 笔记本 影像 硬件 家居 商用 企业 出行 未来
二维码 回到顶部