一文读懂Service Mesh:服务网格简史
前言
传统模式下,开发和运维会有比较清晰的边界,开发人员负责服务运行稳定,运维人员负责服务运行的基础设施稳定。而进入到云原生时代,特别是容器化和 Service Mesh 落地之后,服务框架、服务治理、灰度发布等稳定性密切相关的能力都作为基础设施下沉了,开发和运维的边界开始变得模糊。所以,企业 IT 人员的职责也应该相应的进行重新划分,也就是说开发人员也应该具备运维知识,Service Mesh 亦应该了解并熟悉。
造就 Service Mesh 诞生的因素有很多,正所谓”横看成岭侧成峰,远近高低各不同”,所以从不同的角度去分析,你会发现 Service Mesh 有不一样的内涵。如果你熟悉 TCP/IP 协议,不妨将 Service Mesh 看做 TCP/IP 之上的又一层封装;如果你搞大数据开发、Web 微服务开发,那么你可以把它当做具备分布式通信原语的 "高级版Socket"。
1、单词 "Mesh" 的解读
Mesh就是防盗网的意思。因为我家住在一楼,所以对防盗网深有体会,其英文表述为:
The ground-floor windows are obscured by wire mesh.
一楼的窗户装有防盗网。
正因为我对防盗网深有体会,所以促使我花费了很多的时间和精力关注 Service Mesh 技术的发展动态。虽然这种联想看起来牵强,但是对学习非常有帮助,犹如由 "路由" 可以想象到"陆游",一下子拉近了距离,让人对 "路由" 更能乐意亲近。
2、什么是 Mesh 网络?
无线Mesh技术是一种与传统无线网络完全不同的新型无线网络技术。在传统的wlan中,每个客户端均通过一条与接入点(AP)相连的无线链路访问网络,用户若要进行相互通信,必须首先访问一个固定的AP,这种网络结构称为单跳网络。而在无线Mesh网络中,任何无线设备节点都可同时作为路由器,网络中的每个节点都能发送和接收信号,每个节点都能与一个或多个对等节点进行直接通信,如下图所示:
这种结构的最大好处在于:如果最近的AP由于流量过大而导致拥塞的话,数据可以自动重新路由到一个通信流量较小的邻近节点进行传输。依此类推,数据包还可以根据网络的情况,继续路由到与之最近的下一个节点进行传输,直到到达最终目的地为止。这样的访问方式就是多跳访问,非常灵活。
3、Service Mesh 诞生的历史背景
Service Mesh的出现是历史发展的必然,Service Mesh诞生之后,再去分析它的来龙去脉,你会发现它像很多技术栈的升华:
(1)从网络协议的角度来看,Service Mesh 是在 TCP/IP 之上的一层抽象网络模型。在某种程度上,Service Mesh 跟TCP/IP类似。
(2)从大数据的发展脚步来说,Service Mesh 规范了布式系统特有的通信语义,例如:负载均衡、节点(服务)发现、认证和授权、跟踪和监控等等。Service Mesh 实现了分布式系统通信需要的各种通用语义功能,因此一定程度上屏蔽了这些通信细节,使得开发人员使用较少的框架代码就能开发出健壮的分布式系统。
4、什么是Service Mesh?
Service Mesh是专用的基础设施层,用于使服务之间通信安全,快速和可靠。正如TCP协议栈抽象了在网络端点之间可靠地传递字节的机制一样,Service Mesh抽象了在服务之间可靠地传递请求的机制。与TCP一样,Service Mesh不关心实际有效负载或其编码方式。
Service Mesh作为单独层的概念与云原生应用程序的兴起有关。在云原生模型中,单个应用程序可能包含数百个服务,每个服务可能有数千个实例,并且每个实例可能处于不断变化的状态,因为它们由像Kubernetes这样的协调器动态调度。这就导致在应用运行过程中,服务通信不仅非常复杂,而且无处不在。 因此,若要保证端到端的性能和可靠性,对服务通信的管理就变得至关重要。