遠端資源是指系統外的資源,例如另一個服務的資料,或是雲端資源等。
在遠端資源已建立後並回應成功時本地應用程式發生故障,因此出現遠端資源存在,但本地紀錄未被更新的狀況。
plantuml
@startuml
participant client
participant app
database db
participant remote
skinparam sequenceMessageAlign center
skinparam ParticipantPadding 50
client ->> app : create request
activate app
app -->> client : accepted
app -> db : CREATE record\nwith state 'building'
activate db
db -->> app : success
deactivate db
|||
app -> remote:CREATE resource
activate remote
remote -->> app !! :success
deactivate remote
note over app : system failure
note over db: record state remains 'building'\n, but resource existed.
@enduml
由於已建立的資源紀錄未被更新,所以狀態會停在「建構中(building)」。
可能的解法是透過一時間較短的排程(e.g. 每分鐘)固定去掃描這些「建構中」的紀錄,去檢查遠端資源是否已確實建立,若是則將紀錄狀態改為「已建立(created)」若否則標記為「建立失敗(created-failed)」,留待使用者手動刪除建立失敗的記錄。
「遠端資源已建立但本地紀錄更新失敗」狀況同此處理手法。
沒有留言:
張貼留言