2024年10月29日

Prisma Postgres®:使用 Unikernels 和 MicroVMs 构建现代化 PostgreSQL 服务

在 Prisma,我们相信部署数据库应该像在 Notion 中添加新页面一样简单。今天,我们很高兴分享实现这一愿景的第一个里程碑:Prisma Postgres® 凭借我们独特的架构设计,为开发者提供了始终在线的数据库和按使用量付费的定价模式。立即试用!

Prisma Postgres®: Building a Modern PostgreSQL Service Using Unikernels & MicroVMs

TL;DR(太长不看)

我们很高兴宣布 Prisma Postgres,这是一款托管式 PostgreSQL 服务,为开发者提供始终在线的数据库,并按存储和查询量按使用量付费(无固定成本,无计算成本)。它就像一个无服务器数据库——但没有冷启动,并且有慷慨的免费套餐!

为了构建具有这些能力的服务,我们设计了一个独特的架构,使用裸机、革命性的毫秒级云栈,以及作为超轻量级微虚拟机运行的unikernel(可以理解为:“高度专业化的操作系统”)。

得益于 Prisma 产品的头等集成,Prisma Postgres 开箱即用,提供连接池、缓存和查询优化建议

Prisma Postgres 现已开放抢先体验 🎉


试用 Prisma Postgres

“无服务器”PostgreSQL 的新时代

与现有云提供商和其他无服务器数据库产品相比,我们的新架构在数据库配置方面采用了根本不同的方法。在本节中,我们将探讨无服务器数据库的趋势,并解释 Prisma Postgres 如何融入此类别。如果您更关心我们的架构和技术细节,请跳到下一节

什么是无服务器数据库?

无服务器数据库(如 AWS Aurora Serverless、Azure Cosmos DB、Neon 或 Turso)遵循与无服务器计算的同类产品相似的模型:它们的主要承诺是让开发者摆脱管理数据库基础设施的困扰,同时提供经济高效的“按使用量付费”定价模型。

使用无服务器数据库时,开发者无需考虑资源(如存储或计算)的配置,因为数据库会根据应用程序的需求自动扩展。

冷启动:无服务器数据库的主要缺点

自动扩展的承诺通常意味着数据库可以缩减到零,即它被暂停。当数据库在不活动后需要“唤醒”时(例如),这可能导致高查询延迟和糟糕的用户体验。

Source: <a href="https://vercel.com/docs/storage/vercel-postgres/limits#vercel-postgres-cold-starts">Vercel Docs | Vercel Postgres Limits</a>

来源:Vercel 文档 | Vercel Postgres 限制

一些数据库提供商甚至要求开发者手动操作才能唤醒暂停的数据库。尽管无服务器数据库有其优点,但冷启动是一个主要缺点!

无服务器数据库提供商只能提供非常有限的免费套餐

免费套餐对于开发者探索数据库服务、构建个人应用和创建概念验证至关重要。

然而,近年来,提供免费套餐已成为数据库提供商的一大挑战。由于其技术设计通常依赖于转售主要提供商(如 AWS)的基础设施,或需要昂贵、资源密集型的基于容器的系统,这些提供商难以维持可行的免费套餐。

Prisma Postgres®:使用 Unikernels 和 MicroVMs 构建现代化 PostgreSQL 服务

这一困难导致像 PlanetScaleHeroku 这样的公司完全停止了免费套餐的提供。

Prisma Postgres:一个拥有慷慨免费套餐且无冷启动的“无服务器”数据库

如果能获得“无服务器”的所有好处,而没有限制性免费套餐和冷启动等缺点,那会怎样?我们正在通过从零开始构建托管式 PostgreSQL 服务,将这一愿景变为现实。

今天,我们很高兴分享这个方向的第一步:我们与 Unikraft 合作,使用 Unikraft Cloud 预置 PostgreSQL 实例,这是一个突破性的毫秒级云平台,可消除冷启动,实现毫秒级缩减至零和自动扩展,并允许在单个裸机上运行数千个实例。

冷启动确实令人头疼。Unikraft Cloud 提供的冷启动时间仅为几毫秒,并具有硬件级别的隔离。

Death to Cold Starts终结冷启动,详见 Unikraft 博客

这种独特的架构不仅消除了冷启动,而且通过在单台机器上支持数千个数据库,提供了卓越的经济效益。这种方法使我们能够创建其他数据库提供商根本无法负担的慷慨免费套餐。

继续阅读以了解我们新 PostgreSQL 服务的技术细节!

在毫秒级云基础设施上构建托管式 PostgreSQL 服务

