今天继续来分享一个有趣的面试题,“什么是服务网格”?

服务网格这个概念出来很久了,从2017年被提出来,到2018年正式爆发,很多云厂商和互联网企业都在纷纷向服务网格靠拢。像蚂蚁集团、美团、百度、网易等一线互联网公司,都有服务网格的落地应用。

在我看来呢,服务网格是微服务架构的更进一步升级,它的核心目的是实现网络通信与业务逻辑的分离,使得开发人员更加专注在业务的实现上。

那么基于这个问题,我们来看看普通人和高手的回答。

普通人

嗯?

内心戏:服务网格?服务网格是什么东西?

嗯, 很抱歉,这个问题我不是很清楚。

高手

服务网格,也就是Service Mesh,它是专门用来处理服务通讯的基础设施层。它的主要功能是处理服务之间的通信,并且负责实现请求的可靠性传递。

Service Mesh,我们通常把他称为第三代微服务架构,既然是第三代,那么意味着他是在原来的微服务架构下做的升级。

为了更好的说明Service Mesh,那我就不得不说一下微服务架构部分的东西。

首先,当我们把一个电商系统以微服务化架构进行拆分后,会的到这样的一个架构(如图),其中包括Webserver、payment、inventory等等。

服务网格 service mesh 服务网格是什么意思_程序员

(如图)这些微服务应用,会被部署到Docker容器、或者Kubernetes集群。由于每个服务的业务逻辑是独立的,比如payment会实现支付的业务逻辑、order实现订单的处理、Webserver实现客户端请求的响应等。

服务网格 service mesh 服务网格是什么意思_IT_02

(如图)所以,服务之间必须要相互通信,才能实现功能的完整性。比如用户把一个商品加入购物车,请求会进入到Webserver,然后转发到shopping cart进行处理,并存到数据库。

服务网格 service mesh 服务网格是什么意思_微服务_03

而在这个过程中,每个服务之间必须要知道对方的通信地址,并且当有新的节点加入进来的时候,还需要对这些通信地址进行动态维护。所以,在第一代微服务架构中,每个微服务除了要实现业务逻辑以外,还需要解决上下游寻址、通讯、以及容错等问题。

(如图)于是,在第二代微服务架构下,引入了服务注册中心来实现服务之间的寻址,并且服务之间的容错机制、负载均衡也逐步形成了独立的服务框架,比如主流的Spring Cloud、或者Spring Cloud Alibaba。

服务网格 service mesh 服务网格是什么意思_服务网格 service mesh_04

在第二代微服务架构中,负责业务开发的小伙伴不仅仅需要关注业务逻辑,还需要花大量精力去处理微服务中的一些基础性配置工作,虽然Spring Cloud已经尽可能去完成了这些事情,但对于开发人员来说,学习Spring Cloud,以及针对Spring Cloud的配置和维护,仍然存在较大的挑战。另外呢,也增加了整个微服务的复杂性。

实际上,在我看来,“微服务中所有的这些服务注册、容错、重试、安全等工作,都是为了保证服务之间通信的可靠性”。

于是,就有了第三代微服务架构,Service Mesh。

(如图)原本模块化到微服务框架里的微服务基础能力,被进一步的从一个SDK中演进成了一个独立的代理进程-SideCar

SideCar的主要职责就是负责各个微服务之间的通信,承载了原本第二代微服务架构中的服务发现、调用容错、服务治理等功能。使得微服务基础能力和业务逻辑迭代彻底解耦。

服务网格 service mesh 服务网格是什么意思_程序员_05

之所以我们称Service Mesh为服务网格,是因为在大规模微服务架构中,每个服务的通信都是由SideCar来代理的,各个服务之间的通信拓扑图,看起来就像一个网格形状(如图)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gqQ3VKP-1650692737668)(C:\Users\NINGMEI\AppData\Roaming\Typora\typora-user-images\image-20220319170808603.png)]

Istio是目前主流的Service Mesh开源框架。

以上就是我对服务网格的理解。

结尾

Service Mesh架构其实就是云原生时代的微服务架构,对于大部分企业来说,仍然是处在第二代微服务架构下。

所以,很多小伙伴不一定能够知道。

不过,技术是在快速迭代的,有一句话叫“时代抛弃你的时候,连一句再见也不会说”,就像有些人在外包公司干了10多年

再出来面试,发现很多公司要求的技术栈,他都不会。所以,建议大家要时刻刷新自己的能力,保持竞争优势!

好的,本期的普通人VS高手面试系列的视频就到这里结束了,喜欢的朋友记得点赞收藏。

我是Mic,一个工作了14年的Java程序员,咱们下期再见。

服务网格 service mesh 服务网格是什么意思_微服务_06