序言
服务网格可以最大限度地提高整个组织的开发速度,它支持数千个独立的微服务,这些微服务自动支持扩缩容策略。这本书讨论了Istio的许多其他优势,但它们在很大程度上遵循这个前提。
这就引出了一个中心问题,“什么是服务网格,为什么我需要它?”我经常被问到这个问题,答案并不简单。服务网格不是关于安全或遥测技术的,其关注点也不是一些人声称的其他好处。你也不需要为应用程序自动提供一个服务网格,特别是当应用程序是一个单体架构时。
真正的解决办法是将应用程序与基础设施解耦。Istio是朝着这个方向迈出的第三步。第一步,Docker提供了一种将应用程序(及其依赖库)与运行它的机器分开打包的方法。第二步,Kubernetes使创建自动化服务变得很容易,以帮助实现服务自动伸缩和管理。Docker和Kubernetes共同推动了微服务的实际改造迁移运动。这本书将指导你如何使用Istio实现一个服务网格,以实现第三步:应用程序解耦。
微服务使团队能自主实现更快的整体迭代速度。在理想情况下,你的团队可以在不与其他团队进行深度互动的情况下更新微服务。Istio的顶级目标是在一定范围内实现这一点——使拥有数千个微服务这件事变得容易(谷歌拥有超过100万个微服务)。
但是,实现服务快速迭代并不仅仅是将其与机器分离,服务还必须与共享策略解耦。每个企业都有适用于所有服务的策略,如果需要,我们必须能够快速更改这些策略。传统上,这些策略被嵌入服务中,作为代码的一部分,或者作为服务依赖的库。无论怎样,这些策略都很难被更新并重新执行。
Istio将大量流量控制策略(主要是涉及API的策略)从应用服务转移到服务网格中,通过部署在服务前的代理来实现。当正确完成这一操作时,所有的服务不需要做额外工作就能满足这些策略,而且更改策略也不需要更新应用服务。这就是我们追求的解耦。
在本书中,Christian和Rinor对如何实现将应用程序与基础设施解耦的目标提出了一个清晰的愿景。我希望,你会像我一样喜欢这本书。
——Eric Brewer
基础设施副总裁及Google研究员