由于每秒数据吞吐量巨大,需要将实时数据存到event hubs,再由event hubs定时定量保存到document DB。
event hubs的介绍详见微软官页:https://azure.microsoft.com/zh-tw/services/event-hubs/
從網站、應用程式和裝置擷取雲端等級的遙測數據
- 幾乎每秒即時地記錄數百萬個事件
- 使用靈活的授權與節流來連接裝置
- 以時間為基礎處理事件緩衝
- 利用彈性化的規模來管理服務
- 使用原生用戶端程式庫連接廣泛的平台
- 其他雲端服務隨插即用的配接器
每秒串流處理數百萬個事件
Azure 事件中樞是極具調整規模彈性的「發佈-訂閱」服務,其每秒可吸取上百萬項事件,並將這些事件串流至多項應用程式。如此可讓您處理及分析由所連接之裝置與應用程式所產生的大量資料。當事件中樞收集到資料之後,即可利用任何即時分析提供者或以批次/儲存裝置介面卡,來轉換及儲存資料。
處理具變動式負載數據來源的事件
現今的互聯世界即是由巨量資料所構成。巨量資料源自許多變動式負載數據來源,像是每隔幾分鐘即產生遙測資料的互聯車輛與控溫器、每秒產生事件的應用程式效能計數器,以及擷取每位使用者個別動作遙測資料的行動應用程式。事件中樞是一款受管理的服務,其能吸取規模具彈性的事件,以容納這些變動式負載數據來源以及由間歇連接所引發的尖峰情況。
跨平台連接數百萬個裝置
因為所連接的裝置種類成長快速,且涉及各種平台與通訊協定,所以讓吸取來自各種裝置的資料形成相當大的挑戰。而事件中樞不僅能處理各式規模的彙總串流,同時也可迎接這項連接不同資料來源的挑戰。事件中樞可輕鬆佈建容量,處理來自上百萬項裝置的事件,同時也能以裝置為單位維持事件順序。對進階訊息佇列通訊協定 (AMQP) 與 HTTP 所提供的支援,能讓許多平台皆可使用事件中樞。常見的平台也有原生用戶端程式庫可用。
定义event hubs:
private EventHubClientMapping _eventHubClient = new EventHubClientMapping();
保存:
1 protected void SaveDomainUserToFile(DomainUser user, bool isReceive = false) 2 { 3 System.Runtime.Serialization.Json.DataContractJsonSerializer json = 4 new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(DomainUser)); 5 6 json.WriteObject(stream, user); 7 stream.Write(_cn, 0, _cn.Length); 8 9 byte[] bs = stream.ToArray(); 10 String contentStr = System.Text.Encoding.UTF8.GetString(bs); 11 //Event Hub 12 try 13 { 14 Notify(contentStr); 15 } 16 catch (Exception ex) 17 { 18 throw ex; 19 } 20 21 StartSave(); 22 }
调用接口方法:
1 public void Notify(string cookie) 2 { 3 _eventHubClient.AddMessage(cookie); 4 }
webconfig中要加入这两句:
1 </configuration> 2 <appSettings> 3 <add key="MappingDataFlowEventHubConnection" value="Endpoint=sb://xxx.servicebus.chinacloudapi.cn/;SharedAccessKeyName=sender;SharedAccessKey=xxx;TransportType=Amqp"/> 4 <add key="MappingDataFlowEventHubName" value="mapping-response-eventhub" /> 5 </appSettings> 6 </configuration>