在过去几个月里,Service Mesh是行业内毋庸置疑的焦点。关于Service Mesh、关于软件架构将来的文章观点,围绕着不一样的技术供应商而高度分化,不过有一点共通的事,对于如何在企业中使用API的快速转换,以及这对于咱们流量的拓扑意味着什么。github
服务API主要是做为将组织外部开发人员与内部系统链接起来的边缘接口,以及将这些内部系统(微服务)绑定到功能总体的“粘合剂”存在的。所以,面向微服务体系结构不可避免会出现数据中心内部通讯增长的状况。tongguo的不可避免的结果之一是数据中心内的 内部通讯将增长。Service Mesh做为一种潜在的解决方案出现了,它经过提供一个不一样的框架来部署现有技术,从而解决了东西部流量增长带来的挑战。编程
正如微服务是一种模式而不是一种特定的技术同样,Service Mesh也是一种模式。区分这二者听起来比实际要复杂得多。若是咱们从面向对象编程(OOP)的角度来考虑这个问题,一个模式描述的是接口,而不是实现。微信
在微服务的背景下,Service Mesh部署模式可以经过sidecar代理,更好地管理东西流量。当咱们拆分系统并使用微服务构建新产品时,咱们流量的拓扑结构也正在从外部为主转向内部流量的持续增加。数据中内心的东西通流量增加,缘于咱们用网络调用替换过去的函数调用,这意味着咱们的微服务必须经过网络来相互通讯。但咱们都知道,网络有多是不可靠的。网络
经过使用不一样的部署模式,Service Mesh但愿解决东西流量增长带来的挑战。虽然对于传统的南北流量来讲,100ms的中间件处理延迟虽然并不理想,但也不是不能接受,不过在东西流量的微服务架构体系中,这样的延迟就不能容忍了。缘由是服务之间从东到西的流量增长会增长延迟,当跨不一样服务的API请求链被执行和返回时,可能会致使700ms的延迟。架构
为了减小这种延迟,引入了与微服务进程一块儿运行的sidecar代理,以删除网络中的额外跳转。Sidecar代理,对应于咱们请求执行路径上的数据平面,也提供了更好的弹性,由于咱们再也不有单点故障。值得注意的是,sidecar代理承担了为咱们的微服务的每一个实例都有一个代理实例的成本,这须要一个很小的占用空间,以最小化资源损耗。框架
从功能的角度来看,API管理产品已经提供了多年来所提供的Service Mesh。诸如可观察性,网络错误处理,健康检查等功能是API管理的标志。这些功能自己并不构成任何新颖的功能,但做为一种模式,Service Mesh引入了在咱们的体系结构中部署这些功能的新方法。运维
为何大多数传统的API管理解决方案不容许这种新的部署选项?由于他们“出生在一个单一的世界”。ide
事实证实,Docker和Kubernetes出现以前构建的API管理解决方案自己就是一个总体,并无被设计成在新兴的容器生态系统中有效工做。传统API管理解决方案所提供的重量级运行时和较慢的性能在传统的边缘API用例中是能够接受的,可是在微服务体系结构中,延迟会随着时间的推移而经过增长东西方向的流量活动而增长。从本质上讲,传统的API管理解决方案最终都过于重量级、难以自动化,而且太慢,没法有效地协调与微服务固有的不断增长的通讯。函数
因为开发人员理解这一点,在容器出现以前诞生的遗留API管理解决方案引入了他们所谓的“微网关”来处理东西流量,避免重写他们现有的、臃肿的、单一的网关解决方案。问题是,这些微网关虽然更轻量,但仍然须要遗留解决方案与它们一块儿运行,以便执行策略强制。这不只意味着在堆栈中保持原来的重型依赖关系,还意味着每一个请求之间的延迟增长。这就不难理解,为何Service Mesh感受上像是一个全新的类别,由于过去的API管理方案已经没法支持需求了。
当咱们在feature-set背景下理解Service Mesh时,咱们会发现它与传统API管理解决方案在南北流量方面所作的工做并无太大的不一样。大多数网络和可见性功能在南北流量和东西流量用例中都是有用的,改变的是部署模式,它使咱们可以将网关/代理做为轻量级、快速的sidecar容器运行,而不是底层的特性集。
Service Mesh提供的特性集是API管理解决方案多年来一直提供的特性集的一个子集,特别是在使网络可靠、服务发现和可观察性方面。Service Mesh的创新之处在于它的部署模式,它可以运行与轻量级sidecar进程/容器相同的特性集。咱们的行业经常会混淆——有时还会推进——一种特定模式等同于底层技术的观点,就像不少关于Service Mesh的讨论同样。
Rainbond是一款以应用为中心的开源PaaS,由好雨基于Docker、Kubernetes等容器技术自主研发,可做为公有云或私有云环境下的应用交付平台、DevOps平台、自动化运维平台和行业云平台,或做为企业级的混合云多云管理工具、Kubernetes容器管理工具或Service Mesh微服务架构治理工具。