前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务网格(Service Mesh)及其工具选项概述

服务网格(Service Mesh)及其工具选项概述

作者头像
双愚
发布2018-06-28 16:02:19
1.1K0
发布2018-06-28 16:02:19
举报
文章被收录于专栏:重庆的技术分享区

原文作者:Twain Taylor

原文地址:https://dzone.com/articles/an-overview-of-the-service-mesh-and-its-tooling-op


为了使应用程序最佳运行,应用程序堆栈的每个部分都需要进行优化和现代化。容器和容器编排工具等技术已经为堆栈的基础结构层带来了这种现代化。随着应用程序以更分布式的方式构建和部署,代码的部署方式正在发生变化。微服务体系结构引入了这种分散的软件交付方法。

但是,在基础设施和代码之间,需要无缝运行的层是网络层。在现代集装箱化应用中,很多关注点集中在基础设施,代码的打包和部署上,但传统上没有那么关注网络。

随着服务网格的出现,这一点已经发生了变化。

什么是服务网格?

以前的网络通信很简单。网络将消息从客户端传送到服务器,然后传回。您可以很容易地跟踪路由消息、跨网络的几个接触点,以及容易调试延迟问题和错误。它只需要一个像Nagios那样的监控工具。

在一个容器化的应用程序中,每个应用程序都由松散耦合的微服务组成。每个微服务由多个容器组成,或者在Kubernetes中由多个容器组成。现在每个请求都涉及多个服务,而且更糟糕的是,每个服务都是动态的。在系统更改和部署时,容器将自动创建和销毁。

但是,这些服务之间的通信需要无缝地进行,而这就是服务网格的工作。

服务网格是处理微服务之间的东西通信的服务之间的通信层。服务网格在微服务中很重要的原因是,分布式应用之间的通信比使用单一组件要复杂得多。

尽管它很复杂,但微服务体系结构在性能、对每个服务的控制、系统对变化的适应能力以及整个网络的可见性方面都具有优势。这些优点使得忍受更复杂系统的管理开销是值得的。

服务网格使微服务管理网络变得更容易。

服务网格的作用

服务网格的最基本的职责是处理核心的网络任务,比如负载平衡和服务发现。除此之外,服务网格还引入了一些高级策略,如线路中断和故障诱导,这有助于提供云本机应用程序所需的网络性能。

在一个复杂的微服务系统中,失败很常见,但重要的是网络能够重新路由,重试,主动失败并报告这些失败。

服务网格中的负载平衡

负载均衡在云本机应用程序中是动态的,因为所有活动部件都可以具有不同的性能。服务网格中的负载均衡器在发送请求之前需要考虑单个实例的健康状况。它可以阻止或绕开不健康实例的流量,并帮助避免紧急情况并提供更可靠的服务。

负载均衡器可以积极地轮询服务发现部分,检查健康的实例,也可以被动地响应失败的请求,并仅根据性能切断对实例的通信量。

除此之外,服务网格中的负载均衡使用算法来决定如何通过网络路由流量。过去,路由很简单,使用循环法或随机路由等方法。而现在,通过服务网格,负载平衡算法现在要考虑延迟和后端实例的可变负载。

服务网格中的服务发现

服务发现是在创建新实例时识别新实例并保存从网络中删除的实例记录的过程。此记录对于负载均衡的功能至关重要,因为请求仅由健康可用的后端实例处理。。

在动态微服务应用程序中,服务发现应该自动发生。这是通过让负责启动和停止系统的工具报告每个事件来完成的。在Kubernetes中,ReplicationController负责实例生命周期。

Sidecar代理

传统上,负载均衡器位于客户机和服务器之间,但现在,高级服务网格将sidecar代理附加到客户端库。这确保每个客户机都能平等地访问负载均衡器。此外,它避免了单点故障,这是传统负载均衡器的最大缺点。

Sidecar代理已经成为实现分布式系统的服务网格的首选方式。

监视服务网格

可见性是成功实现云本机应用程序联网的关键,而服务网格具有多种启用监控的方式。它提供了网络性能指标的组合,如延迟,带宽和正常运行时间监控。它对栈的每一层(主机、容器、容器和集群)都这样做,并为帮助进行故障排除的事件提供详细的日志记录。

分布式跟踪是可见性的关键因素; 它会在每个请求通过网络时为每个请求提供一个ID,并显示每个请求在通过网络时所经历的路径。使用此功能,您可以知道网络的哪些部分或哪些实例较慢或无响应,并了解需要修复的内容。

随着微服务应用程序的复杂性增加,在实例上重现错误并不容易。您需要强大的监视工具来理解请求的路径并识别所有的问题区域(将有不止一个)。

服务网格工具

今天最重要的两种网格工具是LinkerdIstio。Linkerd是第一个采用服务网格方式进行网络连接的工具,并在许多生产工作负载中得到广泛采用。虽然在一年后发布了Istio,但是现在已经添加了一个额外的管理层来分配网络。

Istio将其他服务网格工具视为数据平面,将其自身视为数据平面和控制平面的组合。Istio使用另一种与Linkerd相似的流行工具Envoy作为其数据平面。不过,这些工具之间有很多兼容性,因为Istio也可以使用Linkerd作为其数据平面。Istio带来的是高级的基于策略的管理和抽象层,它为网络带来了更强大的分布式方法。

采取不同的途径,Buoyant 最近宣布了专门研究Kubernetes的Conduit。它提供了一个轻量级,更简单的替代更多功能的Linkerd。它为功能更丰富的Linkerd提供了一个轻量级的、更简单的替代方案。理想情况下,这是为那些在Kubernetes工作的组织提供的,并且想要一个快速的方法来开始,并在之后轻松的管理。

安全性是网络的关键,利用基于策略的安全性的工具之一是Project Calico。Calico不像monoliths那样依赖于整个应用程序的外围防火墙,而是帮助在微服务应用程序中围绕每个服务创建微防火墙。然后,它为您提供细粒度的管理控制,以执行将每个服务与其他服务隔离的安全策略。这样,即使一个服务被破坏了,其他的服务仍然完好无损。

当我们从monoliths迁移到微服务时,如何管理应用程序网络将是成功的关键。与传统的网络模型相比,服务网格是一种更好的选择,理解它应该是现代云本机应用程序的基础。。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是服务网格?
  • 服务网格的作用
    • 服务网格中的负载平衡
      • 服务网格中的服务发现
        • Sidecar代理
        • 监视服务网格
        • 服务网格工具
        相关产品与服务
        服务网格
        服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档