erlang節點間通訊是可以配置的,預設的是inet_tcp 。當2個節點要溝通的時候,net_kernel模組會負責建立必要的連線。 inet_tcp會呼叫底層的gen_tcp進行資料傳送接受。 rpc或者節點間的訊息互動都是通過這個port出去的。
在分布節點間,有時候會有大量的訊息流動,那麼所有的訊息都是通過這個port出去 進來,所以這個port的效能極大的影響了節點間通訊的效率。那麼有時候, 我們會想微調這個port的引數,根據業務的特點實現效率最大化,但是port如何得到呢?
node_port(node)->
=lists:keyfind(owner, 1, element(2, net_kernel:node_info(node))),
hd([p|| p<-erlang:ports(), erlang:port_info(p, connected) == ])
有了port, 那麼我們就可以設定tcp port的水位線,buffer等等。
inet:setopts(node_port('xx@nd-desktop'), ).
另外要注意 nodeup nodedown可能會換了個tcp鏈結 要注意重新獲取。
還有另外一種方法,設定所有gen_tcp的行為, 比如以下方法:
erl -kernel inet_default_connect_options '[, ]'
但是這個影響面非常大, 影響到正常tcp的引數了。
程序間的通訊 IPC通道
內部程序通訊,是指在同一臺計算機當中的不同程序之間進行通訊。對於兩個程序之間的通訊方式有很多種,比如檔案共享,socket通訊,管道等,這裡主要講的是通過ipc channel的方式 主要用到的命名空間有以下幾個 using system.runtime.remoting using system....
C IPC通道程序間通訊
有乙個解決方案,其中包括乙個windows服務和乙個windows應用程式,兩者之間需要進行通訊。查了下,可以使用多種方法,如web service 適用於不同系統及跨平台情況 net remoting 訊息佇列 wcf 整合了前述方法的功能,但太新,不支援windows2000及以前的系統 其中r...
Erlang程序間通訊和節點間通訊學習筆記
在erlang中進行程序間通訊的唯一方法就是訊息傳遞。乙個訊息通過原語 send 傳送給另乙個程序 pid messagesend是乙個會對其引數進行求值的原語。它的返回值是傳送的訊息。原語receive被用於接收訊息。它的語法如下 receive message1 when guard1 acti...