当前位置:网站首页>什么是服务网格?在微服务体系中又是如何使用的?
什么是服务网格?在微服务体系中又是如何使用的?
2022-08-08 17:23:00 【Tom弹架构】
有一位粉丝问私信问我的面试题,他说“什么是服务网格”?
服务网格这个概念出来很久了,从 2017 年被提出来,到 2018 年正式爆发,很多云厂商和互联网企业都在纷纷向服务网格靠拢。像蚂蚁集团、美团、百度、网易等一线互联网公司,都有服务网格的落地应用。
今天我给大家来详细聊一聊。
1、服务网格
我认为,服务网格是微服务架构的更进一步升级,它的核心目的是实现网络通信与业务逻辑的分离,使得开发人员更加专注在业务的实现上。
服务网格,也就是 Service Mesh,它是专门用来处理服务通讯的基础设施层。它的主要功能是处理服务之间的通信,并且负责实现请求的可靠性传递。Service Mesh,我们通常把他称为第三代微服务架构,既然是第三代,那么意味着他是在原来的微服务架构下做的升级。
2、演变历史
为了更好的说明 Service Mesh,那我就不得不说一下微服务架构部分的东西。首先,当我们把一个电商系统以微服务化架构进行拆分后,会的到这样的一个架构,其中包括 WebServer、Payment、inventory 等等。
这些微服务应用,会被部署到 Docker 容器、或者 Kubernetes 集群。由于每个服务的业务逻辑是独立的,比如 payment 会实现支付的业务逻辑、order 实现订单的处理、Webserver 实现客户端请求的响应等。
所以,服务之间必须要相互通信,才能实现功能的完整性。比如用户把一个商品加入购物车,请求会进入到 Webserver,然后转发到 shopping cart 进行处理,并存到数据库。
而在这个过程中,每个服务之间必须要知道对方的通信地址,并且当有新的节点加入进来的时候,还需要对这些通信地址进行动态维护。所以,在第一代微服务架构中,每个微服务除了要实现业务逻辑以外,还需要解决上下游寻址、通讯、以及容错等问题。
于是,在第二代微服务架构下,引入了服务注册中心来实现服务之间的寻址,并且服务之间的容错机制、负载均衡也逐步形成了独立的服务框架,比如主流的Spring Cloud、或者 Spring Cloud Alibaba。
在第二代微服务架构中,负责业务开发的小伙伴不仅仅需要关注业务逻辑,还需要花大量精力去处理微服务中的一些基础性配置工作,虽然 Spring Cloud 已经尽可能去完成了这些事情,但对于开发人员来说,学习 Spring Cloud,以及针对Spring Cloud 的配置和维护,仍然存在较大的挑战。另外呢,也增加了整个微服务的复杂性。
实际上,我认为,“微服务中所有的这些服务注册、容错、重试、安全等工作,都是为了保证服务之间通信的可靠性”。于是,就有了第三代微服务架构,Service Mesh。
原本模块化到微服务框架里的微服务基础能力,被进一步的从一个 SDK 中演进成了一个独立的代理进程-SideCar。
SideCar 的主要职责就是负责各个微服务之间的通信,承载了原本第二代微服务架构中的服务发现、调用容错、服务治理等功能。使得微服务基础能力和业务逻辑迭代彻底解耦。
之所以我们称 Service Mesh 为服务网格,是因为在大规模微服务架构中,每个服务的通信都是由 SideCar 来代理的,各个服务之间的通信拓扑图,看起来就像一个网格形状。
Istio 是目前主流的 Service Mesh 开源框架。
以上就是我对服务网格的理解。Service Mesh 架构其实就是云原生时代的微服务架构,对于大部分企业来说,仍然是处在第二代微服务架构下。
所以,很多小伙伴不一定能够知道。不过,技术是在快速迭代的,有一句话叫“时代抛弃你的时候,连一句再见也不会说”,就像有些人在外包公司干了 10 多年再出来面试,发现很多公司要求的技术栈,他都不会。所以,建议大家要时刻刷新自己的能力,保持竞争优势!
我是被编程耽误的文艺Tom,关注我,面试不再难!
最后,我把往期分享的面试题全部整理成了1份10W字的文档,希望能够以此来提高各位粉丝的通过率
完整版面试资料和答案以及PDF文档 :
扫描下方名片领取!
↓ ↓ ↓
边栏推荐
- 中金证券股票开户流程是什么,我需要准备身份证吗,安全吗
- Tensorflow教程(二)——基本概念与搭建流程
- Tensorflow教程(三)——获取数据 feed 和 fetchn
- 在指南针炒股软件中的指标靠谱吗?安全吗?
- XDOJ-统计正整数个数
- Are Huishang Futures official and reliable?Is it safe to open an account in Huishang Futures?
- laravel database: query builder
- mysql进阶(二十九)常用函数汇总
- 钱放在股票账户安全吧?
- How to set timed network disconnection to assist self-discipline in win10
猜你喜欢
【教程2】疯壳·ARM功能手机-测试程序介绍
WPF StepBar
uri (url urn 的区别)
1.初识MySQL数据库
leetcode:313. 超级丑数
Fluorescein-PEG-CLS,胆固醇-聚乙二醇-荧光素用于缩短包封周期
[Paper Reading] RAL 2022: Receding Moving Object Segmentation in 3D LiDAR Data Using Sparse 4D Convolutions
【20210923】Choose the research direction you are interested in?
Open source summer | I have nothing to do during the epidemic, I made a button display box special effect to display my blog
Acwing Week 63 [Unfinished]
随机推荐
C. Palindromifier
一、搭建django自动化平台(实现一键执行sql)
目标检测、目标跟踪、图像分类最新进展
leetcode:313. 超级丑数
L2-025 分而治之 (25 分)
【教程2】疯壳·ARM功能手机-测试程序介绍
企业“数字化转型”成功的2个必备条件!
L2-022 重排链表 (25 分)(模拟链表)
Is it safe to open an account with CICC Wealth?How does it work?
arm交叉编译
Charles MOCK 数据 htpps代理
activemq 消息头、消息体、消息属性
五、jmeter脚本的基本构成&断言
MySQL 表的增删查改
Are Huishang Futures official and reliable?Is it safe to open an account in Huishang Futures?
L2-009 抢红包 (25 分)(结构体+自定义排序)
Tensorflow教程(四)——MNIST项目入门
C1. Pokémon Army (easy version)
测试/开发程序员停滞不前,倦怠怎么办?突破各种失败和挫折......
以数治企,韧性成长,2022 年中国 CIO 数字峰会成功举行