共用方式為


Azure 串流分析) (時間扭曲原則

在串流分析中,所有資料流程事件都有與其相關聯的 時間戳記 。 使用者可以使用 TIMESTAMP BY 關鍵字,在下列兩個不同時間的其中之一之間進行選擇:

  • 應用程式時間,也就是事件產生的時間, (由產生事件的應用程式/裝置所標示) 。 使用應用程式時間時,您可以使用全域時間軸處理所有事件,或使用自己的時間軸分析每個裝置/分割區使用 子資料流程;
  • 抵達時間,事件到達雲端的時間 (例如抵達時間,IoT 中樞或事件中樞) 。

除了選擇時間戳記之外,使用者可能還需要定義延遲抵達和順序錯亂原則,因為發生下列問題:

  • 事件的產生者有時鐘扭曲。 當生產者來自不同機器時,這很常見,因此它們有不同的時鐘。
  • 由於網路延遲,事件源自于相同的時鐘,可能會以不同于事件來源的順序抵達事件中樞或IoT 中樞
  • 分割區之間的時鐘扭曲。 使用非資料分割查詢時,來自所有分割區的事件都會由使用者選擇的時間戳記合併。 分割區之間的時鐘扭曲可能會導致處理延遲,因為合併需要等候最慢的資料分割。

不依序的輸入資料流程可以是:

  • 已排序 (,因此 延遲) 。
  • 已由系統調整 (根據使用者指定的原則)。

串流分析按照應用時間處理時,可容許延遲和順序錯亂的事件。

順序不足原則

在串流分析中,依時間排序事件非常重要。 不過,由於上述 3 個問題,因此通常收到順序錯亂的情況,這可能會影響查詢的結果。 [順序錯亂原則] 允許在到達定義的容錯視窗中時,依時間戳記 重新排序事件 。 視您選擇的設定而定,抵達晚于容錯的事件 會卸載或調整

  • 調整︰調整為看起來是在最低可接受時間抵達。
  • 捨棄︰放棄。

您可以在作業) 的 [事件排序] 索引標籤的 [Azure 入口網站 (] 中調整此設定。 如需詳細資訊,請參閱 事件順序考慮頁面

設定順序錯亂原則大於 0 時,串流分析會將事件緩衝到該視窗,並使用使用者定義的時間戳記重新排序事件,然後再套用時態轉換。 一般而言,從 3 秒視窗開始是很好的最佳做法,然後調整值以減少調整時間的事件數目。 請注意,由於緩衝,副作用是輸出會延遲相同的時間量。 因此,您必須微調值,以減少順序不足的事件數目,並讓延遲保持低。

延遲抵達容錯

延遲抵達容錯時間範圍可用來考慮因上述各種原因而到達輸入來源的事件延遲。 簡而言之,延遲抵達時間是事件產生與輸入來源收到事件之間的延遲上限。 首先會根據延遲抵達容許進行調整,再根據順序錯亂進行調整。 System.Timestamp () 資料行會將最終時間戳記指派給事件。

只有在按照應用時間處理時,才適用這個設定,否則會遭到忽略。 您也可以在作業) 的 [事件排序] 索引標籤的 [Azure 入口網站 (中設定它。 如需詳細資訊,請參閱 事件順序考慮頁面

當事件延遲時,系統會根據所選的動作) ,將時間戳記調整為輸入來源的目前排入佇列時間減去延遲抵達容錯視窗 (或捨棄。 合併相同輸入資料流的多個分割區或多個輸入資料流時,延遲抵達容許是每個分割區等候新資料的時間上限。

延遲抵達容錯和疏鬆事件

延遲抵達原則可讓串流分析在缺少輸入事件的情況下,以時值方式向前移動和產生輸出。 當輸入事件在部分事件中樞分割區 (或完全未收到) 時,這非常有用。

例如,輸入事件會每分鐘針對 select* 查詢產生一次。 如果沒有使用此原則,串流分析將無法產生輸出結果,直到事件抵達所有事件中樞分割區 (,才能將時間向前移動) 。 如果事件中樞有 16 個分割區,而且每個事件都傳遞至不同的分割區,這可能表示 16 分鐘。 使用預設的 5 秒原則時,時鐘會在第一個事件之後向前移動 5 秒,因此在第一個事件之後產生輸出事件 5 秒。

另請參閱

時間管理 (Azure 串流分析)
System.Timestamp () (串流分析)
TIMESTAMP BY (Azure 串流分析)
事件順序考慮