2024 年 10 月 29 日

Prisma Postgres®:使用 Unikernels 與 MicroVMs 建構現代 PostgreSQL 服務

在 Prisma,我們相信部署資料庫應該像在 Notion 中新增頁面一樣簡單。今天,我們很高興分享朝著這個願景邁出的第一個里程碑:Prisma Postgres® 透過我們獨特的架構設計,為開發人員提供隨時可用的資料庫和隨用隨付的定價。立即試用!

重點摘要

我們很高興宣布 Prisma Postgres,一種託管式 PostgreSQL 服務,為開發人員提供隨時可用的資料庫,並針對儲存和查詢採用隨用隨付的定價模式(沒有固定成本,沒有運算成本)。它就像是無伺服器資料庫 — 但沒有冷啟動,並提供慷慨的免費方案!

為了建構具有這些功能的服務,我們設計了一種獨特的架構,使用裸機伺服器、革命性的毫秒級雲端堆疊,以及以超輕量級 microVM 運作的 unikernels(可理解為:「高度專業化的作業系統」)。

由於 Prisma 產品的一流整合,Prisma Postgres 開箱即用,即具備連線池、快取、即時訂閱和查詢最佳化建議

Prisma Postgres 現已推出 Early Access 搶先體驗版 🎉


試用 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 提供毫秒級的冷啟動,並具有硬體級隔離。

Death to Cold Starts消滅冷啟動 在 Unikraft 部落格

這種獨特的架構不僅消除了冷啟動,還透過在單一伺服器上支援數千個資料庫,提供了卓越的經濟效益。這種方法使我們能夠建立其他資料庫供應商根本無法負擔的慷慨免費方案。

繼續閱讀以了解我們新 PostgreSQL 服務的技術細節!

在毫秒級雲端基礎架構上建構託管式 PostgreSQL 服務

