假設我在 Heroku 上托管了 Node/express 應用程式。我通過跨越多個 dynos 的服務器使用水平擴展實作了可擴展性。
我有 CMS 面板來控制應用程式的內容,它改變資料庫以添加內容,然后內容通過服務器 API 呈現給最終用戶。
我想要的是向后端 API 添加快取機制,以減少對 DB 的訪問,因為我在白天有大量的應用程式用戶流量。
最初的解決方案是使用在每個服務器實體 (dyno) 中設定的 node-cache 包來設定一個簡單的快取。但是如何通過CMS重繪 快取。
如果我發送一個重繪 快取的請求,它每次只會觸發一個 dyno。因此,所有測功機的資料并不一致。
如何在所有 dynos 上觸發重繪 快取或者是否有更好的方法來處理快取?
uj5u.com熱心網友回復:
您可以完全使用 dynos 之外的東西,而不是 per-dyno 快取。Heroku為常見產品提供了幾個附加組件。我從來沒有用過node-cache,但它是這樣描述的:
一個簡單的快取模塊,它有
set、get和delete方法,作業方式有點像 memcached。
這表明Memcached可能是一個不錯的選擇。在Memcached的云插件有一個免費的30MB層和MemCachier插件有一個免費的25MB層。
在任何一種情況下,或者如果您選擇在別處托管您的快取,或者即使您完全選擇另一個工具,您也會將每個 dyno 連接到同一個快取。這有幾個好處:
- 過期的專案會影響所有的dynos
- 一旦一個專案通過一個 dyno 快取,它就已經在其他 dyno 的快取中了
- 快取內容在 dyno 重新啟動后仍然存在,這種情況至少每天都會發生,因此您將減少失誤
- 等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/355822.html
下一篇:在React中記住一個函式
