张海洋,网络大数据方向产品经理,参与支持多项云网融合类国家课题,对云网融合技术变迁有深入研究。
引言
20世纪中期,虚拟化和分时共享概念奠定了共享计算资源的基础,云计算开始萌芽。随着互联网技术的进步,虚拟化技术逐渐成熟,为云计算的商业化应用创造了条件。
进入21世纪初,亚马逊网络服务(AWS)的推出标志着云计算的重大突破。企业开始意识到按需使用计算资源的优势,这种灵活高效的资源管理模式迅速获得了广泛认可,推动了IaaS、PaaS、SaaS等服务模式的普及。
在接下来的十年中,云计算成为企业数字化转型的核心驱动力。各行业纷纷采用云服务来提高效率和降低成本。市场的需求催生了新技术的加速跃迁,层出不穷的云平台提供的弹性和可扩展性使企业能够快速响应市场变化。
近年来,市场对云计算的需求不断演变,推动了技术的快速更新换代。随着人工智能和大数据技术的深度融合,企业不仅需要弹性的云计算技术,还迫切需要边缘计算提供低延迟和高实时处理能力。同时,多云策略应运而生,帮助企业避免供应商锁定,提高系统的灵活性和可靠性。
华为曾在NFV World Congress上,首次明确提出迈向运营商网络全面云化转型必经的三个阶段:“虚拟化”、“云化”及“原生云”。本文将使用这种思路从技术角度,分服务器虚拟化、云化、云原生三个阶段并结合云计算的整体发展历程,深入探讨其不同阶段的技术特征和路径,以技术视角跟踪云计算的历史脉络和技术需求,追溯它们如何塑造现代云计算的格局,把脉未来云计算的技术需求。
第一阶段:服务器虚拟化
服务器虚拟化阶段(2006年前):在服务器虚拟化阶段,企业自行搭建服务器设备,为业务应用匹配定制的厂商设备、操作系统、虚拟化软件等差异化软硬件环境;设备的安装、调试及应用的部署、运维基本靠人力完成,自动化程度低,缺乏统一的设备和应用管理能力。市场急需提升资源利用率、增强灵活性和可扩展性、简化管理、提高灾备能力和系统可用性,以及降低运营成本和能耗的新技术。虚拟化技术的出现使得企业能够更高效地管理IT资源,快速响应业务需求的变化,使得多个虚拟机可以在一台物理服务器上运行,实现了资源的优化和隔离。
核心技术:虚拟化与物理资源整合
发展瓶颈:物理资源利用不充分
解决方案:虚拟化技术使原来单一的物理服务器能支持多个应用程序运行,显著提高了服务器的资源使用率,降低了运维成本。如下图所示:
虚拟化技术发展路径
最初,IBM在其大型机系统中引入虚拟化,通过CP-40和System/360-67等系统实现了基础的虚拟化概念,并发展出VM/CMS等产品。然而,随着小型机和x86架构的崛起,大型机的影响力逐渐减弱。直到2001年,VMware发布了首个针对x86服务器的虚拟化产品,引领了现代虚拟化的潮流。此后,Xen等开源虚拟化项目相继出现,各大公司纷纷推出自己的虚拟化解决方案,如惠普的Integrity虚拟机、Sun的Solaris Zone和微软的Hyper-V。
在虚拟化技术的分类中,全虚拟化和半虚拟化是两种主要模式。全虚拟化通过虚拟机管理程序(Hypervisor)协调Guest操作系统与硬件之间的交互,使操作系统无需修改便能运行。这种模式广泛应用于各种平台,如VMware Workstation和KVM,具有较高的运行速度和用户友好性。另一方面,半虚拟化要求Guest操作系统集成虚拟化代码,使其能够高效利用底层硬件资源。虽然这种方法需要对操作系统进行修改,但其性能接近物理机。
在厂商方面,VMware作为虚拟化领域的先锋,其产品VMware Workstation在推出后迅速普及,成为虚拟化的代名词。VMware通过支持Linux系统,突破了Windows系统的不稳定性,进一步巩固了其市场地位。与此同时,红帽通过收购Qumranet,采用了KVM技术,逐渐在企业级市场站稳脚跟。KVM作为一种基于内核的虚拟化方案,与Linux内核紧密结合,因其高效性和轻量级架构而受到广泛支持。
微软的Hyper-V则以其独特的方式融入Windows Server 2008,通过角色配置实现虚拟化功能。虽然Hyper-V需要Windows Server作为宿主操作系统,但其通过Hypervisor的位置优势,实现了高效的资源管理和分配。
超融合技术---云计算的基础
谈到虚拟化的技术成就不得不提到超融合技术,超融合和原有架构差异较大。传统架构下的计算资源和存储资源是分离的,服务器需通过SAN交换机与存储设备连接获取存储空间。超融合技术改变了传统服务器、存储、网络相互孤立的基础架构,实现计算资源、存储资源和网络资源的统一融合,每一台超融合节点单元可同时提供计算资源和存储空间。
超融合架构采用软件定义的体系结构,不再依赖于硬件,计算、存储、网络完全虚拟化并由软件控制。服务器和存储得到了统一的部署和管理,并为整个虚拟化体系提供了简单、通用的管理和自动化平台。
虚拟化VS云化
虚拟化技术已经成为计算机科学和信息技术的核心概念,并在各种应用中得到广泛应用。未来虚拟化技术将继续发展,以实现更高的性能、更好的资源利用率和更高的安全性。在云化阶段和云原生阶段,虚拟化技术进一步升华:容器、微服务、边缘计算……
在讲第二阶段之前必须要说明虚拟化和云化的区别:由于虚拟化和云的核心理念都是从抽象资源中创建可用的环境,所以很容易被混为一谈。虚拟化是一种技术,可让用户以单个物理硬件系统为基础,创建多个模拟环境或专用资源。而云是一种能够抽象、汇集和共享整个网络中的可扩展资源的IT环境。简而言之,虚拟化是一项技术,而云是一种环境,是多种技术和方法论的集合。
具体而言,云化其实是虚拟化的高级利用方法论。
第二阶段:云化
云化阶段(2006~2014年):云化阶段,各大互联网平台以自身业务需求为契机,将云计算发展推向了另一个高潮。2006年AWS推出EC2弹性计算云服务,正式进入公有云时代。2009年,国内最大的公有云服务商阿里云成立。2010-2011是首个开源之年,各大厂商推出开源产品,如OpenStack、CloudFoundry开源PaaS云平台等。云化将传统模式下分布离散的设备统一起来,实现了各类资源如计算、存储、网络的池化,通过统一的虚拟化软件平台,为上层业务软件提供统一的资源管理接口,实现资源管理能力的自动化,屏蔽一部分基础设施的差异,使得应用的通用性增强。企业的IT支出从Capex逐渐转化为Opex模式,整体IT支出变得可控。2013-2014年,开源Docker容器和Kubernetes(K8s)编排引擎的出现,为云原生产业的快速发展提供了技术铺垫。
核心技术:基础设施即服务(IaaS)、平台即服务(PaaS)、应用即服务(SaaS)
发展瓶颈:资源管理的复杂性与灵活性不足
解决方案:云化阶段通过提供API和管理工具,简化了资源的配置与管理过程,使得用户能够快速响应市场变化,动态调整资源配置,降低了时间成本和技术门槛。
IaaS、PaaS、SaaS
IaaS提供基础设施服务,允许用户按需获取计算、存储和网络资源,极大降低了硬件采购和维护成本。PaaS则为开发者提供一个平台,简化应用程序的开发和部署流程,支持多种编程语言和框架,提升了开发效率。SaaS将软件作为服务交付,用户无需安装和维护软件,通过互联网即可使用,提供了极大的便利性和灵活性。这三种模式相辅相成,为企业提供了从基础设施到应用软件的全面解决方案,推动了IT资源的高效利用和业务创新。
下一代云计算基础设施
云计算作为软硬件技术的集成者,不仅在商业模式上进行创新,更是数字化业务变革的支柱,其基础设施的演变融合了分布式云网资源、智能化软硬件基础设施,以及异构管理与协同调度平台。这些创新支持了高效能、广分布和超大规模的特性,使云计算成为现代数字经济不可或缺的基础设施。从市场需求来看,云计算的普及已是不可逆的趋势。企业上云的加速带来了通用计算到智能计算、超级计算和网络计算的多元业务模式。这种转变对于云基础设施的计算能力、存储容量和网络连接提出了更高的要求,特别是在AI大模型的推动下,智算业务对云服务能力的需求显著增加。
下一代云计算基础设施通过对分布式多云架构和异构资源的统一管理,实现了高效的任务协同调度。通算和智算基础设施的融合,以CPU和GPU等AI加速芯片为核心,支持通用和智能计算业务。分布式云平台能够对多维异构资源进行统一管理,提升了任务调度的精确性和效率。通过智能化服务模式,云计算平台承载了丰富的数字化业务类型,提升了产业数字化能力。
在关键技术方面,下一代云计算依托RISC-V指令集实现通智异构算力融合,构建高性能AI算力集群。网络层面则通过RDMA协议打造高性能智算中心网络,满足大规模、高通信效率的需求。存储方面,新型存储技术支持高并发和低时延的数据处理,推动了存储与计算的解耦,提升了资源利用率。
跨类型跨架构的资源统一管理与智能协同调度是下一代云计算平台的核心。通过算网存资源抽象、异构资源池化和轻量级虚拟化技术,解决了底层异构物理硬件之间的差异化问题,提升了资源配置和管理的效率。智能协同调度则通过全局调度和自适应智能规划策略,实现了资源的高效分配与动态调整。
总之,云计算技术的革新推动了基础设施的全面升级。下一代云计算承载多元业务,结合通智异构算力融合、全域互联网络、新型存储等技术,呈现出高效能、广分布和超大规模的新时代特征,推动云计算向更智能、更灵活、更高效的方向发展。
云化到原生云
云化阶段是整个网络向原生云阶段发展的重要必经阶段,其以更细致的维度对整个软件系统做出了重构解耦,增加自动化与编排协同,建立微服务架构,以实现系统灵活性与弹性的最大化,将软件系统分解为更小颗粒的软件服务,实现分开部署、弹性调度,从而进一步提高资源利用率和提升性能。
第三阶段:云原生
云原生阶段(2015年~至今):2015年正式进入云原生元年,云原生生态也不断壮大。在云原生阶段,企业的关注点从以资源为中心转移到以应用为中心,包括应用敏捷交付、快速弹性、平滑迁移、无损容灾等。云原生架构强调以代码为中心,支持事件驱动和微服务架构。无服务器计算允许开发者在无需管理服务器的情况下运行代码,而容器化技术提供了一种轻量级的应用打包和部署方式。因此,企业开始考虑如何将基础设施与业务平台融合,为业务应用提供标准的运行、监控、治理平台,并将业务的通用能力下沉到平台侧,更好地帮助企业实现应用的自动化。
核心技术:无服务器计算与容器化
发展瓶颈:应用开发和资源管理的灵活性不足
解决方案:云原生架构使得应用开发和部署更加灵活,开发者可以快速迭代,自动管理资源进行分配与扩展,降低了运维负担,提高了开发效率。
云原生技术
云原生技术是一种以容器为核心的现代软件开发架构,旨在提升应用的可移植性、弹性和可扩展性。核心技术如Docker和Kubernetes负责容器化和容器编排,使应用程序能够在不同的环境中高效运行。SpringCloud和ServiceMesh等微服务架构工具则支持服务之间的通信和管理,增强了系统的灵活性和可维护性。原则上是继承了云化的技术路线,如下图:
在云原生环境中,FaaS(函数即服务)和Knative等无服务器技术降低了基础设施管理的复杂性,使开发者可以专注于业务逻辑的实现。BaaS(后端即服务)进一步简化了应用程序的后端开发,通过提供即用型的云服务减少了开发时间。
云原生架构与大数据和人工智能技术深度融合,通过数据仓库、数据湖和数据分析等技术实现数据驱动的决策支持。云原生HPC(高性能计算)和AI平台则为复杂的数据处理和机器学习任务提供强大的计算能力。
在整个开发生命周期中,DevOps实践贯穿始终,通过持续集成和持续交付(CI/CD)工具实现自动化的构建、测试和部署流程,确保高效的开发和运维协作。测试平台和中间件的引入则增强了系统的可靠性和可测试性。
此外,云原生技术强调软硬件一体化,利用云原生网络、存储和芯片等基础设施优化应用性能。这种架构不仅支持云原生外延技术的发展,还推动了云原生内核技术的创新,实现了技术生态的全面升级。
与传统架构相比,云原生架构通过微服务架构有效降低了单体应用的复杂度,但随之而来的微服务间通讯异常和部署难题也需要通过治理框架、监控、容器和Kubernetes等手段来解决。尽管这些措施在强大的底层系统支撑下剥离了应用逻辑,但整体复杂性并未完全消失,反而需要更多的人力和资源来管理。因此,云原生架构选择将底层系统的复杂度交给云基础设施,实现无基础架构设计,最终构建开放、标准的云技术体系,从而更高效地应对复杂性与资源管理的挑战。
云原生技术栈
云原生架构是优雅的、灵活的、弹性的...但不能否认这些优势的背后是它的学习曲线相当陡峭。
如果读者有志投入云原生领域,并希望能构建一个高可用的云原生架构,对能力的要求已提升到史无前例的程度。总结来说,云原生实践中除掌握 Docker 和 Kubernetes,如图 1-34 所示,还需知晓以下几个领域尤佳。
容器运行时:Docker、Containerd、CRI-O、Kata Containers。
镜像和仓库:Harbor、Dragonfly、Nydus。
应用封装:Kustomize、Helm。
持续集成:Gitlab、Tekton。
持续部署:ArgoCD、FluxCD。
容器编排:Kubernetes。
服务网格: Istio、Envoy、Linkerd。
网关:Ingress-Nginx、Kong、APISIX。
日志:Grafana Loki、Elastic Stack、ClickHouse。
监控:Prometheus、Grafana。
可观测:OpenTelemetry。
机器学习/离在线业务混合部署:Volcano、Koordinator...
未来展望:全域Serverless化
软件行业的架构发展经历了显著的演变,尤其是在部署模式和开发范式方面。早期,虚拟机技术是主流,开发者需要手动部署操作系统(如CentOS和Ubuntu)、运行时环境(如Java的JRE),并搭配中间件(如Kafka)来开发和部署应用。这种模式因硬件、操作系统和版本的异构性,导致扩容、迁移和运维面临诸多挑战。
随着容器技术的出现,尤其是Docker和Kubernetes,开发模式发生了根本性变化。容器化使得微服务架构的部署变得更加简便和高效,计算资源的利用无处不在,任何能够运行容器的环境都可以托管应用程序。
然而,开发者对简化开发和运维的追求并未止步不前,这推动了Serverless技术的兴起。Serverless进一步抽象化底层基础设施,开发者无需再管理容器或运行时中间件,只需专注于应用逻辑的实现。这种技术范式不仅改变了开发者的关注点,也促成了一种新的计算模式。
在架构层面,Serverless引发了显著的转变。传统的单体架构因其封闭性和模块间的高耦合性,常常导致变更困难。微服务架构通过标准化接口实现模块解耦,并借助容器技术提升开发效率。但开发者仍需考虑容器的部署以及与DevOps的协同。Serverless架构则进一步聚焦业务逻辑,通过函数式的方式构建应用,实现更细粒度的解耦,消除了非业务相关的运维负担,从而优化了开发流程。
下面以Microsoft商业软件工程(CSE)团队如何与一家全球零售商合作,使用ServerlessFramework在Azure和AmazonWebServices(AWS)云平台上部署高度可用的无服务器解决方案为例:
用户应用可以来自任何能够登录到云的源。用户登录到网关应用,该应用在 Azure 和 AWS 云之间对请求进行 50-50 的负载均衡。
任何响应也会通过 API 管理器网关进行路由,网关会将其发送到请求者应用。每个平台上的无服务器实现都支持将单个功能作为微服务,每个对应一个功能 VM 节点,并根据需要执行处理。每个 AWS Lambda 函数都有相应的 Azure Functions 函数。无服务器多云库将类似微服务从任一云构建到与云无关的规范化 REST API 中,客户端应用可与任一平台交互。由于抽象 API 层提供代码来处理每个平台的相应微服务,因此不需要转换。与云无关的界面允许用户应用与云交互,而无需知道或关注其访问的云平台。
下面再使用一个示例代码来演示Serverless架构开发。假设有一个需求,需要根据用户输入的城市名称获取天气信息,并返回给用户。
import requests
def get_weather(city):
url = f"
response = requests.get(url)
return response.json()
def handler(event, context):
city = event["city"]
weather = get_weather(city)
return {
"statusCode": 200,
"body": weather
}
上述代码中定义了一个get_weather函数用于获取天气信息。在handler函数中,从事件中获取用户输入的城市名称,然后调用get_weather函数获取天气信息,并将结果返回给用户。
在使用Serverless架构时,可以将上述代码部署到云服务提供商的Serverless平台中。当有用户请求时,云服务提供商会自动执行handler函数,并根据需要分配和管理资源。开发者只需关心函数的实现逻辑,而无需关心服务器的管理。
未来的云计算技术将实现更智能化、无缝化和高效化的发展。随着AI的深入融合,云计算将提供更强大的自动化解决方案,支持实时数据分析和决策。Serverless架构的广泛应用将简化开发流程,使资源管理更加透明和灵活。分布式云和边缘计算的结合将推动云服务在低延迟、高可靠性场景中的应用,满足物联网和5G时代的需求。此外,量子计算的潜在引入将进一步增强计算能力,为复杂问题提供创新解决方案。随着安全技术的进步,云计算将确保数据隐私和系统稳定性,推动各行业的数字化转型。
参考链接:
1.https://archive.org/details/large-fast-computers
2.https://pivotal.io/cloud-native
3.https://github.com/cncf/toc/blob/main/DEFINITION.md
4.https://www.infoq.cn/news/2017/11/WHAT-SERVICE-MESH-WHY-NEED/
5.https://www.easemob.com/news/10721
6.https://info.support.huawei.com/info-finder/encyclopedia/zh/%E6%99%BA%E8%83%BD%E4%BA%91%E7%BD%91.html
7.https://www.thebyte.com.cn/architecture/history.html#_1-1-5-%E4%BA%91%E8%AE%A1%E7%AE%97%E7%9A%84%E6%BC%94%E8%BF%9B%E6%80%BB%E7%BB%93
8.https://www.thebyte.com.cn/architecture/arc.html