当前位置:网站首页>阿里云微服务(四) Service Mesh综述以及实例Istio

阿里云微服务(四) Service Mesh综述以及实例Istio

2022-07-06 09:19:00 几何学家

要提到Service Mesh就不得不提到微服务,根据维基百科的定义

微服务 (Microservices) 是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 (Small Building
Blocks) 为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关
(Language-Independent/Language agnostic) 的 API 集相互通信

随着谷歌三架马车BIGTABLE,Mapreduce,GFS的出现,敲开了分布式的大门,熔断策略、负载均衡、服务发现等的出现,服务根据业务需要一部分通信语义,为了避免每个服务都自己搞一套通信语义,出现了微服务框架,比如说Spring Cloud等框架,他们实现了分布式系统所需要的语义功能,比如服务发现,负载均衡等,一定程度上屏蔽了通信细节,使得开发人员用较少的代码就能实现整个功能无需考虑通信的一些问题。
但是后来,人们又发现微服务框架也并非万能,它主要有下列问题:
1.开发者需要花大量的时间去学习微服务框架的一些细节,因为如果出了问题,不了解框架是很难去排查解决问题的
2.使用微服务的框架需要使用特定的语言,这与微服务最初的特性----和语言无关相违背

为了解决这个问题,第一代Service Mesh应运而生
它将分布式系统的通信抽象为单独的一层,由他来实现负载均衡、服务发现、认证授权、监控追踪、流量控制等分布式系统所需要的功能,作为一个和服务对等的代理服务,和服务部署在一起,由其通过代理之间的通信完成服务之间的请求。
在这里插入图片描述
如图,蓝色的部分是服务网格,如果仅仅看蓝色部分的话,就很容易理解为什么叫“Mesh”了吧~

后来,为了统一管理,人们又衍生出了第二代Service Mesh,衍变出了集中式的控制面板,所有的单机组件通过和控制面板进行网络拓扑策略的更新和数据的汇报,一个非常经典的例子就是Istio

Istio 由两个部分组成:控制平面和数据平面。

数据平面是业务之间的通信平面。如果没有一个服务网格,网络就无法理解正在发送的流量,也无法根据它是哪种类型的流量,或者它从谁那里来,到谁那里去做出任何决定。

服务网格使用代理拦截所有的网络流量,允许根据您设置的配置提供广泛的应用程序感知功能。

代理与您在集群中启动的每个服务一起部署,或者与运行在虚拟机上的服务一起运行。

控制平面获取您所需的配置和服务视图,并动态地对代理服务器进行编程,随着规则或环境的变化更新它们。

使用Istio之前
在这里插入图片描述
使用Istio之后:
在这里插入图片描述

Service Mesh的优缺点:
优点:
1.屏蔽分布式的通信复杂性
2.屏蔽语言
3.对应用层透明,无需关心

缺点:
1.一定程度降低了通信性能
2.服务的整体稳定性依赖Service Mesh

Pattern:Service Mesh

原网站

版权声明
本文为[几何学家]所创,转载请带上原文链接,感谢
https://blog.csdn.net/xiaocaij_icai/article/details/125186856