Java进阶专题(二十八) Service Mesh初体验

​ ⽬前,微服务的架构⽅式在企业中得到了极⼤的发展,主要原因是其解决了传统的单体架构中存在的问题。当单体架构拆分成微服务架构就可以⾼枕⽆忧了吗? 显然不是的。微服务架构体系中同样也存在很多的挑战,

​ ⽐如:原来的单个应⽤拆分成了许多分散的微服务,它们之间相互调⽤才能完成⼀个任务,而⼀旦某个过程出错(组件越多,出错的概率也就越⼤),就⾮常难以排查。

​ 如果⽤户请求的响应太慢,我们就需要知道到底哪些地⽅⽐较慢?整个链路的调⽤各阶段耗时是多少?哪些调⽤是并发执⾏的,哪些是串⾏的?这些问题需要我们能⾮常清楚整个集群的调⽤以及流量情况。

​ 微服务拆分成这么多组件,如果单个组件出错的概率不变,那么整体有地⽅出错的概率就会增⼤。服务调⽤的时候如果没有错误处理机制,那么会导致⾮常多的问题。

​ 应⽤数量的增多,对于⽇常的应⽤发布来说也是个难题。应⽤的发布需要⾮常谨慎,如果应⽤都是⼀次性升级的,出现错误会导致整个线上应⽤不可⽤,影响范围太⼤。

​ 很多情况我们需要同时存在不同的版本,使⽤AB 测试验证哪个版本更好。

​ 如果版本升级改动了API,并且互相有依赖,那么我们还希望能⾃动地控制发布期间不同版本访问不同的地址。这些问题都需要智能的流量控制机制。

​ 为了保证整个系统的安全性,每个应⽤都需要实现⼀套相似的认证、授权、HTTPS、限流等功能。

等等一系列问题,那么有没有什么方案可以解决这些问题?没错,Service Mesh就是为了解决以上问题才出的。

什么是Service Mesh

Service Mesh主要解决的问题就希望开发⼈员对于业务的聚焦,服务发现、服务注册、负载均衡等对于开发⼈员透明,可以更加专注业务逻辑的实现。

如果将为微服务提供通信服务的这部分逻辑从应⽤程序进程中抽取出来,作为⼀个单独的进程进⾏部署,并将其作为服务间的通信代理,可以得到如下图所示的架构:

Java进阶专题(二十八) Service Mesh初体验

Sidecar,翻译成中⽂是边⻋,⾮常的形象。

当服务⼤量部署时,随着服务部署的Sidecar代理之间的连接形成了⼀个如下图所示的⽹格,该⽹格成为了微服务的通讯基础设施层,承载了微服务之间的所有流量,被称之为Service Mesh(服务⽹格)。

Java进阶专题(二十八) Service Mesh初体验

服务⽹格⽤来描述组成这些应⽤程序的微服务⽹络以及它们之间的交互。随着服务⽹格的规模和复杂性不断的增⻓,它将会变得越来越难以理解和管理。它的需求包括服务发现、负载均衡、故障恢复、度量和监控等。服务⽹格通常还有更复杂的运维需求,⽐如A/B 测试、⾦丝雀发布、速率限制、访问控制和端到端认证。所有就有了二代Service Mesh出现:

Java进阶专题(二十八) Service Mesh初体验

为了更⽅便地对服务⽹格中的代理进⾏统⼀集中控制,在服务⽹格上增加了控制⾯组件。

Java进阶专题(二十八) Service Mesh初体验

第一代Service Mesh由一系列独立运行的单机代理服务构成,为了提供统一的上层运维入口,演化出了集中式控制面板,所有的单机代理组件通过和控制面板交互进行网络拓扑策略的更新和单机数据的汇报。这就是以Istio为代表的第二代Service Mesh。

Service Mesh的定义

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

关键名词解释:

基础设施层、请求可在这些拓扑中可靠地穿梭:这两个词加起来描述了Service Mesh的定位和功能,是不是似曾识?没错,你一定想到了TCP;

网络代理:这描述了Service Mesh的实现形态;

对应用透明:这描述了Service Mesh的关键特点,正是由于这个特点,Service Mesh能够解决以Spring Cloud为代表的第二代微服务框架所面临的三个本质问题;

Service Mesh优点

屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑;

真正的语言无关,服务可以用任何语言编写,只需和Service Mesh通信即可;

对应用透明,Service Mesh组件可以单独升级;

Service Mesh目前也面临一些挑战

Service Mesh组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销;

Service Mesh组件接管了网络流量,因此服务的整体稳定性依赖于Service Mesh,同时额外引入的大量Service Mesh服务实例的运维和管理也是一个挑战;

好了到这里,我相信你应该大概知道Serive Mesh到底是个什么思想了,下面我看看基于Service Mesh思想的产品有哪些?

Service Mesh 产品 CNCF

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjfpg.html