Service Mesh作为下一代微服务技术的代名词,成为微服务时代的趋势是必然的。
那么,到底什么是Service Mesh?一言以蔽之:Service Mesh是微服务时代的TCP协议。有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。
提到Service Mesh,就不得不提微服务。根据维基百科的定义:微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(Small Building Blocks)为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。第一代Service Mesh由一系列独立运行的单机代理服务构成,为了提供统一的上层运维入口,演化出了集中式的控制面板,所有的单机代理组件通过和控制面板交互进行网络拓扑策略的更新和单机数据的汇报。这就是以Istio为代表的第二代Service Mesh。
Service Mesh的优点很明显,屏蔽分布式系统通信的复杂性(负载均衡、服务发现、认证授权、监控追踪、流量控制等等),服务只用关注业务逻辑;真正的语言无关,服务可以用任何语言编写,只需和Service Mesh通信即可;对应用透明,Service Mesh组件可以单独升级。
当然,Service Mesh目前也面临一些挑战Service Mesh组件以代理模式计算并转发请求,一定程度上会降低通信系统性能,并增加系统资源开销;Service Mesh组件接管了网络流量,因此服务的整体稳定性依赖于Service Mesh,同时额外引入的大量Service Mesh服务实例的运维和管理也是一个挑战。