2013-01-13 179 views
0

我正在尋找一種方法來共享NodeJS中所有集羣實例的相同數據結構(包含函數,因此JSON不是選項)。我有一個名爲'用戶'的數據結構,用於跟蹤用戶會話幷包含他們有權訪問的功能。我需要能夠跨所有節點進程共享此數據結構,或者我需要其他設計模式。有誰知道這個問題的任何解決方案?感謝NodeJS集羣問題

回答

1

我意識到這是陳舊和回答,但它可能有利於其他人注意替代方案。處理這種情況的推薦方式是將此數據結構的功能放在單獨的文件中,並在需要時使用它。這將基本上拉入「代碼/函數」,並將數據本身存儲(序列化/反序列化)到任何數據存儲中。

+0

是的。這已經很長時間了,但你絕對正確!函數不是有狀態的,所以根據需要注入它們就是要走的路! –

1

存在用於上的NodeJS設置適當的IPC(進程間通信)的多個選項:使用文檔/鍵 - 值存儲解決方案等Redis(鍵值)或MongoDB

決定哪些這些解決方案的一個最適合取決於你的需要簡單和你的項目設置。對於我們的最後一個項目,我決定使用這兩種方法:

  • IPC觸發工作調度部分任務不同情況的NodeJS
  • Redis的集中會話級和API令牌管理

如果您正在使用Express,我強烈建議您使用Redis中間件connect-redis。此會話中間件自動處理基於快速應用程序的集中式會話管理(這也意味着您可以存儲複雜的JS對象並可從所有實例訪問它們)。

+0

但我需要能夠共享包含函數的數據結構,並且不能使用JSON函數 –

+0

您可以使用MongoDB進行嘗試,它似乎包含用於函數序列化的序列化開關:http://mongodb.github .com/node-mongodb-native/api-bson-generated/bson.html?highlight = serialize#BSON.serialize – schaermu

+0

IPC沒有更好的方法嗎? –