一、什么是service mesh?
在云原生模型中,单个应用程序可能包含数百个服务;,每个服务可能有数千个实例;,并且每个实例可能处于不断变化的状态,因为它们由像Kubernetes这样的协调器动态调度。 这就导致在应用运行过程中,服务通信不仅非常复杂,而且无处不在。 因此,若要保证端到端的性能和可靠性,对服务通信的管理就变得至关重要。
service mesh是用于处理服务与服务之间通信的专用基础设施层, 它负责在包含现代化、云原生应用且拓扑复杂的服务之间可靠地传递请求。 service mesh通过一系列轻量网络代理来实现,这些代理与应用程序代码一起部署,而且对应用程序不感知。 Service Mesh 实际上就是处于 TCP/IP 之上的一个抽象层,它假设底层的 L3/L4 网络能够点对点地传输字节。
二、现状
目前社区Service Mesh的开源解决方案有:Buoyant 公司推出的 Linkerd 和 Google、IBM 等厂商牵头的 Istio。Linkerd 更加成熟稳定些,Istio 功能更加丰富、设计上更为强大,社区相对也更加强大一些。
1)Istio
Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。它是一个完全开源的服务网格,可以透明的分层到现有的分布式应用中,可以集成到任何日志记录平台,遥测或策略系统的API。
官方中文文档地址:https://istio.doczh.cn。
Istio 基本功能
- 流量管理:控制服务之间流量和API调用,使得调用更可靠。
- 可观察性:了解服务之间依赖关系,以及它们之间流量的本质和流向。
- 策略执行:策略应用于微服务之间互动,确保访问策略得以执行(执行是通过配置网格而不是修改程序代码)。
- 服务身份安