01—云操作系统
我记得微软azure刚在国内落地时,其宣传语是“云操作系统”,即Azure就是云上的操作系统。
为何这么说?
因为操作系统就像是简化的windows,或者苹果的应用商店,支持在其上开发和运行数字业务。利用云的API编写业务代码,就能轻松将应用部署到云端,就像在Windows上运行软件一样。此外,云操作系统天然具备高可用性、负载均衡、异地容灾等功能,将传统的软硬件一次性购买变成租赁的轻资产模式,减少了基础设施的运维成本,这对传统操作系统来说是一种降维打击。
区块链技术,例如以太坊,其口号是“世界计算机”,也是一种操作系统,数字代币等都是以太坊操作系统上的应用软件。
元宇宙同样可以视为一种操作系统,其底层的物联网、数字孪生、大数据、ai、mr/vr等技术构成了元宇宙的操作系统,支持在其上构建各种应用。
02—paas到底是什么?
以Azure Stack中的App Service为例,注意,这里Azure和Azure Stack可以看作是同一事物:双兔傍地走,安能辨我是雄雌。
曾经有一家著名的饮料全球企业,计划在夏季进行促销活动,类似于开瓶扫码中奖。如果使用Azure的PaaS服务,就可以直接将代码一键部署到云端,类似于在Windows操作系统上构建应用,同时自动获得CDN、负载均衡、高可用性等功能,无需一次性投入购买基础软硬件。
如果使用Azure Stack,我们可以深入到App Service的底层虚拟机。假设创建一个名为webdemo的Web网站,注意是免费层级。
使用Process Monitor监控App Service底层虚拟机的运行情况,可以看到它运行在Windows虚拟机上。当创建webdemo网站时,Windows虚拟机会自动调用RsFilterApi.dll文件中的CreateSandboxProcessW函数。
CreateSandboxProcessW函数会创建进程,并使用容器技术对进程资源进行限制。进程名称为webdemo,与网站同名。使用Process Explorer检查,可以发现其账户为iis AppPoolwebdemo,显示为Windows下的IIS进程。
打开该进程的属性对话框,切换到作业标签页,可以看到该进程的作业对象,包括内存限制为1GB和CPU限制等。
如果查看相关网页,可以看到Azure App Service的免费层级内存不得超过1GB,这个功能实际上是通过Job Object实现的,通过CreateSandboxProcessW函数在创建webdemo进程时添加了这些限制。
Azure subscription limits and quotas – Azure Resource Manager | microsoft Docs
实际上,在创建进程时对进程资源进行限定,这是容器(如docker)的做法,Windows容器也是如此,可以参考Windows Internals中对容器的解释。
如果将Azure App Service中的进程资源限定功能通过标准的Docker API进行处理,那就完全符合容器的兼容性做法。如果将此功能开放给租户,就可以在App Service中直接使用容器镜像,岂不美哉?
这就是PaaS的内部原理之一,云厂商为我们代劳了应用的打包、高可用性、负载均衡、底层运维、资源限定等工作,这样我们构建数字化应用就变得更加方便了。