矩形网格工具
为了使应用程序发挥最佳性能,需要优化和升级应用程序堆栈的每个部分。 诸如容器和容器编排工具之类的技术已将这种现代化技术带入了堆栈的基础架构层。 随着以更分布式的方式构建和部署应用程序,代码的部署方式正在发生变化。 微服务架构已经引入了这种类型的分散式软件交付方法。
但是,在基础结构和代码之间,需要无缝运行的层是网络层。 在现代的容器化应用程序中,很多注意力集中在基础结构以及代码的打包和部署上,但传统上并没有那么多地关注网络。
随着服务网格的出现,这种情况最近已经改变。
什么是服务网格?
过去,网络通信非常简单。 网络将消息从客户端中继到服务器,然后再转发回。 您可以轻松跟踪路由消息所经过的位置,网络上的几个接触点,并轻松调试延迟问题和错误。 只需要一个像Nagios这样的监视工具。
在容器化应用程序中,每个应用程序都由松耦合的微服务组成。 每个微服务都由多个容器组成,在Kubernetes的情况下,则由Pod组成。 现在,每个请求都涉及多个服务,更糟糕的是,每个服务都是动态的。 随着系统更改和进行部署,将自动创建和销毁容器。
尽管如此,这些服务之间的通信仍需要无缝发生,这是服务网格的工作。
服务网格是服务之间的通信层,用于处理微服务之间的东西向流量。 服务网格在微服务中很重要的原因是,分布式应用之间的通信比整体式通信更为复杂。
尽管微服务架构很复杂,但它在性能,对每个服务的控制,系统适应变化的能力以及整个网络的可见性方面带来了优势。 这些优点值得承受更复杂的系统的管理开销。
服务网格使管理微服务的网络变得更加容易。
服务网格的作用
服务网格的最基本职责是处理核心网络任务,例如负载平衡和服务发现。 除此之外,服务网格还引入了诸如断路和引发故障之类的高级策略,可帮助提供云本机应用程序所需的网络性能。
在复杂的微服务系统中,故障很常见,但重要的是网络重新路由,重试,主动故障并报告这些故障的能力。
服务网格中的负载平衡
负载平衡在云原生应用程序中是动态的,由于所有活动部件,其性能可能有所不同。 服务网格中的负载均衡器在向其发送请求之前,需要考虑各个实例的运行状况。 它可以阻止或路由不正常实例周围的流量,并有助于避免紧急情况并提供更可靠的服务。
负载均衡器可以主动轮询服务网格的服务发现部分,检查运行状况是否正常,或者可以被动地响应失败的请求并仅基于性能切断与实例的通信量。
除此之外,服务网格中的负载平衡还使用算法来决定如何跨网络路由流量。 过去,使用循环或随机路由之类的方法进行路由很简单。 使用现代服务网格,负载平衡算法现在考虑了后端实例上的延迟和可变负载。
服务网格中的服务发现
服务发现是在创建新实例时对其进行标识并记录从网络中删除的实例的记录的过程。 该记录对于负载均衡功能至关重要,因为请求仅由正常且可用的后端实例处理。
在动态微服务应用程序中,服务发现应自动发生。 这是通过使该工具负责启动和停止系统报告每个事件来完成的。 在Kubernetes中, ReplicationController负责实例生命周期。
Sidecar代理
传统上,负载均衡器将位于客户端和服务器之间,但是现在,高级服务网格将Sidecar代理附加到客户端库。 这样可以确保每个客户端都可以平等地访问负载平衡器。 此外,它避免了单点故障,这是传统负载均衡器的最大缺点。
边车代理已成为为分布式系统实现服务网格的首选方法。
监控服务网格
可见性是云原生应用程序成功联网的关键,并且服务网格具有多种启用监视的方式。 它提供了网络性能指标的组合,例如延迟,带宽和正常运行时间监视。 它针对堆栈的每个级别(主机,容器,窗格和群集)执行此操作,并且为事件提供详细的日志记录,以帮助进行故障排除。
分布式跟踪是可见性的关键因素。 它为每个请求通过网络提供一个ID,并显示每个请求通过网络时所经过的路径。 使用此功能,您可以判断出网络的哪些部分或哪些实例运行缓慢或无响应,并了解需要解决的问题。
随着微服务应用程序复杂性的增加,简单地在实例上重现错误并不容易。 您需要功能强大的监视工具来了解请求的路径并识别所有问题区域(会有多个)。
服务网格工具
当今最杰出的两个服务网格工具是Linkerd和Istio 。 Linkerd是第一个采用服务网格方法进行联网的工具,并已在许多生产工作负载中得到广泛采用。 Istio尽管在一年后发布,但现在已为分布式网络增加了一个额外的管理层。
Istio将其他服务网格工具视为数据平面,并将其本身视为数据平面和控制平面的组合。 Istio使用Envoy(它是类似于Linkerd的另一种流行工具)作为其数据平面。 但是,这些工具之间有很多兼容性,因为Istio也可以将Linkerd用作其数据平面。 Istio带来的是基于策略的高级管理和抽象层,该层为网络提供了更强大的分布式方法。
Buoyant 最近采取了另一种方式, 宣布了Conduit ,它专门针对Kubernetes。 它提供了功能更强大的Linkerd的轻巧,简单的替代方案。 理想情况下,它适用于全面使用Kubernetes并希望快速入门并易于管理的组织。
安全是联网的关键, Project Calico是利用基于策略的安全性的一种工具。 Calico不再像单片那样依赖整个应用程序的外围防火墙,而是帮助在微服务应用程序中的每个服务周围创建微防火墙。 然后,它为您提供了细粒度的管理控件,以实施将每个服务与其他服务隔离开的安全策略。 这样,即使一项服务遭到破坏,其他服务也保持不变。
随着我们从单一服务转向微服务,如何管理应用程序网络对于成功至关重要。 服务网格是传统网络模型的替代方案,并且了解它在使用现代云原生应用程序时应该是基础。
翻译自: https://www.javacodegeeks.com/2018/05/an-overview-of-the-service-mesh-and-its-tooling-options.html
矩形网格工具