2012-07-18 58 views
4

我正在設計一個將會與ZeroMQ通話的服務器應用程序。在不進入細節的情況下,服務器將存儲和服務(從查詢請求)元組。要在ZeroMQ中進行多部分或不進行多部分

我的問題涉及有線協議的設計。我想將我的元組從一端發送到另一端。我看到兩個選項:

  • 序列化我的元組(使用protobuf或其他)並將其作爲單個消息發送。
  • 發送我的元組作爲多部分消息;第一部分包含eventid,第二部分包含eventstring。

這兩個選項中的任何一個都比另一個更好?The ZeroMQ Guide,有一個chapter on Advanced Request-Reply patterns嚴重使用多部分郵件信封。這是否意味着我作爲一個用戶應該嘗試堅持單一消息,以便在將來啓用更高級的消息模式?

回答

1

我建議看一下Majordomo protocol的有線協議。您可以從該示例中看到,結構中的每個「字段」都作爲單獨的框架發送。這工作得很好,並得到很好的支持。

您也可以定義一個字節佈局並將您的數據作爲一個幀發送。您需要處理任何endian問題(如果您在小端和大端平臺上運行代碼),但這很容易處理。如果你不知道如何,那麼就使用像Majordomo這樣的框架技術。

使用1幀與多幀之間的性能可以忽略不計。除非你每秒發送千兆比特,否則這不太可能是個問題。與往常一樣,基準測試您的具體情況,然後再「優化」並浪費一大堆時間來節省每條消息200納秒。