連線池對於確保您的資料驅動應用程式在高負載下能夠無故障執行至關重要。在這篇部落格中,我們將探討 Accelerate 的連線池如何在黑色星期五流量高峰期間,拯救部署在無伺服器環境中的線上電商平臺。
想象一下,您的公司 Mega Electronics 擁有一款使用 Next.js 和 Prisma ORM 構建的基於 PostgreSQL 的電商應用程式,用於銷售電子裝置。Mega Electronics 部署在傳統伺服器上,並持續接收來自全球各地的流量。
隨著銷售旺季的臨近,您的團隊預計產品需求增加將導致流量激增。為應對此情況,您的團隊透過增加 100GB 儲存和 4GB 記憶體來升級後端伺服器。然而,這種手動增加伺服器資源的過程被證明耗時且繁瑣。為了簡化操作,您的團隊認為,如果基礎設施能夠根據需求自動擴充套件,效率會更高。

轉向無伺服器和邊緣計算
無伺服器環境為根據即時需求擴充套件伺服器提供了完美的解決方案。它們透過在流量低谷時動態縮減,在高峰時動態擴充套件來最佳化成本。然而,每個無伺服器函式都會為 API 請求發起一個獨立的資料庫連線,這可能導致我們將在本部落格中討論的問題。
為確保您的應用程式自動滿足擴充套件需求,您的團隊決定將應用程式遷移到無伺服器環境。為進一步縮短全球使用者的頁面載入時間,您的團隊決定對某些 API 使用邊緣執行時,以便資料從離使用者最近的伺服器提供給他們。由於 Prisma ORM 和 Next.js 支援邊緣執行時,因此遷移部分 API 非常簡單。
然而,在週末或小型促銷季期間,當流量增加時,您的團隊開始從資料庫中看到錯誤訊息,顯示“抱歉!客戶端已過多。”

此錯誤是由於資料庫過載引起的,因為每個無伺服器函式都會與資料庫建立新的連線,從而超出了其連線限制。為了解決這個問題,您的團隊升級了資料庫以處理更多連線,期望在更高負載下提高效能。您的團隊意識到頻繁的升級會花費更多的資金和資源。幸運的是,此次升級證明是有效的,因為具有更多連線能力的大型例項現在可以管理增加的連線流量。
黑色星期五的空前流量
又到黑色星期五了,Mega Electronics 迎來了巨大的購物潮。就在假期開始之際,災難降臨了:Mega Electronics 宕機了。
罪魁禍首是什麼?資料庫連線池再次不堪重負,儘管資料庫已升級,錯誤訊息“抱歉!客戶端已過多”再次出現,尤其是在使用邊緣執行時的 API 端點。資料庫連線池在這些路由中再次過載,因為資料庫連線根本沒有被重用,而且流量遠高於預期。您的團隊認為再次升級資料庫以處理更多連線將變得非常昂貴,並且不是一個實用的解決方案。事件的後果導致了不滿意的客戶和潛在銷售額的損失。
想象一下,在停機期間有 10,000 個請求失敗。如果我們假設每個請求代表一個潛在客戶,平均會花費 2 美元,那麼總銷售損失將是 10,000 個請求 x 每個 2 美元,總計 20,000 美元。
為什麼資料庫會成為無伺服器或邊緣計算中的瓶頸
無伺服器和邊緣應用程式通常不包含狀態,並且可以大規模擴充套件。另一方面,資料庫連線是有狀態的,需要重用,並且通常可擴充套件性有限。

當呼叫新函式時,會建立一個到資料庫的連線。資料庫只能擁有有限數量的連線,並且建立或關閉連線通常在時間上成本很高。因此,即使您的團隊升級了資料庫例項以接受更多連線,效能也不會顯著提高。您的團隊最終決定從根本上解決問題,並決定引入一個外部連線池。
連線池的強大功能
連線池對於在無伺服器和邊緣應用程式中有效重用和管理資料庫連線至關重要。它可以防止您的資料庫連線輕易耗盡,從而節省頻繁資料庫升級的成本。

您的團隊考慮了三種將外部連線池引入技術棧的方案
- 實現一個獨立伺服器來管理連線: 這種方法會給您的團隊帶來更多挑戰。管理自己的連線池基礎設施將導致高昂的維護和開發運營開銷。
- 使用流行的可靠開源方案,例如 PgBouncer: 儘管功能強大,但此解決方案需要您的團隊進行部署和維護,從而導致高昂的運營和管理開銷。
- 使用 Prisma Accelerate,一種託管連線池解決方案: 鑑於您的團隊已在使用 Prisma ORM,此選項與您的設定無縫整合。它透過消除額外培訓並減少維護和運營開銷來簡化流程。

您的團隊認為 Prisma Accelerate 是以最少維護解決連線池問題的最佳方案。它能在流量高峰期穩健地擴充套件資料庫連線,確保平穩執行。
Accelerate — 即插即用的連線池
Prisma Accelerate 提供跨 16 個區域的連線池和可選的全域性快取。它有助於確保您的資料庫連線不易耗盡,並使您的應用程式在高負載期間平穩執行。要將 Prisma Accelerate 新增到專案中,請遵循入門指南並安裝所有必需的依賴項。然後,在您的 Prisma ORM 專案中新增 Prisma Accelerate 連線池將如下所示:
您還可以透過觀看以下影片,瞭解 Prisma Accelerate 如何在高負載下提升無伺服器函式的效能
額外福利:使用 Accelerate 快取您的查詢
除了連線池,Prisma Accelerate 的全域性快取還大大提升了您的無伺服器和邊緣應用程式的效能。每當您使用 Prisma Accelerate 快取查詢結果時,它會將結果儲存在邊緣,即靠近使用者的資料中心。這使得資料可以在約 5 到 10 毫秒內傳達給使用者,從而使應用程式響應更快。要了解有關快取益處的更多資訊,請閱讀我們關於快取的部落格。

主要收穫
在 Mega Electronics 的案例中,教訓很明確:連線池對於處理流量高峰和擴充套件您的無伺服器及邊緣應用程式至關重要。Prisma Accelerate 使這一過程變得更容易,確保您的應用程式即使面對巨大的流量也能保持快速和可靠。
Prisma Accelerate 減少了持續手動干預的需求,為您的團隊節省了寶貴時間,使其能夠專注於創新和業務增長。憑藉更高的可靠性和出色的開發者體驗(DX),採用 Prisma Accelerate 不僅僅是一次技術升級,更是對您線上業務成功的一項戰略投資。這意味著您的業務停機時間更少,客戶滿意度更高,潛在銷售額得以保持。
立即開始使用 Prisma Accelerate
不要錯過下一篇文章!
訂閱 Prisma 郵件通訊