連線池對於確保您的資料驅動應用程式能夠處理大量負載而不失效至關重要。在本部落格中,我們將探討在黑色星期五的流量高峰期間,使用 Accelerate 的連線池如何拯救部署在無伺服器環境中的線上電子商務平台。
想像一下,您的公司 Mega Electronics 擁有一款使用 Next.js 和 Prisma ORM 與 PostgreSQL 建置的電子商務應用程式,銷售電子設備。Mega Electronics 部署在傳統伺服器上,並經歷來自全球各地持續的流量。
隨著銷售旺季的臨近,您的團隊預期由於對產品的需求增加,流量將會激增。為了做好準備,您的團隊升級了後端伺服器,增加了 100GB 的儲存空間和 4GB 的 RAM。然而,這種手動增加伺服器資源的過程被證明既耗時又乏味。為了簡化操作,您的團隊認為,如果基礎架構能夠根據需求自動擴展,將會更有效率。
遷移到無伺服器和邊緣
無伺服器環境為根據即時需求擴展伺服器提供了完美的解決方案。它們透過在低流量期間動態縮減規模,並在高峰期間擴大規模來優化成本。然而,每個無伺服器函數都會為 API 請求啟動一個單獨的資料庫連線,這可能會導致我們將在本部落格中討論的問題。
為了確保您的應用程式自動滿足擴展需求,您的團隊決定將您的應用程式遷移到無伺服器環境。為了進一步縮短全球使用者的頁面載入時間,您的團隊決定對某些 API 使用邊緣運行時,以便從最靠近使用者位置的伺服器為使用者提供資料。由於 Prisma ORM 和 Next.js 支援邊緣運行時,因此遷移某些 API 非常簡單。
然而,在週末或小型銷售季期間,當流量增加時,您的團隊開始看到來自資料庫的錯誤訊息,內容為「抱歉!客戶端連線過多。」
此錯誤的發生原因是因為資料庫過載,因為每個無伺服器函數都會產生一個新的資料庫連線,使其連線限制不堪負荷。為了解決這個問題,您的團隊升級了資料庫以處理更多連線,預期在高負載下效能會有所提升。您的團隊意識到,頻繁的更新正在花費更多的金錢和資源。值得慶幸的是,升級證明是有效的,因為能夠接受更多連線的較大實例現在可以管理湧入的連線增加。
黑色星期五前所未有的流量
現在是黑色星期五,為 Mega Electronics 帶來了大量的購物人潮。就在假期開始之際,災難降臨:Mega Electronics 系統崩潰了。
罪魁禍首是什麼?資料庫連線池再次不堪負荷,儘管升級了資料庫,錯誤訊息「抱歉!客戶端連線過多」再次出現,尤其是來自使用邊緣運行時的 API 端點。來自這些路由的資料庫連線池再次不堪負荷,因為資料庫連線根本沒有重複使用,而且流量遠高於預期。您的團隊認為,再次升級資料庫以處理更多連線將變得非常昂貴,而且不是一個實際的解決方案。該事件的後果導致客戶不滿意和潛在銷售額的損失。
假設停機期間有 10,000 個請求失敗。如果我們假設每個請求代表一位潛在客戶,平均會花費 2 美元,那麼總損失的銷售額將為 10,000 個請求 x 每個 2 美元,總計 20,000 美元。
為什麼資料庫可能成為無伺服器或邊緣環境中的瓶頸
無伺服器和邊緣應用程式通常沒有狀態,並且可以大規模擴展。另一方面,資料庫連線是有狀態的,需要重複使用,並且通常具有有限的可擴展性。
當調用一個新函數時,就會建立到資料庫的連線。資料庫只能有有限數量的連線,並且建立或關閉連線通常在時間方面非常耗費成本。因此,即使您的團隊升級了資料庫實例以接受更多連線,效能也不會顯著提高。您的團隊最終決定從根本上解決問題,並決定引入外部連線池。
連線池的力量
連線池對於在無伺服器和邊緣應用程式中有效重複使用和管理資料庫連線至關重要。它可以防止您的資料庫連線輕易耗盡,從而節省您頻繁資料庫升級的成本。
您的團隊考慮了將外部連線池引入技術堆疊的三個選項
- 實作獨立伺服器來管理連線:這種方法為您的團隊帶來了更多挑戰。管理您自己的連線池基礎架構將導致維護和開發者營運方面的高昂成本。
- 使用流行的可靠開源選項,例如 PgBouncer:雖然 PgBouncer 很強大,但此解決方案需要您的團隊部署和維護它,從而導致高昂的營運和管理成本。
- 使用 Prisma Accelerate,一種託管式連線池解決方案:鑑於您的團隊已經使用 Prisma ORM,此選項與您的設定無縫整合。它透過消除額外的培訓並減少維護和營運成本來簡化流程。
您的團隊認為 Prisma Accelerate 是以最少維護來解決連線池問題的最佳解決方案。它可以在流量高峰期間穩健地擴展資料庫連線,確保順暢運作。
Accelerate — 開箱即用的連線池
Prisma Accelerate 在 16 個區域提供連線池,並提供可選擇加入的全球快取。它可以幫助您確保資料庫連線不易耗盡,並使您的應用程式在高負載期間順暢運行。若要將 Prisma Accelerate 新增到專案中,請按照入門指南並安裝所有必需的依賴項。然後,將使用 Prisma Accelerate 的連線池新增到您的 Prisma ORM 專案中,看起來會像這樣
您也可以透過觀看下面的影片,了解 Prisma Accelerate 如何在高負載下提升無伺服器函數的效能
額外好處:使用 Accelerate 快取您的查詢
除了連線池之外,Prisma Accelerate 的全球快取還大幅提高了無伺服器和邊緣應用程式的效能。每當您使用 Prisma Accelerate 快取查詢結果時,它都會將結果儲存在邊緣,即靠近使用者的資料中心。這使得資料能夠在 ~5 到 10 毫秒內傳遞給您的使用者,從而產生反應更靈敏的應用程式。若要了解有關快取如何帶來好處的更多資訊,請閱讀我們關於快取的部落格。
重點 takeaways
在 Mega Electronics 的故事中,教訓很明確:連線池對於處理流量高峰和擴展您的無伺服器和邊緣應用程式至關重要。Prisma Accelerate 使這一切變得更容易,即使在面對瘋狂的流量時,也能確保您的應用程式保持快速且可靠。
Prisma Accelerate 減少了持續手動介入的需求,從而為您的團隊騰出寶貴的時間來專注於創新和業務成長。憑藉更高的可靠性和出色的 DX,採用 Prisma Accelerate 不僅僅是一項技術升級,更是一項對您的線上業務成功的戰略投資。這意味著您的業務停機時間更少,讓客戶滿意並保持潛在的銷售額完好無損。
立即開始使用 Prisma Accelerate
不要錯過下一篇文章!
訂閱 Prisma 電子報