October 29, 2024

Prisma Postgres®:使用 Unikernel 和 MicroVM 构建现代 PostgreSQL 服务

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

TL;DR

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

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

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

Prisma Postgres 现已开放抢先体验 🎉


试用 Prisma Postgres

“无服务器”PostgreSQL 的新时代

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

什么是无服务器数据库?

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

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

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

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

来源:Vercel 文档 | Vercel Postgres 限制

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

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

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

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

这一困难导致 PlanetScaleHeroku 等公司完全停止了其免费套餐服务。

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

如果您可以获得“无服务器”的所有优点而没有缺点,例如有限的免费套餐和冷启动,那会怎么样?我们正在从头开始构建一个托管式 PostgreSQL 服务,将这一愿景变为现实。

今天,我们很高兴分享朝着这个方向迈出的第一步:我们与 Unikraft 合作,使用 Unikraft Cloud 供应 PostgreSQL 实例,Unikraft Cloud 是一个开创性的毫秒级云平台,它消除了冷启动,实现了毫秒级缩减到零和自动扩缩容,并允许在单台裸金属服务器上运行数千个实例。

冷启动确实令人头疼。Unikraft Cloud 提供了毫秒级的冷启动,并带有硬件级隔离。

告别冷启动告别冷启动,来自Unikraft 博客

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

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

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

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

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

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

Unikraft Cloud 堆栈概述

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

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

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

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

无云提供商:Prisma Postgres 运行在裸金属服务器上

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

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

Prisma Postgres 基于对“现代硬件极其强大且廉价”这一观察,这最近由 Basecamp 提倡

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

云计算不适合所有人云计算不适合所有人,来自Basecamp 博客

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

使用 Unikraft 和 Firecracker 将 Unikernel 作为 MicroVM 运行

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

Unikernel 以在启动时间、吞吐量和内存消耗等方面提供卓越性能而闻名,这些只是其中的几个指标。

Unikraft:轻松构建快速、专业化的 Unikernel(研究论文,EuroSys 21)

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

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

  • 快速:有状态的缩减到零,在个位数毫秒内恢复
  • 经济:无空闲资源成本,卓越的服务器密度带来最佳经济效益
  • 安全:为容器和函数提供硬件级隔离

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

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

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

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

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

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

在我们的架构中,这些专业化的二进制镜像作为 unikernel 部署在我们的裸金属服务器上;并且,由于 unikernel 最终是虚拟机,每个 PostgreSQL 实例都提供强大的硬件级隔离。

得益于 unikraft,单台机器可以托管数千个应用程序(在我们的例子中:Prisma Postgres)实例

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

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

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

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

介于两者之间的所有东西都是开销。Unikernel 在两者之间添加了尽可能薄的软件层,以便应用程序能够以最高效率在 hypervisor 上运行

来源:Unikraft 文档 | Unikernel 简介

以下是 unikernel 相较于标准虚拟机和容器的优势总结

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

对于 Prisma 的我们来说,这意味着运行您的 PostgreSQL 实例的机器是为运行 PostgreSQL 而专业化的。这与在通用操作系统上运行 PostgreSQL 不同,通用操作系统会消耗与应用程序(即 PostgreSQL)无关的资源。

为什么 Prisma Postgres 没有冷启动?

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

  • 定制网络层:Unikraft Cloud 的定制平台控制器和定制代理,提供一流、反应迅速、毫秒级语义和可扩展性。
  • 预构建的 unikernel 镜像:我们的 PostgreSQL unikernel 是预构建的,并针对快速部署进行了优化。每个 unikernel 二进制文件都包含 PostgreSQL 和一个最小操作系统,避免了漫长且资源消耗大的初始化过程。
  • 微虚拟机在毫秒内启动:与传统虚拟机因开销较大(BIOS、完整操作系统等)初始化时间较长不同,我们的微虚拟机剥离了不必要的组件,可在毫秒内启动。
  • 多层虚拟机快照:Unikraft 虚拟机将 Firecracker 的虚拟机监视器 (VMM) 与 unikernel 的打包特性结合。Firecracker 可以创建和恢复虚拟机内存快照,使得机器在个位数毫秒内从休眠状态恢复。对于 Prisma Postgres,我们正在构建一个多层快照系统,它将有效地管理快照。此功能将使我们能够在短时间不活动后休眠数据库,同时仍能够在启动开销微乎其微的情况下提供请求服务。

包含数据库、ORM、边缘缓存、连接池等的完全集成数据层

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

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

以下是使用 Prisma 您将获得的功能概述

  • Prisma Postgres:一个高性能的 PostgreSQL 实例,始终在线,采用按量付费定价。
  • Prisma ORMTypeScript 生态系统中最流行的 ORM,具有人类可读的 schema、自动化迁移以及直观、类型安全的查询。
  • Prisma Accelerate:一个连接池和全球缓存层,可以显著加快查询速度(支持在查询级别设置 TTL 和 SWR 等缓存策略)。
  • Prisma Optimize:一个 AI 驱动的查询分析和推荐系统,帮助您优化数据库查询。
  • Prisma Studio:以可视化方式查看和编辑您的数据的最简单方式。

开始使用 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 标志是加拿大 PostgreSQL 社区协会的商标或注册商标,经许可使用。

不要错过下一篇文章!

订阅 Prisma 新闻通讯