66 基于Istio的服务网格架构

你好,我是周志明。

当软件架构演进到基于Kubernetes实现的微服务时,已经能够相当充分地享受到虚拟化技术发展的红利,比如应用能够灵活地扩容缩容、不再畏惧单个服务的崩溃消亡、立足应用系统更高层来管理和编排各服务之间的版本、交互。

可是,单纯的Kubernetes仍然不能解决我们面临的所有分布式技术问题。

在上一讲针对基于Kubernetes架构中的“技术组件”的介绍里,我已经说过,光靠着Kubernetes本身的虚拟化基础设施,很难做到精细化的服务治理,比如熔断、流控、观测,等等;而即使是那些它可以提供支持的分布式能力,比如通过DNS服务来实现的服务发现与负载均衡,也只能说是初步解决了分布式中如何调用服务的问题而已,只靠DNS其实很难满足根据不同的配置规则、协议层次、均衡算法等,去调节负载均衡的执行过程这类高级的配置需求。

Kubernetes提供的虚拟化基础设施,是我们尝试从应用中剥离分布式技术代码踏出的第一步,但只从微服务的灵活与可控这一点来说,基于Kubernetes实现的版本其实比上一个Spring Cloud版本里用代码实现的效果(功能强大、灵活程度)有所倒退,这也是当时我们没有放弃Hystrix、Spring Security OAuth 2.0等组件的原因。