2016-09-12 24 views
0

我正在使用express和socket.io的應用程序。如何在使用集羣時設置全局對象?

當我開始在這個應用程序中開發時,沒有太多有關集羣的信息。 我正在嘗試實現集羣,但我遇到了一些問題。

我認爲我可以用全局對象解決的問題最多,我可以從任何集羣訪問。

所以,問題是兩個:

  1. 有辦法,我可以創建一個全局對象,我可以從任何羣集訪問值是多少?
  2. 有辦法可以修改全局對象的任何值並在另一個集羣中獲取此值嗎?

謝謝!

回答

1

所以可以有兩種方法

  1. 外部存儲:在集羣模式下,多個進程像集羣和我不建議共用一個全局對象和管理會議,以保持這些對象在進程間同步。我建議使用REDIS或任何類似的數據庫(推薦使用REDIS,因爲它很快並且適用於此用例)
  2. 全局對象:是的,您可以創建/修改對象,因爲它將成爲每個過程中對象的副本,而您將不得不保持同步的對象。您可以使用process.send()作爲process,worker.send()作爲master進程中的工作者。我看到另一種選擇是使用庫相同:memored npm moduleStrongLoops strong store cluster

我寧願保持所有過程獨立,並使用一個共同的外部存儲,但同樣你應該根據你的使用情況決定。

+0

謝謝。我認爲第一種方式更好。你能給我提供任何存儲庫嗎?我需要查看關於如何在我的項目中實現的示例代碼。 – slorenzo

+0

這是npm redis文檔:[link](https://github.com/NodeRedis/node_redis)。我發現這個博客很有用:[鏈接](https://codeforgeek.com/2015/07/using-redis-to-handle-session-in-node-js)。在REDIS上也有多個npm模塊。 – Mattony