尋找一些解決方案來處理Erlang集羣分區。基本上,只要集羣參與者再次可達,就應該將其添加回集羣。最簡單的解決方案可能是使用erlang node monitoring。如何在erlang集羣中重新連接分區節點
有沒有其他更好的解決方案,也許更動態,不需要固定節點列表?
尋找一些解決方案來處理Erlang集羣分區。基本上,只要集羣參與者再次可達,就應該將其添加回集羣。最簡單的解決方案可能是使用erlang node monitoring。如何在erlang集羣中重新連接分區節點
有沒有其他更好的解決方案,也許更動態,不需要固定節點列表?
有幾個第三方庫不必使用固定節點列表進行配置。我熟悉的兩個是redgrid和erlang-redis_sd_epmd,可能還有其他的,但我只是不熟悉它們。
這兩個確實對redis有外部依賴性,根據您需要決定什麼可能或不可取。
redgrid是更簡單的實現,但沒有大量的功能。基本上,erlang節點連接到redis,所有連接到redis的erlang節點然後建立彼此的連接。您可以將元數據與節點相關聯,並在另一個節點上檢索它。
erlang-redis_sd_epmd稍微複雜一些,但允許更多配置。例如,不是隻自動連接所有節點,節點可以發佈它可以執行的服務,並且連接節點可以根據提供的服務查找節點。
不是現成的解決方案,但是如果您已經在爲ejabberd進行自定義修改,則可以嘗試集成此代碼以解決羣集分區後的mnesia衝突。