Google替分散式資料庫Spanner加入原生訊息佇列功能,讓應用程式可以在同一筆資料庫交易中,同時更新資料並加入後續任務。兩個動作會一起成功或一起取消,避免AI代理已經改變資料狀態,後續工作卻沒有執行。
AI代理執行退款、調整庫存或把工作交給其他代理時,通常不只需要修改資料庫,還要把接下來的工作送進訊息佇列,但要是兩個動作分別由不同系統處理,就可能發生資料已經更新,但工作沒有送出,或工作已經送出,資料庫變更最後卻失敗。開發團隊因此還得額外處理兩邊狀態不同步的問題。
Spanner現在把訊息佇列直接放進資料庫,新增任務可以和其他資料異動放在同一筆交易,例如AI代理核准退款時,可以同時把訂單改成「已核准」,並加入實際執行退款的工作。只有整筆交易成功提交,訂單狀態與退款任務才會一起生效,交易失敗則兩者都不會生效。
負責執行工作的程式可以透過SQL從佇列取得任務,完成後再更新處理結果並移除訊息。系統也能指定任務稍後才開始執行,例如等待主管核准一段時間後再自動升級處理,要是AI代理需要較長時間呼叫外部服務或完成多步驟工作,處理端也能延長持有任務的時間。
在訊息可靠性方面,Spanner會確保訊息至少送達一次,因此碰到網路或執行失敗時,同一項工作仍可能再次出現,而同一則訊息最多只會被成功確認一次。對退款、付款等不能重複執行的動作,應用程式仍需要加入防止重複處理的設計,不能預設所有外部操作都只會執行一次。
Spanner原生訊息佇列主要用於交易完成後觸發工作、安排稍後執行的任務,以及逐項確認工作是否完成。既有的Spanner變更串流功能則著重持續擷取資料變化,再提供給下游分析、儲存或其他系統使用。原生訊息佇列目前提供給Spanner Enterprise與Enterprise Plus版本。
Comments (0)
Sign in to comment