2012-03-30 71 views
1

我想使用zeromq PUB/SUB(python eventlets)實現一個代理。 zeromq 2.1似乎沒有在發佈者處實現過濾,並且所有消息都被廣播給所有應用過濾器的訂閱者。是否有某種解決方法可以在出版商處實現過濾。如果沒有約25個發佈者和25個訂閱者通過代理交換msg_size〜= 5K的每秒200個信息的msgs @ max速率,那麼性能會有多糟糕。ZeroMQ PUB/SUB過濾和性能

是否有任何經過開源驗證的零mq代理實現?

回答

3

你有3個問題:

  • 我能在發佈者過濾器自己? - 是
  • 發送200 m/s到25個節點的性能有多糟糕? - 這取決於你的信息有多大。但是,不,在這個範圍內,你將不會遇到任何問題;問題出現在你開始在IO吞吐量(1 gbit/s/8 = 125 MiB/s。125 * .7(verhead)= 87 MiB/s。87 MiB/5 KiB(每msg)= 17000 m/s在你開始填充你的IO容量之前,每個節點的速度是712 msg/s,但是如果你有這個問題,你可能只需要使用PGM並以17000米/秒的速度進行組播。 ?經紀人實現 - 他們不存在AFAIK - 但指南介紹瞭如何創建一個可靠的「經紀人」,與Majordomo pattern

您將需要投入更多的細節,你的問題:

  • R equirements?
  • 什麼是你的糟糕表現?
  • 信息size?
  • 吞吐量要求?
  • 主幹速度(10 gbit/s)?

這就是說,如果你需要一個經紀人,你爲什麼不使用RabbitMQ作爲ZMQ設備與RMQ交談?

+0

謝謝。我已經更新了這個問題。我期待max_size〜= 5K。它可能不是25個不同的節點。一些pub/sub服務將在同一個節點中運行。如何使用zeromq 2.1本地功能在發佈者本身進行過濾 – Anoop 2012-03-30 10:14:42

+0

這不是2.1的功能。 – Henrik 2012-03-30 14:12:47

1

從ØMQ指南:

從ZeroMQ 3.x版,過濾使用已連接的協議(tcp://ipc://)時發生在發佈側。使用epgm://協議,過濾發生在用戶端。在ZeroMQ v2.x中,所有的過濾都發生在用戶端。