簡體   English   中英

在Erlang中,是否可以將正在運行的進程發送到其他節點?

[英]In Erlang, is it possible to send a running process to a different node?

我一直在研究移動代理,並想知道是否有可能將正在運行的進程發送到erlang中的另一個節點。 我知道可以在另一個節點上發送一個消息進程。 我知道可以在集群中的所有節點上加載模塊。 是否可以將特定節點上某個狀態的進程移動到另一個節點並恢復其狀態。 也就是說,erlang能提供強大的移動性嗎? 或者是否可以在erlang中提供強大的移動性?

是的,這是可能的,但沒有“移動進程到節點”調用。 但是,如果進程是使用遷移功能構建的,那么您當然可以通過將進程的功能及其狀態發送到另一個節點並在那里安排生成來實現。 要獲得正確的進程標識,您需要使用全局進程注冊表或gproc,因為進程將更改pid

還有其他一些注意事項:該過程可能正在使用其數據不存在於另一個節點上的ETS表,或者它可能已在過程字典中存儲了內容(從隨機模塊中可以看到狀態)。


Erlang的普遍共識是,流程不會動員在機器之間移動。 相反,如果節點死亡,則可以安排在節點之間接管應用程序。 或者為了分發系統,所以數據已經分發到另一台機器。 在任何情況下,在發生錯誤時使狀態持久的主要問題仍然存在,移動性與否 - 並且分發是解決持久性問題的好工具。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM