取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。——拉罗什夫科
文前预览
1. 什么是服务网格
2. 服务网格的特点
3. 服务网格架构
4. 服务网格如何工作
1. 什么是服务网格
简单介绍就是服务之间通信的基础设施,通常通过一组网络代理来实现,这些代理与应用程序代码一起部署,而不需要感知应用程序本身,这样我们可以把包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端认证等放到服务网格中,减轻微服务本身的复杂度。
2. 服务网格的特点
- 应用程序间通讯的中间层
- 轻量级网络代理
- 应用程序无感知
- 解耦应用程序的重试/超时、监控、追踪和服务发现
3. 服务网格架构
服务网格作为Sidecar运行,对应用程序来说是透明的,所有应用程序间的流量都会通过它来控制,所以对应用程序流量的控制都可以在serivce mesh中实现。
4. 服务网格如何工作
下面以Istio为例讲解服务网格如何在K8s中工作。
- Istio将服务请求路由到目的地址,根据其中的参数判断是到生产环境、测试环境还是灰度环境中的服务,所有的这些路由信息可以动态配置,可以是全局配置也可以为某些服务单独配置。
- 当Istio确认了目的地址后,将流量发送到相应服务,在K8s中是service,然后service会将服务转发给后端的实例(iptables技术)。
- Istio根据它观测到最近请求的延迟时间,选择出所有应用程序的实例中响应最快的实例。
- Istio将请求发送给该实例,同时记录响应类型和延迟数据。
- 如果该实例挂了、不响应了或者进程不工作了,Istio将把请求发送到其他实例上重试。
- 如果该实例持续返回error,Istio会将该实例从负载均衡池中移除,稍后再周期性的重试。
- 如果请求的截止时间已过,Istio主动以失败的方式结束该请求,而不是再次尝试添加负载。
- Istio以metric和分布式追踪的形式捕获上述行为的各个方面,这些追踪信息将发送到集中metric系统。
5. 小结
本文从服务网格的定义起步,逐渐讨论了它的特点,架构以及如何工作的。具体细节还需进一步的学习和探究。
6. 参考
7 关注公众号
微信公众号:堆栈future