DBOS面向云原生的操作系统

Posted by ni on December 11, 2024
本文共1643 字 | 大约需要5.48 分钟阅读

前言

  • 软件性能大多限制于数据库
  • Spark任务非常小,用进程/线程来管理并不合适,太重了,并且进程线程的调度是单机的,DataBricks需要跨越多个计算机调度
  • 因为Linux是个单机的操作系统,但是如今的计算都是分布式的,所以必须有k8s这样的软件来管理应·用数据、身份验证系统、消息传递、集群管理…..
  • 但是Linux太老了,而Kubernetes 太复杂
  • 于是扎哈里亚和斯通布雷克要设计了一个数据库来取代它们
  • 既然受限于操作系统,干脆反过来,在数据库上搞一个操作系统

DBOS

思想架构

  • 扎哈里亚和斯通布雷克则完全把数据库挪到了操作系统的下层,操作系统是基于数据库构建的。

  • 其基本思想是,在微内核中运行一个多节点多核、事务性、高可用的分布式数据库,然后在数据库之上实现调度、消息传递、文件系统和其他操作系统服务。

  • 第一层是微内核,主要实现内存管理,中断处理,驱动等。

  • 第二层是一个高性能的、多节点的分布式数据库

  • 第三层,在DBMS上构建高级OS服务,分布式文件系统、集群调度程序和分布式进程间通信 (IPC) 子系统

  • 第四层是用户程序,例如Spark。

  • 第1,2,3层加起来被成为DBOS(Database-Oriented Operating System),就是“面向数据库的操作系统”。

  • 据说当时有人想把它叫做DataSphere OS,或者HyperDataOS,但是斯通布雷克坚持采用了简单直白的“DBOS”,因为“直白的名字最能吸引人注意,就像UNIX和SQL那样”。

作用

  • DBOS有两个鲜明的特点:

    • 所有应用程序和操作系统的状态都存储在分布式数据库的表中

    • 所有应用程序和操作系统的状态都存储在分布式数据库的表中

  • 首先,集群调度程序可以将有关任务和工作程序的信息存储在数据库表中,百万级别的任务状态跟踪对数据库来说就是小事儿一桩

  • 因为数据库支持事务(ACID),可以保证对任务状态的并发访问。在发生故障时,DBOS也能保证一致性和持久性,可以轻松从中断处继续运行。

  • 其次,使用强大的数据库日志功能,可以追踪对应用程序状态的访问,简化应用程序的分析、监控、调试和保护。

  • DBOS还有多种安全优势,包括“攻击面更小、漏洞更少”,从严重的错误或攻击中恢复可能很简单,只需将数据库回滚到以前的状态即可。

  • 举个简单的例子,DBOS支持工作流,假设你有这么一个需求:需要发送一封确认邮件,等待一段时间,然后再发一封提醒邮件:

    @DBOS.workflow()
    def reminder_workflow(email: str, time_to_sleep: int):
    send_confirmation_email(email)
    DBOS.sleep(time_to_sleep)
    send_reminder_email(email)
    
  • 通过使用工作流,DBOS可以保证即使休眠时间长达数周或数月,即使程序崩溃或重启多次,提醒电子邮件也始终会按时发送(并且确认电子邮件永远不会重新发送)。

  • 这就是数据库把所有状态都管理起来的威力,它就极大地简化了程序员的工作。

总结

  • 2001年,Oracle CEO 拉里·埃里森说过:中间件是一个愚蠢的想法,一切都应该交给数据库来管理。

  • 20多年过去了,DBOS真的把这些活儿交给数据库来干了。

  • 但是很明显,DBOS不是Windows,Linux这样的单机操作系统,更不是让普通消费者来使用的。

  • DBOS面向的是云计算,它也许是未来的云计算的操作系统。