现代 PostgreSQL 提供商通常依赖以下两种方法之一来提供数据库基础设施

  • 在 AWS 基础设施之上构建(本质上是转售
  • 构建自定义的、基于容器的编排系统(例如,使用 Kubernetes)

Prisma Postgres 既不是。相反,它使用 Unikraft Cloud,并基于一种全新的独特架构,在处理数据库时提供无与伦比的效率、安全性(通过强大的硬件级隔离)、速度和开发人员体验。

Unikraft 云栈概述

让我们仔细看看 Unikraft Cloud 的毫秒级云基础设施

Source: <a href="https://unikraft.cloud/how-it-works/">Unikraft Cloud Docs | How it works</a>

来源:Unikraft 云文档 | 工作原理

为了提供高效率和毫秒级语义,Unikraft 团队必须优化网络组件、云栈和应用程序启动时间。以下是 Unikraft Cloud 核心组件的快速概览,如上图所示:

  • 自定义控制器和代理:一个自定义平台控制器,提供一流的、响应式的毫秒级语义和可扩展性。为了加速网络处理,Unikraft Cloud 将此控制器与一个自定义代理结合,该代理负责负载均衡并能够非常快速地响应传入请求。
  • 基于 Firecracker 和 unikernels 的快速虚拟机监视器 (VMM):Unikraft Cloud 的 unikernels 使用精简的镜像,仅包含应用程序、应用程序运行所需的代码,以及其他任何东西。与 Firecracker VMM 的修改版本配对,这些镜像启动速度极快。
  • 快照:优化的网络层和云栈可能并非总是足够。一些应用程序可能需要数秒或数分钟才能初始化,这可能会破坏平台的毫秒级语义。为了解决这个问题,Unikraft Cloud 提供可选的快照功能。它会等待应用程序完全初始化,然后创建内存快照,并将其缩减到零(背后有大量的工程努力,以确保在大规模下也能良好运行)。然后,冷启动会从快照恢复,即使对于大型应用程序,也能将其启动时间缩短到毫秒级。

无云提供商:Prisma Postgres 运行在裸机上

我们正在从第一性原理构建 Prisma Postgres,在性能、成本、安全性和易用性之间取得完美平衡。

为了拥有完全控制权并避免主要云提供商的限制、约束和定价模型,我们选择在全球各地的数据中心租赁自己的物理机器。

Prisma Postgres 基于“现代硬件极其强大且廉价”的观察,这一观点最近得到了 Basecamp 的推广。

离开云端将在五年内为我们节省700万美元。

Cloud Computing Isn't For Everyone云计算并非适合所有人,详见 Basecamp 博客

简而言之:有了 Prisma Postgres,您的数据库将运行在由高 CPU 核心数、大容量 RAM 和超高速 NVME 存储支持的强大服务器上。

Unikernels 作为微虚拟机与 Unikraft 和 Firecracker 一起运行

我们架构的核心组件之一是将 PostgreSQL 部署在作为轻量级微虚拟机运行的 unikernels中。

Unikernels 因其在启动时间、吞吐量和内存消耗等方面提供卓越性能而闻名。

Unikraft:简单易用的快速专用 Unikernel(研究论文,EuroSys 21)

在过去的几个月里,我们与 Unikraft 团队密切合作,他们的工作给我们留下了深刻印象,他们提升了开发体验(DX),并使 unikernels 对开发者更易于使用。我们的结论很明确:Unikernels 终于可以用于高性能生产工作负载了。

Unikraft Cloud 将 unikernels 作为其核心组件之一,提供了部署云原生应用程序最快、最经济、最安全的方式。

  • 快速:有状态的缩放至零,并在个位数毫秒内恢复
  • 经济:无闲置资源成本,服务器密度更高,实现最佳经济效益
  • 安全:容器和函数实现硬件级隔离

通过额外的编译步骤,Unikraft 将传统的全栈应用程序容器转换为 unikernel 二进制镜像,其中仅包含运行它所需的资源——可以理解为:一个专为每个特定应用程序的需求量身定制的专用操作系统

Source: <a href="https://unikraft.cloud/how-it-works/">Unikraft Cloud Docs | How it works</a>

来源:Unikraft 云文档 | 工作原理

Prisma Postgres unikernel 二进制文件比原始 PostgreSQL 镜像小 5 倍

我们与 Unikraft 团队密切合作,创建了 Prisma Postgres unikernel 二进制镜像。这是之前的 Unikraft 编译过程图——但针对 Prisma Postgres 进行了专门优化

Blog image

Unikraft 团队成功地将原始 PostgreSQL 镜像从 280MB 裁剪到 61MB。以下是 Prisma Postgres 镜像的组件分解:

通过识别并移除部署中不必要的软件包,我们将镜像大小减少到原始大小的约 20%。原始 PostgreSQL 镜像包含许多 Prisma Postgres 不需要通用功能。

在我们的架构中,这些专用二进制镜像作为 unikernels 部署在我们的裸机上;由于 unikernels 最终是虚拟机,因此每个 PostgreSQL 实例都提供了强大的硬件级隔离。

得益于 Unikraft,一台机器可以承载数千个应用程序(在我们的案例中是 Prisma Postgres)实例。

比较标准虚拟机、容器和 Unikernel

标准虚拟机 (VM)、容器和 unikernels 提供了在硬件上创建虚拟环境的不同方法。

Unikernels 采用第一性原理方法进行云部署。在云中,可以说只有两件事重要:

  • 管理程序,用于提供强大的硬件级隔离(以及在其之上运行的虚拟机)
  • 您的应用程序

两者之间的所有内容都是开销。Unikernel 在两者之间添加了最薄的软件层,使应用程序能够以最高效率在管理程序上运行。

Source: <a href="https://unikraft.org/docs/concepts#introduction-to-unikernels/">Unikraft Docs | Introduction to unikernels</a>

来源:Unikraft 文档 | Unikernel 简介

以下是 unikernels 相对于标准虚拟机和容器的优点总结:

Blog image

Unikraft 的使命是“使开发者能够为每个应用程序创建专用操作系统,以确保最佳性能、安全保障和所需的 KPI。”

对我们 Prisma 而言,这意味着您的 PostgreSQL 实例所在的机器是为运行 PostgreSQL 而专用的。这与在通用操作系统上运行 PostgreSQL 形成对比,通用操作系统会消耗与应用程序(即 PostgreSQL)无关的资源。

为什么 Prisma Postgres 没有冷启动?

我们的架构使我们能够避免冷启动,同时提供无服务器产品的所有优点。这通过各个组件的轻量级设计实现:

  • 自定义网络层:Unikraft Cloud 的自定义平台控制器和自定义代理提供了一流的、响应式的毫秒级语义和可扩展性。
  • 预构建的 unikernel 镜像:我们的 PostgreSQL unikernels 已预先构建并优化,以便快速部署。每个 unikernel 二进制文件都包含 PostgreSQL 和一个最小的操作系统,避免了冗长且资源密集型的初始化过程。
  • 微虚拟机在毫秒内启动:与传统虚拟机因其更大的开销(BIOS、完整操作系统等)而需要更长时间初始化不同,我们的微虚拟机剥离了不必要的组件,可以在毫秒内启动。
  • 多层虚拟机快照: Unikraft 虚拟机结合了 Firecracker 的虚拟机监视器 (VMM) 和 unikernels 的打包特性。Firecracker 使创建和恢复虚拟机内存快照成为可能,从而能够在个位数毫秒内从休眠状态恢复机器。对于 Prisma Postgres,我们正在构建一个多层快照系统,该系统将高效管理快照。这项功能将使我们能够在短暂不活动后休眠数据库,同时仍能以可忽略的启动开销处理请求。

一个完全集成的数据层,包括数据库、ORM、边缘缓存、连接池及更多功能

Prisma Postgres 是我们实现为全球应用程序提供完全集成数据层愿景的重要一步。

我们的 Prisma 产品套件确保您可以构建、强化和发展数据驱动的应用程序,而无需担心数据建模、迁移、查询或复杂昂贵的基础设施(如 Redis 或 Apache Kafka)

以下是 Prisma 为您提供的功能概览:

开始使用 Prisma Postgres

尝试 Prisma Postgres 最快的方法是按照此处的说明进行操作:


试用 Prisma Postgres

设置数据库后,您将收到下载和运行示例项目的说明。

今日 Prisma Postgres 提供的功能

Prisma Postgres 今日推出抢先体验版。在抢先体验阶段,不建议用于生产环境,并且有一些事项需要了解:

  • 我们提供慷慨的免费套餐,让您可以开始使用、体验 Prisma Postgres 并用它构建小型项目 🎉
  • Prisma Postgres 始终与 Accelerate 捆绑,这意味着您开箱即可获得连接池和边缘缓存。
  • Prisma Postgres 按查询、出口和数据库事件的存储/交付收费。您可以在我们的定价页面找到所有详细信息。

另请查阅文档,了解 Prisma Postgres 的当前限制。

试用 Prisma Postgres

Prisma Postgres 提供快速启动时间、低资源开销、通过隔离实现的高安全性以及自动扩展能力——所有这些都基于您熟悉和喜爱的 PostgreSQL 数据库。

今天是 Prisma Postgres 的首次发布。期待明年年初的正式发布!

我们希望您和我们一样对 Prisma 家族的这个新成员感到兴奋。快来试用,并在 X 和我们的 Discord 上告诉我们您的想法!


试用 Prisma Postgres

注意:Postgres、PostgreSQL 和 Slonik Logo 是加拿大 PostgreSQL 社区协会的商标或注册商标,并经其许可使用。

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . All rights reserved.