全方位详解服务网格(服务网格)

  

服务网格是近几年才出现的一个新兴概念。它可以解决微服务之间通信愈发复杂的问题。那么什么是服务网格?它有什么具体的功能吗?它的架构又是如何的呢?它与Kubernetes的关系是怎样的?所有答案戳文了解。
,
全方位详解服务网格(服务网格)
,

  <人力资源/>   

,
在数字化转型的旗帜下,IT界的一大变化是大型单体应用程序被分解为微服务架构,即小型,离散的功能单元,并且这些应用程序在容器中运行。包含所有服务代码以及依赖项的软件包被隔离起来,并且能轻松从一个服务器迁移到另一个。
,

  

像这样的容器化架构很容易在云中扩展和运行,并且能够快速迭代和推出每个微服务。然而,当应用程序越来越大并且在同一个服务上同时运行多个实例时,微服务之间通信将会变得愈发复杂.Service网格的出现将解决这一问题,它是一个新兴的架构形式,旨在以减少管理和编程开销的形式来连接这些微服务。

  

,

  

什么是服务网格?

  

,

  

关于服务网格的定义,最为广泛接受的观点是:它是一种控制应用程序不同部分彼此共享数据的方式。这一描述包含了服务网格的方方面面。事实上,它听起来更像是大多数开发人员从客户端——服务器应用程序中熟悉的中间件。

  

,

  

服务网格也有其独特之处:它能够适应分布式微服务环境的独特性质。在搭建在微服务中的大规模应用程序中,有许多既定的服务实例,它们跨本地和云服务器运行。所有这些移动部件显然使得各个微服务难以找到他们需要与之通信的其他服务.Service网可以在短时间内自动处理发现和连接服务,而无需开发人员以及各个微服务自行匹配。

  

,

  

我们可以将服务网格等同为软件定义网络(SDN)的OSI网络模型第7层。正如SDN创建一个抽象层后网络管理员不必处理物理网络连接,服务网格将解耦在抽象架构中的与你交互的应用程序的底层基础架构。
,

  

随着开发人员开始努力解决真正庞大的分布式架构的问题,服务网格的概念适时地出现了。这一领域的第一个项目是Linkerd,它一开始是Twitter内部项目的一个分支.Istio是另一个十分流行网的服务项目,它起源于Lyft,现在这一项目获得了许多企业的支持。

  

,

  

服务网格负载均衡

  

,

  

服务网格其中一个关键功能是负载均衡。我们常常将负载均衡视为网络功能,你想要防止服务器或网络链接被流量淹没,因此相应地你会路由你的数据包,而服务网格在应用程序层面也在执行类似的事情。
,

  

本质上、服务网格的工作之一是跟踪分布在基础设施上的各种微服务的哪些实例是“最健康的”。它可能对他们进行调查来查看它们如何工作的或跟踪哪些实例对服务请求响应缓慢并将后续请求发送到其他实例。此外,服务网格也会为网络路由做类似的工作,如果发现当消息需要很长时间才能送达,那么服务网格将会采用其他路由进行补偿。这些减速可能是由于底层硬件出现问题,或者仅仅是由于服务因请求过载或处理能力不足导致的。但没有关系,服务网格会找到另一个相同服务的实例,然后将其路由以替代响应缓慢的实例,高效利用了整个应用程序的资源。

  

,

  

服务网格vs Kubernetes

  

,

  

如果你稍微熟悉基于容器的架构,你可能会想Kubernetes这个流行的开源容器编排平台能否适合这种情况。毕竟,Kubernetes不就是管理着你的容器之间如何互相通信的吗?你可将Kubernetes”服务”资源视为非常基础的服务网格,因为它提供服务发现和请求的轮询调度均衡。但是完整的服务网格则提供更丰富的功能,如管理安全策略和加密,“断路”以暂停对缓慢响应的实例的请求以及如上所述的负载均衡等。
,

  

请记住,大多服务网格数确实需要像Kubernetes这样的编排系统.Service网只是提供扩展功能,而非替代编排平台。

  

,

  

服务网格与API网关

  

,

  

每个微服务都会提供一个API,它会作为其他服务与其通信的手段。这引发了服务网格与其他更传统的API管理形式(如API网关)之间的差异问题.API网关位于一组微服务和“外部“世界之间,它根据需要路由服务请求,以便请求者不需要知道它正在处理基于微服务的应用程序即可完成请求。而服务网格调解微服务应用程序内部的请求,各种组件完全了解其环境。

全方位详解服务网格(服务网格)