想象有一個Web服務:服務器集羣上自定義內存緩存
- 奔跑(nginx的/ node.js中)
- 所有數據遠程存儲
- 必須在20毫秒 迴應
數據必須被讀的響應被分割這樣..
BatchA對
- 數以百萬計的小物件存放在AWS DynamoDB
- 在隨機時間
- 只有持續讀隨機更新,不能被逮住
BatchB
- 〜2,000條SQL中的記錄
- 很少更新,記錄高達1KB
- 可以釣到長達60-90s
我們無法讀取它們一次全部,因爲我們不知道哪些記錄,直到我們看到從BatchB取來自BatchA。
從DynamoDB讀取最多需要10ms。如果我們從遠程位置讀取BatchB,它將使我們沒有時間進行計算,或者我們已經超時。
我目前的想法是將所有BatchB記錄加載到每個節點的內存中(這只是〜2MB)。啓動時,系統將連接到SQL服務器並獲取所有記錄,然後每60或90秒更新一次。問題是這樣做的最好方法是什麼?
我可以簡單地將它們全部讀入node.js中的變量(數組)中,然後使用SetTimeout在60-90s之後更新數組。但是最好的解決方案?
我建議看看Couchbase服務器。它在一個產品中提供緩存和數據持久性,並被許多需要高性能和低延遲響應的公司使用。 – mikewied
感謝您的回覆,但我無法使用另一個遠程數據存儲。如果是這種情況,我可以使用相同的DynamoDB。這些數據應該在每個節點的RAM中。 – sPaul