[英]Starting remote Erlang nodes
我想在Erlang中編寫一個主從應用程序。 我正在考慮從架構中需要的以下內容:
當主設備停止時,從設備不應該死,而是在主設備停機時嘗試重新連接
如果遠程節點沒有自動連接或者它們已經關閉(可能是OTP中的管理員行為),則master應自動啟動遠程節點
是否存在面向OTP的行為? 我知道我可以使用slave:start_link()
啟動遠程節點slave:start_link()
並且我可以使用erlang:monitor()
監視節點erlang:monitor()
,但我不知道如何將它包含在gen_server
行為中。
我同意有關使用erlang:monitor_node和使用分布式應用程序的意見。
您不能只使用從模塊來實現這一點,它清楚地指出“當主設備終止時,由主設備啟動的所有從設備節點將自動終止”。
目前還沒有OTP行為。 監督樹是分層的; 看起來你正在尋找一個在應用程序邏輯方面存在層次結構的東西,但是產生是在點對點的基礎上完成的(或根據你的觀點來個別基礎)。
如果您要使用多個Erlang VM,那么您應該仔細考慮運行的數量,因為大量的Erlang VM可能會因操作系統交換OS進程而導致性能問題。 最佳性能的經驗法則是每個CPU核心只有一個OS進程(即一個Erlang VM)。
如果您對研究其他實現感興趣,Basho的riak_core框架可以很好地利用分布式分布式應用程序。
riak_core_node_watcher.erl中包含大部分有趣的節點觀察代碼。
搜索,你會發現有很多關於框架的討論和演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.