2016-08-08 37 views
0

我正在爲Azure事件中心實施相同的POC。如何使用Azure Event Hub實現高速處理?

快速流程簡介。

  • 創建工具從本地文件夾讀取CSV數據並將其發送到事件中心。
  • 我們正在將事件數據批量發送到事件中心。
  • 使用12個工具實例(並行),我可以在1分鐘內向事件中心總共發送600 000行消息。
  • 但是,在接收端,要接收60萬行數據,需要超過10分鐘。

需要實現

  • 我想匹配/接收器上增加一倍我出口的速度 過程中的數據。現有配置

我使用戶的配置是

  • TU - 10 32分區中的一個事件轂。如在MSDN

  • 只有差提的是,我發送數據的線在間歇

  • 編碼邏輯進入相同。
    EventProcessorhost帶有選項{MaxBatchSize = 1000000,
    PrefetchCount = 1000000

回答

1

爲了在eventhubs實現更高的出口速率(又名更快的處理管道):

  1. 創建可縮放出管道 - EventHub中的每個分區都是用於處理EventHub事件的unit-of-scale。用你描述的量表(6拉赫事件每分鐘 - > 10K事件每秒 - 與32個分區 - 你已經得到了這個權利)。確保你創建儘可能多的分區,因爲你預計你的管道需要在不久的將來。想象一下,分析高速公路上的交通情況並且沒有。車道是交通量的唯一限制。

  2. 跨分區的負載分配相等:如果您使用的是SendToASpecificPartition或SendUsingPartitionKey,則需要負責均衡負載分配。如果您使用EventHubClient.Send(EventDataWithOutPartitionKey) - EventHubs服務將確保您的所有分區均被加載。如果單個EventHub分區負載過重 - 您可以在EventHub上處理所有事件的時間將受限制爲no。此分區上的事件。

  3. 向外擴展的物理上Receiver/EventProcessorHost資源:最重要的網絡(套接字&帶寬)&後一個點,CPU &內存。使用PartitionManagerOptions.MaxReceiveClients增加每個EventProcessorHost實例創建的最大數量EventHubClient(其中專用MessagingFactory,其映射到1 socket)。默認情況下它是16

讓我知道如何去... :)

+0

嗨Sreeram,在點1:入口正在6發件人的12例缺乏事件/分鐘。活動中心仍然是32分。第2點:我正在使用EventHubClient.Send(EventDataWithOutPartitionKey),以便事件處理器主機可以管理負載。第3點:我想獲得關於Eventhub的MessageFactory方面的更多細節。你能不能請示例示例參考? [注意]:我使用下面的EventProcessorHost的構造函數public EventProcessorHost(string hostName,string eventHubPath,string consumerGroupName,string eventHubConnectionString,string storageConnectionString); –

+0

嗨阿尼爾,我不得不重溫點(3) - PL。看一看。此外,請確保EventHubs接收是您真正的瓶頸 - 在IEventProcessor.ProcessEventsAsync中刪除任何阻止I/O調用(消除您的ProcessEventsAsync對10分鐘不起作用的可能性。) – Sreeram

+0

Hi @Sreeram,I嘗試將TU增加到20,並發現,在5分鐘(較早的10分鐘)內處理了6條Lacks消息。我想將事件中心分區增加到100(可以用100分區創建新分區)並檢查負載測試。用100分區增加/創建新的EH的方法?我想檢查所有更高的可能性,然後再將其用於我的應用程序。 –

相關問題