Boost message passing between erlang nodes

看這篇文章不錯,有些實用性,特轉來大家共享.
文章內容教長,咱們長話短說,首先說場景與結果
場景:
作者在本機進行多個Erlang Node之間的消息通信時,效率很高, 可是當兩個Node位於不同的機器進行消息發送時,效率相差很大.

因此作者嘗試進行優化,其在每個Node上加入一個Broker(中間人),進行消息緩衝.消息發送時,不是直接通過 ! 發送,而是交給這個Breoker, 由其進行消息的緩存, 當消息到達一定數目,或者規定的超時到達時, 將所有的消息發送給目標Node, 由目標Node發給對應的本機pocess. 這個做法其實是優化網絡傳輸, 大塊數據一次傳輸vs小數據多次傳輸, 最終提升消息傳輸性能.

作者測試的結果:

沒有消息緩衝機制:
本機雙節點 : 5.3 million messages/min;
不同機器雙節點: [b]700 K[/b] messages/min.

加入消息緩衝機制:
本機雙節點 : 5.3 million messages/min;
不同機器雙節點: [b]2.1 million [/b]messages/min;

看一個示意圖就清楚了:
[img]/upload/attachment/93194/16389c1f-85b8-3c81-8337-9e7948282110.jpg[/img]

原文地址:
http://www.ostinelli.net/boost-message-passing-between-erlang-nodes/

代碼:
http://www.ostinelli.net/wp-content/uploads/2009/04/erlang_mq_boost.zip
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章