01—Cloud OS
我记得微软Azure在国内刚落地的时候,当时的宣传语是Cloud OS,Azure就是云操作系统。
何也?
因为操作系统就是降维的Windows、就是苹果应用商店,上面能长出数字业务。拿着云的API,编写业务,就可以一键上云,和Windows一样。而且天然有高可用、负载均衡、异地容灾等能力,把软硬件买断的固定资产一次性投资,变成租赁的轻资产模式,而且减少基础设施的运维,对操作系统是降维打击。
区块链,例如以太坊出来,他的slogan就是世界计算机,也是操作系统,包括数字代币等,都是以太坊这个操作系统上的一个应用软件。
而元宇宙何尝不是操作系统?
底层的IoT、数字孪生、大数据、AI、MR/VR等构成了元宇宙的操作系统,然后就可以在上面搭建应用了。
02—PaaS到底是什么?
拿Azure Stack里的App Service举个例子,注意,这里的Azure和Azure Stack可以视作一回事儿:双兔傍地走,安能辨我是雄雌。
曾经有家著名的饮料全球企业,想要在夏季搞促销,类似开瓶扫码中奖。如果用Azure PaaS服务,就可以直接将代码一键构建到云上,就好像把代码构建到Windows操作系统上一样,而且还能自动拥有CDN、负载均衡、高可用等能力,还不需要一次性支付基础软硬件等投入。
如果是Azure Stack,我们就有办法进入App Service的底层虚拟机。假设创建一个Web网站,名为webdemo,注意是Free Tier。
用Process Monitor监控App Service底层虚拟机背后发生了什么?
可以看到其运行在Windows虚拟机上,当创建webdemo网站时,Windows虚拟机上会自动调用RsFilterApi这个dll文件里的CreateSandboxProcessW函数。
CreateSandboxProcessW函数会创建进程,并使用容器技术,对进程的资源进行限制。进程名称就是webdemo,和网站同名,用Process Explorer检查,可以发现其账户为IIS Appppool\webdemo,显示是Windows下的IIS进程。
打开该进程的属性对话框,切换job标签页,即可看到该进程的作业对象,包括内存限制为1GB以及CPU限制等。
如果查看以下网页,可以看到Azure App Service的Free Tier内存不得超过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的内部原理之一,有关应用的打包、高可用、负载均衡、底层运维、资源限定等,云厂商都给我们代劳了,这样我们构建数字化应用,当然就方便了。