✅ Azure 串流分析
所有數據流事件都有與其相關聯的 時間戳 。 使用者可以使用 TIMESTAMP BY 關鍵字來選擇這兩個不同的時間之一:
- 應用程式時間,也就是產生事件的時間(如產生事件的應用程式/裝置所標記)。 使用應用程式時間時,您可以使用全域時間軸處理所有事件,或使用自己的時間軸分析每個裝置/分割區使用 子數據流;
- 抵達時間,事件到達雲端的時間(例如 IoT 中樞或事件中樞的抵達時間)。
除了選擇時間戳之外,使用者可能還需要定義延遲抵達和順序錯亂原則,因為下列問題:
- 事件的產生者有時鍾扭曲。 當產生者來自不同機器時,這很常見,因此它們有不同的時鐘。
- 由於網路等待時間,來自相同時鐘的事件可能會以與來源不同的順序抵達事件中樞或IoT中樞
- 分割區之間的時鐘扭曲。 使用非數據分割查詢時,來自所有分割區的事件都會由使用者選擇的時間戳合併。 分割區之間的時鐘扭曲可能會導致處理延遲,因為合併需要等待最慢的數據分割。
不依序的輸入資料流可以是:
- 已排序 (因此 延遲)。
- 根據使用者指定的原則,由系統調整。
串流分析容許應用程式時間處理時,延遲和順序錯亂的事件。
順序不足原則
在串流分析中,依時間排序事件非常重要。 不過,由於上述 3 個問題,因此通常收到順序錯亂的情況,可能會影響查詢的結果。 「順序錯亂原則」允許在定義容錯視窗中到達時,依時間戳 重新排序事件 。 根據您選擇的設定,抵達晚於容錯的事件會 卸除或調整。
- 調整:已調整為已於最新的可接受時間到達。
- Dropped: Discarded.
您可以在 Azure 入口網站中調整此設定(在作業的 [事件排序] 索引標籤中)。 如需詳細資訊,請參閱 事件順序考慮頁面。
設定大於 0 的順序原則時,串流分析會將事件緩衝處理到該視窗,並在套用暫時轉換之前,使用使用者定義的時間戳重新排序事件。 一般而言,從 3 秒時間範圍開始,是很好的最佳做法,然後調整值,以減少調整時間的事件數目。 請注意,由於緩衝處理,副作用是輸出會延遲相同的時間量。 因此,您必須微調值,以減少順序不足的事件數目,並維持低延遲。
延遲抵達容錯
延遲抵達容錯時間範圍可用來考慮因為上述各種原因而到達輸入來源的事件延遲。 簡言之,延遲抵達時間範圍是事件產生和在輸入來源接收事件之間的最大延遲。 會先根據延遲抵達容錯進行調整,然後下一步完成順序不足。 System.Timestamp() 資料行會將最後的時間戳指派給事件。
此設定僅適用於應用程式時間處理時,否則會忽略它。 您也可以在 Azure 入口網站中設定它(在作業的 [事件排序] 索引標籤中)。 如需詳細資訊,請參閱 事件順序考慮頁面。
當事件遲到時,其時間戳會調整為輸入來源的目前加入佇列時間減去延遲抵達容錯時間(或捨棄,視所選的動作而定)。 當來自相同輸入數據流或多個輸入數據流的多個分割區結合在一起時,延遲抵達容錯是每個分割區等候新數據的時間上限。
延遲抵達容錯和疏鬆事件
延遲抵達原則可讓串流分析在沒有輸入事件的情況下,以時態方式向前移動和產生輸出。 當輸入事件是疏鬆的時,這非常有用(或完全未在部分事件中樞分割區中收到)。
例如, 針對 select* 查詢,每分鐘會產生一次輸入事件。 如果沒有使用此原則,串流分析就無法產生輸出結果,直到事件到達所有事件中樞分割區為止(向前移動時間)。 如果事件中樞有16個分割區,而且每個事件都傳遞至不同的分割區,這可能表示16分鐘。 使用預設的 5 秒原則時,時鐘會在第一個事件之後向前移動 5 秒,因此輸出事件會在第一個事件之後產生 5 秒。
See Also
Time Management
System.Timestamp() (串流分析)
TIMESTAMP BY
事件順序考慮