現代 PostgreSQL 供應商通常依賴兩種方法之一來佈建資料庫基礎架構

  • 建立在 AWS 基礎架構之上(基本上是轉售
  • 建構自訂的、基於容器的協調系統(例如,使用 Kubernetes)

Prisma Postgres 並非如此。相反地,它使用 Unikraft Cloud,並且基於一種新的獨特架構,在處理資料庫時,可提供無與倫比的效率、安全性(透過強大的硬體級隔離)、速度和開發人員體驗。

Unikraft Cloud 堆疊概覽

讓我們更深入地了解 Unikraft Cloud 的毫秒級雲端基礎架構

來源: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 核心數、大量 RAM 和超快速 NVME 儲存支援。

使用 Unikraft 和 Firecracker 作為 microVM 運作的 Unikernels

我們架構的核心組件之一是在以輕量級 microVM 運作的 unikernels 內部部署 PostgreSQL。

Unikernels 以在啟動時間、吞吐量和記憶體消耗等指標方面提供卓越效能而聞名。

Unikraft:快速、專業化的 Unikernels,輕鬆上手(研究論文,EuroSys 21)

在過去幾個月中,我們與 Unikraft 團隊密切合作,並對他們在提高 DX 和讓開發人員更容易使用 unikernels 方面的工作印象深刻。我們的結論很明確:Unikernels 終於準備好被採用於高效能生產工作負載。

Unikraft Cloud 使用 unikernels 作為其核心組件之一,提供了部署雲原生應用程式的最快速、最經濟且最安全的方式

  • 快速:有狀態的縮減到零,可在個位數毫秒內恢復
  • 經濟:沒有閒置資源成本和卓越的伺服器密度,可實現最佳經濟效益
  • 安全:容器和功能的硬體級隔離

透過額外的編譯步驟,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 不需要的通用功能。

在我們的架構中,這些專業化的二進位映像檔作為 unikernels 部署在我們的裸機伺服器上;而且,由於 unikernels 最終是虛擬機器,因此每個 PostgreSQL 執行個體都提供強大的硬體級隔離。

由於 unikraft,單一機器可以託管數千個應用程式(在我們的案例中:Prisma Postgres)執行個體

比較標準虛擬機器、容器和 unikernels

標準虛擬機器 (VM)、容器和 unikernels 提供不同的方法來在硬體上建立虛擬環境

Unikernels 採用第一原理方法進行雲端部署。在雲端中,可以說只有兩件事重要

  • 用於提供強大的硬體級隔離的hypervisor(以及在其之上運作的虛擬機器)
  • 您的應用程式

兩者之間的一切都是額外負擔。unikernel 在兩者之間新增了盡可能薄的軟體層,以便應用程式可以以最高效率在 hypervisor 上執行

來源:Unikraft 文件 | unikernels 簡介

以下是 unikernels 相較於標準 VM 和容器的優勢摘要

Unikraft 的使命是「讓開發人員能夠為每個應用程式建立專業化的作業系統,以確保最佳效能、安全保證和所需的 KPI。」

對於 Prisma 的我們來說,這表示執行 PostgreSQL 執行個體的機器是為執行 PostgreSQL 而專業化的。這與在通用作業系統上執行 PostgreSQL 形成對比,後者會消耗與應用程式(即 PostgreSQL)無關的資源。

為什麼 Prisma Postgres 沒有冷啟動?

我們的架構使我們能夠避免冷啟動,同時提供無伺服器產品的所有優點。這是透過個別組件的輕量級設計實現的

  • 自訂網路層:Unikraft Cloud 的自訂平台控制器和自訂代理伺服器提供同類最佳、反應式、毫秒級語義和可擴展性。
  • 預先建置的 unikernel 映像檔:我們的 PostgreSQL unikernels 是預先建置和最佳化的,可實現快速部署。每個 unikernel 二進位檔都包含 PostgreSQL 和最小的作業系統,避免了冗長且資源密集的初始化過程。
  • MicroVMs 在毫秒內啟動:與由於較大的額外負擔(BIOS、完整作業系統等)而需要更長時間初始化的傳統虛擬機器不同,我們的 microVMs 已剝離不必要的組件,並且可以在毫秒內啟動。
  • 多層 VM 快照: Unikraft VMs 結合了 Firecracker 的虛擬機器監視器 (VMM) 與 unikernels 的封裝特性。Firecracker 使建立和還原 VM 記憶體快照成為可能,從而在個位數毫秒內實現從休眠狀態還原機器。對於 Prisma Postgres,我們正在建構一個多層快照系統,該系統將有效管理快照。這種功能將使我們能夠在短時間不活動後休眠資料庫,同時仍然能夠以可忽略不計的啟動額外負擔來處理請求。

具有 DB、ORM、快取、即時事件等的完全整合資料層

Prisma Postgres 是朝著我們為全球應用程式提供完全整合資料層的願景邁出的重要一步。

我們的 Prisma 產品套件確保您可以建構、強化和發展資料驅動的應用程式,而無需擔心資料建模、遷移、查詢或複雜且昂貴的基礎架構(如 Redis 或 Apache Kafka)

以下是您使用 Prisma 獲得的概覽

  • Prisma Postgres:高效能 PostgreSQL 執行個體,隨時可用,並採用隨用隨付定價。
  • Prisma ORMTypeScript 生態系統中最受歡迎的 ORM,具有人類可讀的結構描述、自動化遷移和直覺、類型安全的查詢。
  • Prisma Accelerate:連線池和全域快取層,可大幅加快查詢速度(在每個查詢層級上具有 TTL 和 SWR 等快取策略)。
  • Prisma Pulse:即時事件系統,可讓您透過簡單的方法(如 prisma.user.stream())串流資料庫事件,並具有交付保證
  • Prisma Optimize:AI 驅動的查詢分析和建議系統,可協助您最佳化資料庫查詢。
  • Prisma Studio以視覺方式檢視和編輯資料的最簡單方式。

開始使用 Prisma Postgres

試用 Prisma Postgres 的最快方法是按照此處的說明進行


試用 Prisma Postgres

設定資料庫後,您將收到下載和執行範例專案的說明。

今天您使用 Prisma Postgres 獲得什麼

Prisma Postgres 今天以 Early Access 搶先體驗版推出。在 Early Access 階段,不建議用於生產環境,並且有幾件事需要了解

  • 有一個慷慨的免費方案,可讓您開始使用、試驗 Prisma Postgres 並使用它建構小型專案 🎉
  • Prisma Postgres 始終與 Accelerate 和 Pulse 捆綁在一起,這表示您可以開箱即用地獲得連線池、快取和即時資料庫事件。
  • Prisma Postgres 針對查詢、輸出和資料庫事件的儲存/交付收費。您可以在我們的定價頁面上找到所有詳細資訊。

另請查看文件,以了解 Prisma Postgres 目前的限制。

試用 Prisma Postgres

Prisma Postgres 提供快速的啟動時間、低資源額外負擔、透過隔離實現高安全性以及自動擴展 — 所有這些都是在您熟悉和喜愛的 PostgreSQL 資料庫的基礎上實現的。

今天標誌著 Prisma Postgres 的首次發布。期待明年年初的正式版發布!

我們希望您和我們一樣對 Prisma 系列的這一新增功能感到興奮。試用看看,並在 X 和我們的 Discord 上告訴我們您的想法!


試用 Prisma Postgres

注意:Postgres、PostgreSQL 和 Slonik 標誌是加拿大 PostgreSQL 社群協會的商標或註冊商標,經許可使用

不要錯過下一篇文章!

訂閱 Prisma 電子報