轉賬問題是屬於業務問題還是屬於技術問題?
但是很多人預設這是一個技術問題,可以使用技術上的事務機制確保一個賬戶減去的錢等同於另外一個賬戶增加的錢。本文重點不是討論誰對誰錯,而是討論大家忽視的邊界劃分問題,在你採購分散式事務時你有沒有倒問自己,這種用技術解決問題的解決方案是不是違背一條褲子適合所有人穿的人月神話?
賬戶中金額轉賬無疑屬於業務問題,但是在追求效率的今天,手工銀行轉賬時代需要通過記賬方式實現,而今有了大型資料庫則成為非常快速瞬間的事情。但是且慢,非常快速是如何快速?是一秒之內還是一眨眼?一眨眼是多少秒?這個賬戶前一秒減去一萬元,那個賬戶後一秒就增加一萬元?這種實時一致性背後有什麼機制?
CAP機制,兩個賬戶金額變動的延遲越小,說明一致性越高,但是有時我們真的需要這種一秒或幾毫秒之內的高實時一致性嗎?這還會金額詐騙提供方便了呢!
所有這些考量都要取決於業務上下文,實際上現實中也不存在瞬間轉賬的場景需求。這會為洗錢監控帶來不便。
因此,如果純粹從技術角度通過分散式事務中介軟體或資料庫來解決轉賬問題,就陷入技術至上的誤區,這些技術至上的人會推崇分散式事務,而認為DDD等業務分析設計方式是屠龍寶刀,實際上相反,分散式事務才可能最是屠龍寶刀,神話一樣存在,但是沒有使用價值和場景。
當然,這裡不想陷入演算法技術和業務解決方案的無休止爭論中,這是長期兩種思維模型而已。
那麼使用業務方法如何解決轉賬問題?這裡也不詳細討論,主要從領域事件和事件溯源角度去考慮,也有使用區塊鏈這種方式,為什麼我說區塊鏈會摧毀中心化的分散式事務元件技術?因為現有分散式事務機制無論如何分佈,都是基於一個信任中心下的分佈,不是真正基於不信任的分散,方向完全不同。
江山易改,思維難移,本文目的無非是如果你遭遇轉賬之類問題,首先業務戰略高度去想想,而不是被神話技術忽悠主導。
相關:
相關文章
- [轉載]什麼是P問題、NP問題和NPC問題
- JAVA關於判斷年份是閏年還是平年的問題Java
- JsonRequestBehavior不存在問題,JsonRequestBehavior屬於哪個dllJSON
- 關於UINavigationBar和UITabBar的translucent屬性的問題UINavigationtabBar
- 【轉】關於軟體外包企業如何建立員工歸屬感的問題
- 健康還是工作,這是個問題
- 什麼是P問題、NP問題和NPC問題
- 長達 12 年,Go 泛型才引入,是政治,還是技術問題?Go泛型
- 關於vuejs的偵聽屬性watch的三個問題VueJS
- 關於 a 標籤跳轉問題
- [20211206]修改job屬性問題.txt
- OBQ 問答| OceanBase 是如何支援 HTAP 的?技術問題,就上 OBQ!
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- 不要將API質量視為技術問題,而更多地是系統問題 - mattheAPI
- 【基礎】EM 還是 REM?這是一個問題!REM
- SuperObject Delphi 的 JSON 屬性亂序 – 操作類改造 – 關於屬性順序的問題ObjectJSON
- 關於node服務部署的問題
- 對 JsonConvert 的認識太膚淺了,終於還是遇到了問題JSON
- 關於this指向的問題
- 關於跨域問題跨域
- 處於問題核心的壓電式能量收集技術
- 關於Filter中ServletRequest強轉HttpServletRequest問題FilterServletHTTP
- 問題No property 屬性名 found for type 類名
- MySQL關於事務常見的問題MySql
- 分散式事務系列 - 解決跨庫轉賬問題分散式
- 關於 Puerts 的效能問題
- 關於django跨域問題Django跨域
- 關於並查集問題並查集
- 關於 swoole 除錯問題除錯
- 關於dcat-admin問題
- 關於JQuery操作checkbox問題jQuery
- 關於rem佈局問題REM
- 關於MQTT 使用遇到問題MQQT
- 關於DrawerLayout的小問題
- 關於javascript的this指向問題JavaScript
- Java服務.問題排查.問題復現Java
- 問題賬戶需求分析
- 回答在職前端的疑問:平時工作是主抓業務還是主抓技術?前端