服务网格技术Istio是云原生(Cloud Native)时代的产物,是云原生应用的新型架构模式,而云原生又是云计算产业发展的新制高点。云计算是近 10 年左右流行的概念,但实际上,云已经走了很长一段路。
云的概念可以追溯到 20世纪 60年代。约翰·麦卡锡教授在 1961年麻省理工学院的百年庆典上说:“计算机也许有一天会被组织成一种公用事业,就像电话系统是一种公用事业一样。每个订阅者只需为实际使用的容量付费,就可以访问到具有非常庞大的系统的计算资源……”。第一个具有云特征的服务出现在 20 世纪 90 年代,当时,电信公司从以前主要提供点对点的专用数据电路服务,转到提供服务质量相当但成本较低的虚拟专用网络(VPN)服务。VPN服务能够通过切换流量和平衡服务器的使用,更有效地使用整体的网络带宽。电信公司开始使用云符号来表示提供商和用户之间的责任界面。在自 20 世纪60年代以来流行的分时模式的基础上,服务提供商开始开发新的技术和算法,优化计算资源和网络带宽的分布,用户可以按需获取高端计算能力。
2006年,亚马逊首次推出弹性计算云(EC2)服务,云计算的新时代开始了。两年后,第一个用于部署私有云和公有云的开源软件 OpenNebula 问世;谷歌则推出了应用引擎的测试版;Gartner 公司也首次提到了云的市场机会。2010 年,Rackspace 和 NASA 联手创建了OpenStack开源云计算平台,企业首次可以在标准硬件上构建消费者可以使用的云。甲骨文、IBM、微软等众多公司也相继发布云产品,云市场开始进入快速增长期。
云计算使企业摆脱了复杂而昂贵的 IT 基础设施建设和维护,因此,当时的云计算使用以资源(虚拟机、网络和存储)为主,也就是基础设施即服务(IaaS)。企业主要关心怎样将现有的 IT 基础架构迁移到云上,但在关键应用上对云还是敬而远之。随着云的成熟,包括Netflix和Airbnb在内的众多雄心勃勃的互联网初创公司开始把云计算变成了新商业模式,直接在云上构建企业的关键应用和业务;与此同时,在技术上,人们开始将Linux 容器与基于微服务架构的应用结合起来,实现云应用真正意义上的可扩展、高可靠和自动恢复等能力,于是云原生计算诞生了。
云原生的崛起源于企业应用的快速发展和弹性可扩展的需求。在云原生时代最具代表性和历史性的技术是Kubernetes容器应用编排与管理系统,它提供了大规模和高效管理云应用所需的自动化和可观测性。Kubernetes的成功源于应用容器的兴起,Docker第一次真正使得容器成为大众所喜欢和使用的工具。通过对应用的容器化,开发人员可以更轻松地管理应用程序的语言运行环境及部署的一致性和可伸缩性,这引发了应用生态系统的巨变,极大地减小了测试系统与生产系统之间的差异。在容器之上,Kubernetes提供了跨多个容器和多主机服务及应用体系结构的部署和管理。我们很高兴地看到,Kubernetes正在成为现代软件构建和运维的核心,成为全球云技术的关键。Kubernetes的成功也代表了开源软件运动所能提供的前所未有的全球开放与合作,是一次具有真正世界影响力的商业转型。华为云 PaaS容器团队很早就开始参与这一开源运动,是云原生计算基金会 CNCF的初创会员与董事,在Kubernetes社区的贡献位于全球前列,也是云原生技术的主要贡献者之一。
云原生容器技术和微服务应用的出现,推动了人们对服务网格的需求。那么,什么是服务网格?简而言之,服务网格是服务(包括微服务)之间通信的控制器。随着越来越多的容器应用的开发和部署,一个企业可能会有成百上千或数万计的容器在运行,怎样管理这些容器或服务之间的通信,包括服务间的负载均衡、流量管理、路由、运行状况监视、安全策略及服务间身份验证,就成为云原生技术的巨大挑战。以 Istio 为代表的服务网格应运而生。在架构上,Istio属于云原生技术的基础设施层,通过在容器旁提供一系列网络代理,来实现服务间的通信控制。其中的每个网络代理就是一个网关,管理容器或容器集群中每个服务间的请求或交互。每个网络代理还拦截服务请求,并将服务请求分发到服务网格上,因此,众多服务构成的无数连接“编织”成网,也就有了“网格”这个概念。服务网格的中央控制器,在Kubernetes容器平台的帮助下,通过服务策略来控制和调整网络代理的功能,包括收集服务的性能指标。
服务网格作为一种云原生应用的体系结构模式,应对了微服务架构在网络和管理上的挑战,也推动了技术堆栈分层架构的发展。从分布式负载平衡、防火墙到服务的可见性,服务网格通过在每个架构层提供通信层来避免服务碎片化,以安全隔离的方式解决了跨集群的工作负载问题,并超越了 Kubernetes 容器集群,扩展到运行在裸机上的服务。因此,虽然服务网格是从容器和微服务开始的,但它的架构优势也可以适用于非容器应用或服务。
从初始的云理念到云计算再到云原生的发展过程中,我们看到服务网格是云原生技术发展的必然产物。作为云原生架构和技术栈的关键部分,服务网格技术 Istio 也逐渐成为云原生应用平台的另一块基石,这不仅仅是因为 Istio 为服务间提供了安全、高可靠和高性能的通信机制,其本身的设计也代表一种由开发人员驱动的、基于策略和服务优先的云原生架构设计理念。本书作者及写作团队具有丰富的Istio实战经验,在本书中由浅入深地剖析了Istio的原理、架构、实践及源码。通过阅读本书,读者不但能够对Istio有全面的了解,还可以学到云原生服务网格的设计思路和理念,对任何一名软件设计架构师或工程师来说都有很大的帮助,这是一本非常有价值的云原生时代分布式系统书籍。
廖振钦
华为云PaaS产品部总经理