当前位置:网站首页>阿里云微服务(四) 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
边栏推荐
- Halcon knowledge: gray_ Tophat transform and bottom cap transform
- KF UD分解之伪代码实现进阶篇【2】
- FairyGUI按钮动效的混用
- Lean product development - Lean Software Development & lean product development
- 记录:newInstance()过时的代替方法
- C code implementation of robust estimation in rtklib's pntpos function (standard single point positioning spp)
- Compile GDAL source code with nmake (win10, vs2022)
- Usage differences between isempty and isblank
- 错误:排序与角标越界
- Fgui project packaging and Publishing & importing unity & the way to display the UI
猜你喜欢
几道高频的JVM面试题
记录:初次cmd启动MySQL拒接访问之解决
Fgui project packaging and Publishing & importing unity & the way to display the UI
Record: the solution of MySQL denial of access when CMD starts for the first time
FairyGUI按钮动效的混用
FairyGUI增益BUFF數值改變的顯示
[算法] 剑指offer2 golang 面试题3:前n个数字二进制形式中1的个数
[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组
[algorithm] sword finger offer2 golang interview question 3: the number of 1 in the binary form of the first n numbers
[算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
随机推荐
Role movement in the first person perspective
WSL common commands
[算法] 剑指offer2 golang 面试题1:整数除法
KF UD decomposition pseudo code implementation advanced [2]
XV Function definition and call
2年经验总结,告诉你如何做好项目管理
【无标题】
[algorithm] sword finger offer2 golang interview question 10: subarray with sum K
Rt-ppp test using rtknavi
Comparative analysis of the execution efficiency of MySQL 5.7 statistical table records
All in one 1405: sum and product of prime numbers
Error: symbol not found
堆排序【手写小根堆】
2022 National Games RE1 baby_ tree
(core focus of software engineering review) Chapter V detailed design exercises
服务未正常关闭导致端口被占用
错误:排序与角标越界
Basic DOS commands
[Chongqing Guangdong education] Shandong University College Physics reference materials
[算法] 剑指offer2 golang 面试题12:左右两边子数组的和相等