2020-07-28

題目1 公司的手續(xù)費賬戶如何保證并發(fā)

一, 現場回答

每個商戶設置一個手續(xù)費賬戶的子賬戶, 這樣, 在并發(fā)的時候, 不同的商戶是可以并發(fā)的. 所有商戶的手續(xù)費進行sum, 就是總賬戶.

二. 思考后回答

手續(xù)費業(yè)務作為非核心業(yè)務, 沒有其他業(yè)務風險. 可以進行批量合并后進行更新.

具體做法是這樣的, 所有的手續(xù)費入賬都會形成流水,可以每隔1秒(如果認為延遲大, 可以設置小一些), 將前一秒的數據匯總到一個新的匯總流水表, 表中有上一次賬戶的數值和本次更新后的數值. 然后連帶更新賬戶數值, 達到最終的賬戶變更.

注意事項:

  1. 每次計算都是基于上一時間單位(默認一秒)的結果,
  2. 會有定時對系統(tǒng)匯總表進行監(jiān)控, 如果最近更新時間與當前時間時間差超過閾值, 進行報警
  3. 如果應用掛了, 那么要從上一次匯總后的數據開始再次開始進行匯總

題目2, 有一個資金池的賬戶, 對手續(xù)費賬戶進行補貼, 如何保證并發(fā)

一. 現場回答

設置一個zset , 將資金池的手續(xù)費賬戶分為多份, 分數是該子賬戶的余額, 用不同的子賬戶作為單獨的交易對象, 進行手續(xù)費支付, 這樣可以將并發(fā)擴大n倍. 如果出現無法支付, 則選擇兩個最小的賬戶進行合并,進行重試.

二, 思考后回答

資金池賬戶和手續(xù)費賬戶有很大的相似點, 在滿足一定條件時, 他們的操作可以是一樣的.

進行如下設置:

  1. (弱)實時統(tǒng)計該資金池的的交易情況, 分別得出 平均7天的補貼額度, 一天的補貼額度, 還有1小時的補貼額度

  2. 當余額大于7天補貼額度, 采用快速流水方式, 就是業(yè)務過來直接生成流水日志, 沒秒鐘對流水日志進行匯總, 并更新賬戶.

  3. 當余額小于7天, 會對賬戶所有者進行通知, 進行續(xù)費

  4. 當余額在1-7天的范圍內, 進行快限速流水方式, 如果歷史記錄沒有問題, 實時記錄和快速流水方式相同. 但如果應用出現過問題, 導致當前處理數據與當前時間存在時間差, 那么實時的就會進入限流方式. 直至時間差小于閾值, 進入快速方式

  5. 當余額小于1天的補貼金額, 進行通知續(xù)費

  6. 當余額在1小時至一天的范疇的時候, 進行快阻式流水方式, 如果記錄沒有問題, 采用快速流水方式. 但如果應用出現過問題, 導致當前處理數據與當前時間時間差超過閾值, 那么實時會進行阻塞, 暫停該賬戶交易, 直至時間差小于閾值, 進入快速方式

  7. 當余額小于1小時的補貼范圍, 進入慢速模式, 所有的該賬戶的業(yè)務要使用隊列, 保證順序. 慢速模式下, 每一筆補貼都要從賬戶扣除后, 才形成流水, 每秒的流水也只有匯總功能, 不進行更新賬戶.

  8. 圖標如下

    賬戶 快速模式 快限模式 快阻模式 慢速模式
    余額范圍 >7天 1-7天 1小時-1天 小于一小時
    無歷史數據滯留 批量處理 批量處理 批量處理 隊列串行
    有歷史數據滯留_實時部分 批量處理 限流 阻塞交易, 直至更新完成 /
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容