Google現在為其GCP資料串流擷取服務Cloud Pub/Sub增加重播(Replay)功能,快速簡單地批次處理Backlog中訊息,即便資料訂閱者收到一連串有問題的串流資料,也能利用重播功能,丟棄某個事件的有問題訊息,或是回復到過去某個時間點的訂閱狀態,安全地修復程式錯誤。

Cloud Pub/Sub是Google可擴展的資料串流服務,提供將資料從發布者串流至訂閱者客戶端的訊息服務,而現在新增了重播功能,使用者可以重播舊事件或是訊息,為資料訂閱者提供一個額外處理訊息的機會。

正常的使用狀態,Cloud Pub/Sub發布者客戶端持續發布事件到Pub/Sub主題中作為訊息,而資料訂閱者則會平行地處理和消耗這些事件。在不少時候,訂閱者端可能發生故障而無法確認正在處理的訊息,抑或是發布者端產生了訂閱者不支援的資料,而這代表Backlog中可能存在部分訂閱者永遠不會確認的訊息。這時候新的重播功能就能發生作用,簡單的清除Backlog未被確認的訊息,或是回退Backlog狀態,幫助修復發布者或是訂閱者程式碼的錯誤。

Backlog訊息狀態發生問題有不少可能性,問題或許發生在資料發布者端,產生的訊息不符合訂閱者預期的格式,即便開發者對於資料發布者作出修改,但是之前未確認的訊息仍然存在,訂閱者也無法確認這些訊息,此時Cloud Pub/Sub增使用者可以使用Seek API批次確認某個特定時間點之前發布的所有訊息。

而且在過去,一旦被確認過的訊息,Pub/Sub便會丟棄該訊息,以至於使用者完全無法復原,Cloud Pub/Sub強大的重播功能,讓即便確認過的訊息也能往前回退。這個功能可以用於修復資料訂閱者發生的錯誤,當訂閱者確認了部分訊息後仍沒有完成預期的工作,使用者可以使用重播功能,一樣使用Seek API以倒帶取消確認之前的訊息,並修復訂閱者後接續之前的工作階段。Google表示,這個功能必須要在訂閱功能上,事先啟用retain_acked_messages屬性。

另外,重播還提供快照功能,使用者可以創建訂閱者Backlog的當前切確狀態,這個功能同樣可以應用在修復訂閱者錯誤上,當使用者想要迭代訂閱者程式之前,可以先使用CreateSnapshot API創建訂閱快照,一旦新的訂閱者程式發生問題,錯誤確認了訊息,使用者只要簡單的使用之前創建的訂閱快照,就能快速地使用Seek API,將訂閱Backlog恢復到創建快照時的狀態。

使用者可以重複這些重播功能,直到修復發布者或是訂閱者程式的錯誤,並正確的處理Backlog中的訊息。Cloud Pub/Sub重播功能提供開發者靈活的手段,在不需要冒著丟失訊息的風險,安全地修復錯誤。


Advertisement

更多 iThome相關內容