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 新聞通訊

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