Service Mesh是微服务架构中的一种重要实现方式。它通过在服务之间部署一层代理(Sidecar)来管理微服务 间的网络通信。主要功能包括:
1. 流量管理:可根据规则路由流量,并进行重试、超时、熔断等操作。
2.Observable性:通过 metrics、tracing 和 logs 提供运行时的可观察性。
3. 安全性:支持 mTLS 等加密通信方式。
4. 一致性:支持基于服务或用户的流量治理,保证系统的高可用性和一致性。
常见的Service Mesh解决方案有:
1. Istio:由谷歌推出的Service Mesh框架,功能最为强大。
2. Linkerd:由Buoyant推出,轻量级、专注于基础功能。
3. Consul Connect:HashiCorp推出,依赖Consul进行服务发现。
4. AWS App Mesh:Amazon推出的Service Mesh解决方案,集成于AWS环境。
如何将流量转发到 Sidecar 中:
第一种,使用 iptables 的方式来实现流量透明的转发,而 Istio 就默认了使用 iptables 来实现数据包的转发。
另外一种方式:轻量级客户端。在这种方式下,RPC 客户端会通过配置的方式,知道 Sidecar
的部署端口,然后通过一个轻量级客户端,将调用服务的请求发送给 Sidecar。Sidecar 在转发
请求之前,先执行一些服务治理的策略,比如,从注册中心中查询到服务节点信息并且缓存起来,
然后从服务节点中,使用某种负载均衡的策略选出一个节点等等。请求被发送到服务端的 Sidecar
上后,然后在服务端记录访问日志和分布式追踪日志,再把请求转发到真正的服务节点上。
此文章为6月Day4学习笔记,内容来源于极客时间《高并发系统设计 40 问》