Service Mesh 服务网格-宏观介绍

取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。——拉罗什夫科

文前预览

1. 什么是服务网格

2. 服务网格的特点

3. 服务网格架构

4. 服务网格如何工作

  1. 什么是服务网格

简单介绍就是服务之间通信的基础设施,通常通过一组网络代理来实现,这些代理与应用程序代码一起部署,而不需要感知应用程序本身,这样我们可以把包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等放到服务网格中,减轻微服务本身的复杂度。

  1. 服务网格的特点

  • 应用程序间通讯的中间层
  • 轻量级网络代理
  • 应用程序无感知
  • 解耦应用程序的重试/超时、监控、追踪和服务发现
  1. 服务网格架构

picture.image

服务网格作为Sidecar运行,对应用程序来说是透明的,所有应用程序间的流量都会通过它来控制,所以对应用程序流量的控制都可以在 serivce mesh 中实现。

  1. 服务网格如何工作

下面以 Istio 为例讲解服务网格如何在 K8s 中工作。

  1. Istio 将服务请求路由到目的地址,根据其中的参数判断是到生产环境、测试环境还是灰度环境中的服务,所有的这些路由信息可以动态配置,可以是全局配置也可以为某些服务单独配置。

  2. Istio 确认了目的地址后,将流量发送到相应服务,在 K8s 中是 service ,然后 service 会将服务转发给后端的实例(iptables技术)。

  3. Istio 根据它观测到最近请求的延迟时间,选择出所有应用程序的实例中响应最快的实例。

  4. Istio 将请求发送给该实例,同时记录响应类型和延迟数据。

  5. 如果该实例挂了、不响应了或者进程不工作了, Istio 将把请求发送到其他实例上重试。

  6. 如果该实例持续返回error, Istio 会将该实例从负载均衡池中移除,稍后再周期性的重试。

  7. 如果请求的截止时间已过, Istio 主动以失败的方式结束该请求,而不是再次尝试添加负载。

  8. Istio 以metric和分布式追踪的形式捕获上述行为的各个方面,这些追踪信息将发送到集中metric系统。

  9. 小结


本文从服务网格的定义起步,逐渐讨论了它的特点,架构以及如何工作的。具体细节还需进一步的学习和探究。

  1. 参考

  1. https://philcalcado.com/2017/08/03/pattern\_service\_mesh.html

7 关注公众号

微信公众号: 堆栈future

picture.image

扫我关注

0
0
0
0
评论
未登录
暂无评论