堅持每天寫一個總結的博客,今天又是一個新的開始! 今天我要說的是一個關於發送簡訊通知發送的問題。具體的業務流程是這樣的,現在需要對用戶的一個提現的申請進行審核,審核的內部需要控制很多的業務, 1.檢查用戶的提現餘額-> 2.減去用戶的賬戶金額->3.減去公司的結算賬戶的餘額-> 4.創建用戶的提現日 ...
堅持每天寫一個總結的博客,今天又是一個新的開始!
今天我要說的是一個關於發送簡訊通知發送的問題。具體的業務流程是這樣的,現在需要對用戶的一個提現的申請進行審核,審核的內部需要控制很多的業務,
1.檢查用戶的提現餘額-> 2.減去用戶的賬戶金額->3.減去公司的結算賬戶的餘額-> 4.創建用戶的提現日誌記錄->5. 創建公司賬戶的資金變動日誌-> 6.提現成功
後,需要給用戶發送提現到賬的簡訊通知。這是一系列需要處理的事情。
要實現這個流程,保證資金的數據的不出錯,就必須要在一個事物中控制這個流程。有分析可知,第1 到 第5步,這些需要在一起執行,要成功都成功,要失敗
就都失敗,這樣金額的數據才不會錯。所以我就把幾個任務放在一個事物裡面,控制他們執行的一致性。
然後,要是怎樣處理髮送簡訊的這一塊的任務的呢?
首先我們要從事物,業務兩塊來考慮:首先,簡訊的業務是必須的嗎?不是。簡訊的發送成功會影響數據準確性嗎?不會。簡訊只是一個給用戶的溫馨提示,即使沒法
送,也不影響數據,再者,簡訊的發送就是調用一個發送的介面,一使用就會發送,如果我們的程式在發送後出錯了,事務回滾,但是簡訊卻發送了,也會給用戶帶來
不好的影響。所以,這個完全可以從上面的事務中剝離出來,成為事務之外的任務。即,事務執行成功,發送簡訊提示,不成功就不發送。那麼這樣,任務就解決問題了。
今天為什麼要寫這個總結,其實不只是說單純的介紹這個業務流程,我更想說的是一個編程的思想,在任務和邏輯、業務和流程的問題上,我們要保證數據的正確性
的同時,要學會將任務抽象話,減少事務間的耦合。