✅听说过ServiceMesh吗?是什么?

✅听说过ServiceMesh吗?是什么?

典型回答

Service Mesh是一个比较新的概念,用于解决微服务架构中的一些问题,如服务发现、服务间通信、负载均衡、安全、监控等。

它是一种新型的架构模式,主要思想是将服务之间的通信从服务代码中抽象出来,并在整个应用中提供一种统一的方式进行管理和控制。

Service Mesh代理通常是以sidecar的方式部署在每个服务实例旁边,它们可以拦截和处理来自服务实例的所有网络流量,并提供各种功能,例如负载均衡、故障转移、熔断、限流、安全、监控等。Service Mesh代理可以提供更细粒度的控制和管理,例如在请求级别进行路由和重试,并且可以实时监控和调整服务的行为。

目前比较流行的Service Mesh产品包括Istio、Linkerd、Envoy等。


Service Mesh一般在异构系统中用的比较多,比如一家公司的技术栈比较杂,既有Java、又有C++,还有Python,PHP等 ,通过Service Mesh可以很好的用同一套架构体系将异构语言的程序员整合到一起。

除了前面说的这些,ServiceMesh在实际应用中,还会用来实现以下以下一些功能:
1.rpc转http,http转rpc,用于调用者不支持rpc的情况

2.真实流量压测,将多机的流量转发到一台机器上

3.精准的流量分析,如vip日志,针对某个用户维度的全链路流量跟踪

4.服务健康状态巡检,分析服务的异常,qps,使用率等信息生成报告,并对比历史数据给出异常告警

5.提供数据通路,服务自身可以通过这个通路上报各种非业务性质的内部状态

6.流量拷贝和镜像,把流量拷贝到测试环境,再通过data mesh提供cow与线上数据环境打通,同时不影响线上业务数据。这样排查问题非常方便

7.加速服务通信性能,mesh agnet位于服务机器内,通过lo与服务通信代理流量作为统一流量入口。lo不会过内核协议栈,大幅度降低cpu压力和耗时。而mesh agent自身收发网络流量也可以使用ebpf或者dpdk这样kernel-bypass技术绕过协议栈协议解析,降低cpu压力和耗时。整体通信成本大幅度降低,使用mesh前耗时10-20ms可降低到几ms。