我一直在研究移動代理,並想知道是否有可能將正在運行的進程發送到erlang中的另一個節點。我知道可以在另一個節點上發送一個進程消息。我知道可以在羣集中的所有節點上加載模塊。是否有可能將某個特定節點上處於某種狀態的進程移動到另一個節點並恢復其狀態。也就是說,erlang是否提供了強大的移動性?或者是否有可能在erlang中提供強大的移動性?在Erlang中,是否可以將正在運行的進程發送到其他節點?
6
A
回答
10
是的,這是可能的,但沒有「移動進程到節點」調用。但是,如果該流程是使用遷移功能構建的,那麼您可以通過將流程的功能及其狀態發送到另一個節點並在那裏安排產卵來做到這一點。要獲得流程權限,您需要使用全局流程註冊表或gproc,因爲流程將更改爲pid。
還有其他一些考慮因素:該過程可能使用的是其他節點上不存在數據的ETS表,或者它可能在過程字典中存儲了內容(來自隨機模塊的狀態)。
Erlang的普遍共識是流程不會在機器之間移動。相反,如果節點死亡,則要麼安排節點之間應用的應用接管。或者爲了分配系統,數據已經被分配給另一臺機器。無論如何,出現錯誤時使狀態保持不變的主要問題仍然存在,移動性與否 - 分發是解決持久性問題的好工具。
相關問題
- 1. 除了Erlang之外,還有其他的語言能否將代碼發送到正在運行的實例?
- 2. 是否可以通過GSON將ImageView發送到其他活動?
- 3. 如何將erlang dbg附加到正在運行的進程?
- 4. 是否有可能將字符串發送到Docker容器中的正在運行的進程中?
- 5. 是否可以將.NET System.Diagnostics.Process對象附加到正在運行的進程?
- 6. 是否可以將調試器附加到正在運行的PHP進程?
- 7. 將命令發送到正在運行的java進程
- 8. 是否可以將命令發送到現有的xterm進程?
- 9. 將消息發送到erlang的遠程節點端口
- 10. 點擊正在發送到其他應用程序的AppleEvents
- 11. 是否可以向Erlang的未註冊流程發送消息?
- 12. 如何確定特定節點是否可以找到所有其他節點?
- 13. 已停止的進程是否會阻止其他進程的正常運行?
- 14. 是否可以將JAR加載到正在運行的Java應用程序中?
- 15. 在Vb中如何發送終止消息到其他正在運行的進程?
- 16. 是否可以從erlang節點啓動外部二進制應用程序?
- 17. PHP - 將數據從一個進程發送到其他進程
- 18. 確定進程是否正在運行?
- 19. 檢查進程是否正在運行
- 20. 發送鍵盤輸入到正在運行的進程linux
- 21. 發送一個包到其他進程
- 22. 將參數發送到其他站點
- 23. 無法將按鍵發送到正在運行的進程中C#
- 24. 是否可以在節點集羣上運行sails.js?
- 25. 是否可以將WM_QUERYENDSESSION消息發送到不同進程中的窗口?
- 26. 我可以告訴其他進程是否正在創建文件?
- 27. 是否可以在並行進程中分發STDIN?
- 28. 如何將命令發送到正在運行的Java程序?
- 29. 通過Java進程將輸入發送到正在運行的JAR
- 30. ASIHTTP:addOperation當其他線程正在運行