来自IBM公司的Animesh Singh和Tommy Li在近期举行的北美2017 KubeCon和CloudNativeCon开发者大会上呈现了关于如何使用Istio来实现微服务弹性和容错的演讲。
微服务架构为我们带来了高可伸缩性,微服务生态系统包含了大量分布式服务,需要在各个层面进行故障管理,实现弹性和容错。我们还要实现服务级别的访问控制和速率限定。服务网格架构模式将与弹性相关的特性抽离出来,独立于应用程序和框架,以此来实现弹性和容错。
Singh谈到了容器栈,Docker和Kubernetes处于OSI模型的第5层,是编配和调度服务模型的一部分。他还介绍了IBM的云容器服务(Cloud Container Service),可用于管理Kubernetes容器。Kubernetes是微服务的最佳选择,它的容器编配包括了调度、集群管理和服务发现特性,便于部署和管理微服务。
Singh和Tommy列出了构建反应式弹性微服务需要满足的部分要求:
- 故障避免
- 故障隔离
- 故障检测
- 恢复
服务网格实际上就是存在于服务之间的网络,为微服务带来了弹性。这种轻量级的边车(sidecar)负责管理服务之间的流量。
Istio是服务网格的一种实现,可用于部署具有弹性的微服务。演讲者介绍了Istio的一些相关概念,如Pilot、Mixer和Proxy,以及控制面板和数据面板。Istio在不要求应用程序修改任何代码的情况下为应用程序带来了容错能力。容错特性包括超时、无超时重试、回路断路器、健康检测、AZ负载均衡以及系统性故障注入。
他们介绍了如何使用Istio来实现微服务的弹性,如分流和引流(基于内容的引流)。他们在演讲中进行应用程序演示。该应用程序包含了一个自动生成的控制面板,借助Istio的故障注入特性手动创建故障场景。他们还模拟了微服务故障,以及从服务网格中观察服务的响应情况。
Singh和Tommy总结了几种基于Kubernetes和微服务的开发者模式:
- 基于Kubernetes的Spring Boot微服务
- 基于Kubernetes的Java MicroProfile微服务
- 在Kubernetes上使用Istio来管理微服务流量
- 使用Istio创建具有弹性和容错能力的微服务
更多有关容器编配和开发者模式的内容可访问他们的网站。
查看英文原文:Microservices Resiliency and Fault Tolerance Using Istio and Kubernetes
转自 http://www.infoq.com/cn/news/2018/01/microservices-resiliency-istio