在这个云计算风起云涌的时代,Linux的局限性开始变得越来越明显。就在大家对此毫无头绪时,数据库界的传奇人物迈克尔·斯通布雷克(Michael Stonebraker)带来了颠覆性的解决方案——DBOS(数据库导向的操作系统),这不仅仅是一种思维的革新,也预示着云计算技术的一大飞跃。近日,DBOS在AWS平台上宣布启动其商业服务,并同时宣布获得850万美元的启动资金。
斯通布雷克不仅因创建了众多知名数据库如Ingres、Postgres等而声名鹊起,还因其持续不断的创新而获得了图灵奖。他那些颠覆常规的思维和挑战传统的行为,早已在业界名声大噪。记得2014年,当时大众对Hadoop的盲目追捧之际,斯通布雷克就已经洞察到了它的弊端,这头大黄象最终还是没能扭转乾坤。
然而,将一个操作系统运行在数据库之内的构想真的可行吗?毕竟,操作系统一直都是和硬件贴得最近的软件层。它是计算机的大脑和心脏。斯通布雷克为何要打破常规,把数据库搞成指挥官,而让操作系统沦为数据库提供的一项服务?
经过一番深思熟虑,斯通布雷克给出了“为什么”的三个主要理由。
首当其冲的,是现今大型计算集群产生了海量的操作系统数据。随着分布式计算技术的前进,集群间的通讯量激增,斯通布雷克指出。
斯通布雷克解释道:“操作系统必须追踪的数据,基本上和你手头的资源挂钩,而这个规模在过去的40年里增长了六个数量级。”“因此,很明显,管理操作系统状态根本就是个数据库问题。这就是我们的启示之源。”
其次,OLTP数据库性能的大幅提升。过去,想要将操作系统整合进数据库似乎是遥不可及的梦,如今这已经成为可能。“过去15年里,OLTP数据库速度有了质的飞跃,我相信,在数据库之上运行操作系统是完全可行的,”斯通布雷克说。
第三个理由源自一次偶然的讲座。Apache Spark的创始人、Databricks的联合创始人及CTO Matei Zaharia讨论了在云集群中管理操作系统状态的挑战。
“他提到Databricks经常需要在庞大的云资源上协调上百万个Spark子任务,很明显,传统的操作系统技术无法胜任这样的调度工作。”斯通布雷克补充道,“他利用Postgres数据库来管理所有调度信息,但他抱怨Postgres速度太慢。”
斯通布雷克认为,对于Databricks这样规模的任何集群,使用传统操作系统维护其状态几乎是不可能的。“因此我们开始深入探讨,最终共同启动了DBOS项目。”
DBOS项目在MIT和斯坦福大学启动,其代码在GitHub上公开共享。在这两位计算领域巨头的引领下,科研团队迅速确定了项目的轮廓。它为每个操作系统所需的核心服务提供了支持,如文件系统、调度引擎和消息系统。这些都是通过SQL编程实现的。
DBOS的初版采用Java开发,并使用了斯通布雷克十多年前创建的高速关系型数据库VoltDB。但是,由于早期反馈表明,市场不接受专有系统。DBOS的每一位投资者也都一致认为,由于VoltDB并非开源,因此不适合作为DBOS的核心技术。鉴于DBOS项目的开源性质,其底层数据库同样需要开源。基于这样的共识,团队最终选择了FoundationDB作为DBOS第一版的核心调度系统。FoundationDB是由Nick Lavezzo、Dave Rosenthal和Dave Scherer联合创建的,自2012年发布以来以其惊人的NoSQL数据库速度著称,虽然它支持关系型数据库的ACID属性,但并未完全遵循SQL标准。斯通布雷克透露,DBOS未来将支持完全的SQL兼容性,这暗示了底层数据库引擎可能会发生变化。
与此同时,DBOS的编程语言也从Java转向了更现代的TypeScript。目前,DBOS已在1000个核心上运行TypeScript编写的应用程序进行了测试,而斯通布雷克表示,没有理由认为DBOS不能扩展到超过100万核心,并支持Java、Python等更多应用程序语言,以满足客户需求。
用户可以使用DBOS提供的FoundationDB数据库,或者他们可以选择在DBOS之上运行任何兼容Postgres的OLTP数据库,如CockroachDB、YugabyteDB、Citus等。DBOS本身在AWS上运行,并使用Firecracker,这是其为无服务器计算提供的轻量级虚拟化软件。用户获得了一个SDK,可以用TypeScript开发应用程序。这就是DBOS公司目前在AWS上销售的商业产品。同时,也提供了开源版本。
但更引人注目的是DBOS所不包含的内容。“Linux和Kubernetes都看不见了,”斯通布雷克说。“如果你现在的堆栈中有事务性文件系统,那么你就不需要它了,因为我们已经自动提供了一个。因此,很多东西都不需要了。生活变得简单多了。”
这种简化带来了几个主要优势,其中最大的一个是安全性的提升。没有了Linux、Kubernetes以及旨在解决架构安全弱点的一系列安全包,DBOS提供了比传统堆栈更小的攻击面。
“大多数工作环境都一团糟,因为他们到处都在运行Linux,到处都在运行Kubernetes。他们还在这些之上运行了一堆安全包,”斯通布雷克说。“你有一个巨大的攻击面,因此很容易被入侵。由于需求极其复杂,很难确保所有入口都已关闭。我们就是去除了所有这些。因此,系统管理变得简单多了。你得到的是一个更安全的环境。你也得到了一个更好的调试环境。”
将操作系统状态保持在数据库中,还使得使用TypeScript SDK开发的DBOS应用能够进行时间旅行。斯通布雷克解释说:
“如果这对操作系统来说已经足够快,那么对你的应用程序肯定也足够快,”他说。“所以如果你把所有的应用程序状态都放在数据库里,那么你就可以对一切进行时间旅行。如果15分钟前发生了勒索软件攻击,你只需要把一切都回滚到16分钟前,绕过问题单步前进,你就能立即恢复运行。”
时间旅行功能还有助于调试。用户可以备份他们的应用,然后单步向前执行,同时更改变量以查看哪里出了问题,斯通布雷克说。这在尝试追踪大量并行微操作中发生的问题时特别有帮助。
时间旅行功能界面
此外,时间旅行功能还能让你在历史的系统状态上运行新代码,探索软件开发的新维度。
“我们为你提供了一个避免了许多并行问题的更好的调试体验,”他说。“因此,你得到了一个高级的调试器。系统管理简化了。安全也更好。这就是我们所提供的。”
DBOS目前仅在云端可用,这是用户可能遇到大规模问题的地方。初期用户可能是那些需要最高安全级别的政府机构;能从DBOS对“一次且仅一次”分布式事务语义的支持中受益的金融服务领域的“冒险者”;以及那些想要比昨天的新玩意更亮眼的“西海岸初创公司”,斯通布雷克说。
斯通布雷克表示,公司正在拖着50年的遗留代码艰难前行,并对此感到厌烦。随着云的召唤,他们面临两个选择:将这些遗留系统迁移到云环境中,这样做将保持原有的复杂性、成本和安全挑战;或者花时间为云重写应用程序。他说,DBOS代表了一次千载难逢的机会,可以为云重构那些应用程序,并提供一个远远优越的产品。
斯通布雷克说,DBOS将抵制在本地部署,也将抵制成为POSIX兼容的系统。但公司对早期采用者想要的东西持开放态度,如果他们需要本地部署和POSIX兼容性,公司将满足这些需求。他们可能还需要像Python和Java这样的编程环境支持,以及在Azure和GCP上运行的支持,这些将在未来确定。“如果有足够多的人需要我们目前不提供的服务,我们当然会用SQL来支持它们。”斯通布雷克说:“我们的想法是尽快推出一个产品。”
从某个角度来看,完全可以把DBOS看作是Linux、Windows Server或Unix等传统操作系统的竞争对手。但实际上,它更像是AWS Lambda这类无服务器计算服务。斯通布雷克和Matei Zaharia的确将DBOS打造成了这样一种服务。
让我们来聊聊最后一个重要的转变。在计算世界里,有些操作系统与数据库的关系密不可分,然而DBOS的创新在于它将操作系统的核心——内核/调度器,基本构建在数据库之上,而系统服务则是通过数据库语言创造。
以往如IBM的System/38和AS/400,就曾将关系数据库融入操作系统的心脏,直到1996年,这些计算机的文件系统完全由数据库构成。IBM后来改变策略,为AS/400引入了OS/2并行文件系统,开辟了符合POSIX标准、支持ASCII格式的新路径,即今天的IBM i专有操作系统。与此类似,Pick操作系统也将数据库作为其不可或缺的一部分。当年Windows Server 2008计划中的“Longhorn”版本本应嵌入基于关系数据库的WinFS文件系统,但这一宏图最终在十五年前不了了之。
而今,DBOS站在了技术变革的巅峰,展现了将数据库不仅仅作为操作系统的核心,更进一步,让关系数据库潜力无限地服务于应用程序文件系统的可能。这不仅是技术的创新,更是云计算时代跃进的见证。
参考资料:
https://www.datanami.com/2024/03/12/stonebraker-seeks-to-invert-the-computing-paradigm-with-dbos/https://www.nextplatform.com/2024/03/12/the-cloud-outgrows-linux-and-sparks-a-new-operating-system/
作者:Alex Woodie、Timothy Prickett Morgan
编译:老鱼
【版權聲明】