天天看點

逾時流式處理 - 沒有消息流入的資料異常監控

PostgreSQL , 流式處理 , 無流入資料逾時異常

流計算有個特點,資料流式寫入,流式計算。

但是有一種情況,可能無法覆寫。例如電商中的 收貨逾時,退款處理逾時 事件的流式監控。因為資料都不會再寫進來了,是以也無法觸發流式計算。

這些問題如何流式預警呢?

可以用逾時時間+排程的方式,當然這裡面有PostgreSQL的獨門秘籍:

1、CTE,文法靈活。

2、partial index,不需要檢索的資料不建構索引。

3、DML returning,可以傳回DML語句的結果,結合CTE實作最小互動計算。

4、multi-index bitmap scan,多個索引合并掃描,在使用OR條件時,可以結合多個字段的索引進行合并掃描。

1、被監控表的結構。裡面記錄了訂單、退款等事件的逾時處理時間,逾時通知次數,下一次通知時間間隔,完結狀态等。

2、建立partial index,也就是說,對未完結工單才需要通知使用者,這些資料是業務關心的,使用partial index可以簡化索引大小。提高速度。

3、擷取需要通知的資料,并且更新通知次數以及下一次的通知時間。

4、執行計劃完美

5、排程

<a href="https://github.com/digoal/blog/blob/master/201305/20130531_02.md">《PostgreSQL 定時任務方法2》</a>

<a href="https://github.com/digoal/blog/blob/master/201305/20130531_01.md">《PostgreSQL Oracle 相容性之 - DBMS_JOBS - Daily Maintenance - Timing Tasks(pgagent)》</a>

當然你如果使用阿裡雲,可以使用阿裡雲的排程平台,配置排程任務。

1、寫入1億資料,假設有100萬條同時逾時需要處理,耗時如何?

通知性能,比如每一批通知1萬條:

(小批量擷取,并更新逾時時間,目的是讓autovacuum介入,實時回收垃圾)

絲般柔滑

使用以上方法,可以完美的解決逾時資料的監控問題。性能好。

繼續閱讀