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 服务,为开发人员提供了一个始终在线的数据库,并对存储和查询采用按需付费定价(无固定成本,无计算成本)。它就像一个无服务器数据库——但没有冷启动,并且有慷慨的免费套餐!

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

得益于 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 Cloud 堆栈概述

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

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

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

为了提供高效率和毫秒级语义,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 核心数、大内存和超高速 NVME 存储支持的强大服务器上。

Unikernels 作为 MicroVMs 与 Unikraft 和 Firecracker 运行

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

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

Unikraft:简单快捷的专业化 Unikernels(研究论文,EuroSys 21)

在过去的几个月里,我们与 Unikraft 团队紧密合作,他们通过提升开发体验和让 unikernels 更容易被开发人员接受的工作给我们留下了深刻印象。我们的结论很明确:Unikernels 终于准备好被用于高性能生产工作负载。

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

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

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

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

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

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)实例

标准虚拟机、容器和 Unikernels 的比较

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

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

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

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

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

来源:Unikraft 文档 | Unikernels 简介

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

Blog image

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

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

为什么 Prisma Postgres 没有冷启动?

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

  • 自定义网络层:Unikraft Cloud 的自定义平台控制器和自定义代理提供了一流的、响应式的、毫秒级语义和可扩展性。
  • 预构建的 unikernel 镜像:我们的 PostgreSQL unikernels 是预构建并优化用于快速部署的。每个 unikernel 二进制文件都包含 PostgreSQL 和最小的操作系统,避免了冗长且资源消耗大的初始化过程。
  • MicroVMs 在毫秒内启动:与传统虚拟机因其较大的开销(BIOS、完整操作系统等)而需要更长时间初始化不同,我们的 MicroVMs 剥离了不必要的组件,可以在毫秒内启动。
  • 多层虚拟机快照: Unikraft 虚拟机结合了 Firecracker 的虚拟机监视器 (VMM) 和 unikernels 的打包特性。Firecracker 可以创建和恢复 VM 内存快照,从而能够在个位数毫秒内从休眠状态恢复机器。对于 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 标志是加拿大 PostgreSQL 社区协会的商标或注册商标,并经其许可使用。

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . This site is unofficial and not affiliated with Prisma Data, Inc.