轉賬問題是屬於業務問題還是屬於技術問題?
但是很多人預設這是一個技術問題,可以使用技術上的事務機制確保一個賬戶減去的錢等同於另外一個賬戶增加的錢。本文重點不是討論誰對誰錯,而是討論大家忽視的邊界劃分問題,在你採購分散式事務時你有沒有倒問自己,這種用技術解決問題的解決方案是不是違背一條褲子適合所有人穿的人月神話?
賬戶中金額轉賬無疑屬於業務問題,但是在追求效率的今天,手工銀行轉賬時代需要通過記賬方式實現,而今有了大型資料庫則成為非常快速瞬間的事情。但是且慢,非常快速是如何快速?是一秒之內還是一眨眼?一眨眼是多少秒?這個賬戶前一秒減去一萬元,那個賬戶後一秒就增加一萬元?這種實時一致性背後有什麼機制?
CAP機制,兩個賬戶金額變動的延遲越小,說明一致性越高,但是有時我們真的需要這種一秒或幾毫秒之內的高實時一致性嗎?這還會金額詐騙提供方便了呢!
所有這些考量都要取決於業務上下文,實際上現實中也不存在瞬間轉賬的場景需求。這會為洗錢監控帶來不便。
因此,如果純粹從技術角度通過分散式事務中介軟體或資料庫來解決轉賬問題,就陷入技術至上的誤區,這些技術至上的人會推崇分散式事務,而認為DDD等業務分析設計方式是屠龍寶刀,實際上相反,分散式事務才可能最是屠龍寶刀,神話一樣存在,但是沒有使用價值和場景。
當然,這裡不想陷入演算法技術和業務解決方案的無休止爭論中,這是長期兩種思維模型而已。
那麼使用業務方法如何解決轉賬問題?這裡也不詳細討論,主要從領域事件和事件溯源角度去考慮,也有使用區塊鏈這種方式,為什麼我說區塊鏈會摧毀中心化的分散式事務元件技術?因為現有分散式事務機制無論如何分佈,都是基於一個信任中心下的分佈,不是真正基於不信任的分散,方向完全不同。
江山易改,思維難移,本文目的無非是如果你遭遇轉賬之類問題,首先業務戰略高度去想想,而不是被神話技術忽悠主導。
相關:
相關文章
- 請問關於Struts的Indexed屬性的問題Index
- 【調優】設計問題還是優化問題?優化
- Spring的問題,還是Tomcat的問題SpringTomcat
- 大衛談學習3:方法還是問題,這是個問題!
- JAVA關於判斷年份是閏年還是平年的問題Java
- javascript,還是javascript的問題JavaScript
- 健康還是工作,這是個問題
- 關於技術選型的問題
- 關於angular的$resource中的isArray屬性問題Angular
- 長達 12 年,Go 泛型才引入,是政治,還是技術問題?Go泛型
- 關於“屬性”的幾個問題,也許面試會問到哦~面試
- 一個非技術問題的問題
- 關於delete還是update會產生更多日誌的問題delete
- SOA最核心問題:人還是流程?
- oracle驅動還是程式有問題?Oracle
- java經典問題:傳值還是傳引用(轉)Java
- JsonRequestBehavior不存在問題,JsonRequestBehavior屬於哪個dllJSON
- 專案遇到關於 enctype="multipart/form-data" 屬性問題。ORM
- 技術不是問題
- ORACLE 面試問題-技術篇 [轉]Oracle面試
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- 【基礎】EM 還是 REM?這是一個問題!REM
- 不要將API質量視為技術問題,而更多地是系統問題 - mattheAPI
- 關於MDM 的屬於Tech還是屬於Apps的思考。。APP
- 關於FastHashMap問題ASTHashMap
- OBQ 問答| OceanBase 是如何支援 HTAP 的?技術問題,就上 OBQ!
- 救命,關於類轉換問題
- 關於 a 標籤跳轉問題
- 關於UINavigationBar和UITabBar的translucent屬性的問題UINavigationtabBar
- 關於vuejs的偵聽屬性watch的三個問題VueJS
- 【轉】關於軟體外包企業如何建立員工歸屬感的問題
- [討論]一個設計方面的問題――登陸這個動作(或叫方法)應該屬於User類還是屬於Application類(描述系統類)APP
- [20160314]關於sql寫法問題使用=還是用inSQL
- 技術問題記錄
- 直播未來屬於RTMP還是HTTP?HTTP
- 處於問題核心的壓電式能量收集技術
- 關於虛擬化技術的幾個問題薦
- 問一個關於SSH整合是在action中應用session的問題Session