业务设计原则
下面這些內容摘自張開濤的書籍《億級流量網站架構核心技術》,推薦大家閱讀本書。
業(yè)務設計原則,主要有:
防重設計
比如,結算頁面要考慮重復提交的問題,還有下單時扣減庫存要防止重復扣減的問題。解決方案可以考慮防重key、防重表。而有些場景下如重復支付,是因為有的電商網站同時支持微信支付、京東支付,渠道不一樣是無法防止重復支付的。但是在系統(tǒng)設計時,需要將支付的每筆情況記錄下來。
冪等設計
在交易系統(tǒng)中,經常會用到消息,而現(xiàn)有消息中間件基本不保證不發(fā)生重復消息的消費。因此,需要業(yè)務系統(tǒng)在重復消費時進行冪等處理。還有在使用第三方支付時,第三方支付會進行異步回調,也要做好回調的冪等處理。
流程可定義
如果接觸過保險業(yè)務,就會發(fā)現(xiàn)不同保險的理賠服務是不一樣的。在設計系統(tǒng)時就設計了一套專門的理賠流程模塊。而承保流程和理賠流程是分離的,在需要時進行關聯(lián),從而可以復用一些理賠流程,并提供個性化的理賠流程。
狀態(tài)與狀態(tài)機
在設計交易訂單系統(tǒng)時,會存在正向狀態(tài)和逆向狀態(tài),正向狀態(tài),例如待付款、待發(fā)貨、已發(fā)貨;逆向狀態(tài)如取消訂單、退款等。正向狀態(tài)和逆向狀態(tài)應該根據系統(tǒng)的特征來決定要不要分離存儲。狀態(tài)設計時應有狀態(tài)軌跡,方便用戶跟蹤當前訂單的軌跡并記錄相關日志,萬一出問題時可回溯問題。
另外,還有訂單狀態(tài)的變遷,例如待支付、已支付待發(fā)貨、待收貨的遷移。要考慮要不要使用狀態(tài)機來驅動狀態(tài)的變更和后續(xù)流程節(jié)點的操作,尤其當狀態(tài)很多的時候使用狀態(tài)機能更好的控制狀態(tài)遷移。
還要考慮并發(fā)狀態(tài)修改問題,如一個訂單同時只能有一個修改;狀態(tài)變更的有序問題,以及狀態(tài)變更消息的先到后到的問題,如支付成功消息和用戶取消消息的時間差。
后臺系統(tǒng)操作可反饋
假如修改了某些內容后想預覽看最終效果,這就是希望得到反饋結果;還有就是在規(guī)則系統(tǒng)中,希望看到這些規(guī)則在系統(tǒng)數(shù)據下的反饋。因此,在設計后臺系統(tǒng)時,需考慮效果的可預覽、可反饋。
后臺系統(tǒng)審批化
對于有些重要的后臺功能需要設計審批流,比如調整價格,并對操作進行日志記錄,從而保證操作可追溯、可審計。
文檔和注釋
在一個系統(tǒng)發(fā)展的初期就應該建立文檔庫,例如設計架構、設計說明書、業(yè)務規(guī)則說明書,程序猿在寫代碼時也應寫清楚注釋,不然會給其他的程序猿帶來理解上的障礙,并嚴重降低工作效率。
備份
一種是代碼備份,代碼要提交到代碼倉庫進行管理和備份。還有一種就是程序猿的備份,我們要確保一個模塊,至少有兩個程序猿對其是相當熟悉的。
?
總結
- 上一篇: 基础算法学习(二)_二叉树及应用赫夫曼编
- 下一篇: 最新整理完成