究竟谁才需要Service Mesh?
发布时间:2021-12-07 10:50:57 所属栏目:云计算 来源:互联网
导读:随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词Service Mesh(现在来说已经不算新了)。 对于一项新技术的学习,总归绕不过两个问题: 它是什么? 为什么需要它? 本文将围绕这两个问题进行展开,期望对Service Mesh有一个综述性的了解。
随着云原生时代的来临,使用微服务架构的朋友们开始听到一个新的技术名词——Service Mesh(现在来说已经不算新了)。 对于一项新技术的学习,总归绕不过两个问题: 它是什么? 为什么需要它? 本文将围绕这两个问题进行展开,期望对Service Mesh有一个综述性的了解。 最后,引发一个核心的思考: 到底谁才需要Service Mesh? 1、什么是Service Mesh Service Mesh 在国内被翻译「服务网格」。 目前比较公认的是Buoyant公司的CEO William Morgan给出的定义: Service Mesh是用于处理服务到服务通信的专用基础架构层。Cloud Native有着复杂的服务拓扑,它负责可靠地传递请求。实际上,Service Mesh通常作为一组轻量级网络代理实现,这些代理与应用程序代码部署在一起,应用程序无感知。 这个定义看起来有些复杂,我们抽取其中的关键词,可能会更加清晰一些: 服务到服务通信的基础架构层(定位) 在复杂的服务拓扑中,可靠地传递请求(目标) 轻量级网络代理实现(实现) 应用程序无感知(特点) 从定位、目标、特点来看,我们联想到了什么呢? 没错,就是 TCP/IP协议! 对于云原生下的微服务,Service Mesh就是等同于 TCP/IP协议 一样的基础设施,负责服务之间的网络调用、路由管理、限流和监控等。 使用了Service Mesh,我们就不需要在应用程序编写时,去关注服务间调用的框架适配、升级等问题,比如Spring Cloud、Dubbo等。就像我们过去编写应用程序时一样,基本不会再关注TCP/IP这一层的问题。 另外,从实现角度来看,这个轻量级的网络代理实现,往往以Sidecar(边车)来称呼(其实就是Proxy)。 我们看下Service Mesh的架构。 「服务网格」分为两个核心部分: 数据平面。以Sidecar作为数据平面节点,对应用来说完全透明,所有流量进出都会经过Sidecar。 控制平面。集中式的控制平面,提供统一的上层运维入口,所有的Sidecar代理组件通过和控制平面交互进行网络拓扑策略的更新和单机数据的汇报。 2、为什么需要Service Mesh 一项新技术的产生与引入,必然是为了解决已有的问题。引入Service Mesh的原因,也是为了解决已有微服务框架存在的问题。 为了更深刻地理解Service Mesh解决的问题,我们结合Phil Calçado的文章《Pattern: Service Mesh》,梳理下服务开发模式和Service Mesh技术的演化过程。 原始通信时代 1.0 在原始通信时代(TCP协议出现前),服务需要自己处理网络通信所面临的丢包、乱序、重试等一系列Flow Control问题。所以在业务逻辑代码之外,还需要考虑对网络传输问题进行处理。 (编辑:随州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |