Service Mesh 的由来

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: Service Mesh 的由来

Service Mesh


Service Mesh 是微服务时代的 TCP 协议


时代1:原始通信时代

image.png

通信底层需要底层能够传输字节码和电子信号的物理层完成, 在 TCP 协议出现之间,需要服务自己处理通信的连接,丢包,乱序,重试等一系列问题。也就是说服务实现过程中,需要考虑网络传输的问题。


TCP 时代

image.png

为了避免每个服务都需要自己实现一套相似都网络传输处理逻辑, 于是有了 TCP 协议, 解决了网络传输过程中的流量控制问题,把网络传输从服务实现中抽取出来。


微服务时代


TCP 出现之后,机器之间的网络通信不再是问题,但是随着分布式系统, BigTable/MapReduce 等分布式系统蓬勃发展, 分布式系统对通信提出了新对通信语义,入熔断策略, 负载均衡, 服务发现,认证和鉴权,trace和监控, 于是便有了微服务。第一代微服务在自己对服务中实现服务发现和熔断。

image.png

微服务2.0

为了避免每个服务自己实现一套分布式通信对语义功能, 出现了一些微服务框架,Spring Cloud, 这些框架实现了分布式系统的服务发现,熔断,负载均衡等。使得开发人员使用少量的框架代码就能够实现分布式系统。

image.png

Service 1.0

微服务解决了服务发现,负载均衡,服务熔断等问题,但是也有了一些新等问题。

  • 微服务框架复杂,要掌握也不是一件容易的事情,业务开发人员应该专注业务本身,而不是服务框架,实际使用过程中,要解决框架出现的问题也比较复杂。
  • 语言兼容问题,微服务的一个重要特性就是语言无关, 也就是说,服务可以用 Go 开发,也可以用 Java 开发。但是这些框架往往都有自己都语言要求, 一般是服务应用 Java 开发。很难兼容其他语言。
  • 版本升级问题,框架一般是采用 Lib 包依赖的方式。这样复杂项目依赖问题会十分棘手。框架库的升级无法对服务透明,往往框架升级会导致服务升级。

如何解决这个问题,采用代理思想解决。把分布式服务通信抽象为一层,这一层中实现负载均衡。服务发现,认证鉴权,监控追踪,流量控制等。作为一个以服务对等的代理服务存在和服务部署在一起。接管服务的流量,通过代理之间的通信完成服务之间的通信。

全局部署图如下,像一个网格, 蓝色部分是代理服务,绿色部分是服务本身。

image.png

暂时去掉服务,这样有了 Service Mesh 服务网格

image.png

Service Mesh 2.0


Service 1.0 由一系列服务代理构成, 为了提供统一的运维入口,演化成了统一的集中式管理面板。所有的单机代理组件通过和控制面板之间交互进行网络拓扑策略的更新和单机数据的汇报。

image.png

控制面板的全局部署视图

image.png

Service Mesh 有没有问题?


服务网格是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,服务网格保证请求在这些拓扑中可靠地穿梭。在实际应用当中,服务网格通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但对应用程序透明。

优点总结:

  • 基础设施,服务网格是一个基础设施,请求在拓扑之间可靠传输
  • 网络代理,屏蔽了分布式系统通信的复杂性(服务发现,服务熔断, 认证鉴权, 流量控制,监控追踪)
  • 与语言无关,服务可以用任何语言编写
  • 应用透明,对服务是透明对存在,升级不会导致服务升级

挑战:

  • 以代理的方式进行通信,降低通信性能
  • Service Mesh 接管了网络流量, 对 Service Mesh 稳定性要求高, 对服务运维和管理也是挑战。
相关文章
|
6月前
|
负载均衡 监控 Cloud Native
|
6月前
|
Kubernetes 网络协议 数据库
在Service Mesh内访问网格外的服务
阿里云服务网格ASM提供了访问外部服务的三种方式,包含设置外部服务访问策略、配置ServiceEntry和设置拦截对外访问的网段。本文介绍如何在服务网格ASM上访问外部服务。
98 0
|
6月前
|
负载均衡 监控 Cloud Native
Service Mesh的实现原理
【5月更文挑战第6天】Service Mesh是一种针对云原生应用的服务治理技术,通过轻量级网络代理(SideCar)实现服务间的通信和可靠性保证,无需代码集成。它解决了跨语言服务调用和云原生服务治理的问题。
|
6月前
|
负载均衡 Dubbo Java
Service Mesh 的基本模式
【5月更文挑战第16天】Service Mesh分为两种模式:Sidecar和第二代Service Mesh。
|
6月前
|
负载均衡 监控 Cloud Native
Service Mesh 的实现原理
【2月更文挑战第20天】
|
运维 监控 安全
什么是service mesh?
什么是service mesh?
|
Rust Kubernetes 负载均衡
Service Mesh 体系解析
Service Mesh(服务网格)诞生于云原生生态领域的潮流中,虽然大家对这一技术生态充满不确定性,甚至难以接受,然而,如果我们消除外面的“杂声”,细心洞察里面的细节,或许能有不一样的收获,毕竟,所有新技术的出现是为了解决业务痛点,而非是为了一些没用意义的炒作。
367 0
|
监控 安全 Serverless
AAS即As-a-Service的概念
列举一些接触到的AAS即As-a-Service的概念
489 0
|
负载均衡 Kubernetes Cloud Native
对 Service Mesh 望而却步?可能都没理解这一点
Service Mesh 发展已经有 6-7年的时间,很多人对 Service Mesh 只停留在知道的水平上,特别是很多技术人第一次接触到 Service Mesh,看到服务网格的解释,看到 Istio 的架构,对这门技术仍然云里雾里。实际上,劝退大多数人的不是技术,而是概念本身。
201 0
对 Service Mesh 望而却步?可能都没理解这一点
|
Kubernetes 监控 Devops
Service Mesh 介绍| 学习笔记
快速学习 Service Mesh 介绍