国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

業務上鎖的應用

Scliang / 3007人閱讀

摘要:鎖業務場景針對一個賠付工單由底下小二發起當金額數量大于一定值以后針對這筆工單就會有層層審批風控先一個審批流審批主管審批財務審批這里就會存在種權限一審權限二審權限終審權限當這筆工單被小二提交以后就會給小二對應的創建一個審批任務在主

業務場景

針對一個賠付工單(由底下小二發起),當金額數量大于一定值以后,針對這筆工單就會有層層審批(風控),先YY一個審批流「TL審批」--->「主管審批」--->「財務審批」.這里就會存在3種權限「一審權限」「二審權限」「終審權限」,當這筆工單被小二提交以后就會給小二對應的TL創建一個審批任務,在主管的界面就可以看到相應的審批任務,主管可以點擊通過或者拒絕

實現
    1.查詢任務,判斷當前角色是否有權限操作該筆任務,任務沒有完結等一系列校驗
    2.驅動狀態機更新工單狀態
    3.完結任務
    
異常場景
場景一

操作:主管瘋狂點擊通過按鈕3次(前提是按鈕點擊一次不會灰顯,就算灰顯也可以通過模擬請求來實現)

異常情況:三個點擊線程都運行完1,然后線程1驅動狀態機(通過 + 當前狀態:待TL審批)得到的結果是待主管審批,緊接著線程2驅動狀態機(通過 + 當前狀態:待主管審批)得到的結果是待財務審批,然后線程3再運行驅動狀態機(通過 + 當前狀態:待財務審批)得到的結果是出賬成功(不考慮多次完結任務會出現異常)

異常分析:在該場景中,只要角色擁有「一審權限」就可以通過漏洞直接把該訂單審核出賬

解決方案:

細化狀態機中的每個審核操作
1.查詢任務,查詢該筆任務對應當前操作類型(TL審批OR主管審批OR財務審批)
---這里不僅僅是「通過」操作,判斷當前角色是否有對應操作權限
2.根據當前操作類型+當前狀態驅動狀態機
3.完結任務

在查詢任務之前加一個全局鎖,針對這筆工單進行全局鎖定(更加優雅)

場景二

操作:一個角色同時擁有一審權限和二審權限,當他打開一個工單要進行一審,但是其它主管已經執行了一審的動作,并且更新了一些信息.因為該角色頁面沒有刷新獲取不到更新的信息,然后點擊了通過按鈕

異常情況:點擊通過按鈕就相當于進行了二審,會造成該角色獲取不到最新信息而產生誤判

解決方案:在場景一增加一個全局鎖的前提下,可以給頁面傳遞一個工單modifyTime,在全局鎖里面判斷modifyTime是否一致,如果不一致說明該筆工單已經被更新了,可以給用戶相應的提醒

其它

在業務中整個狀態機的流轉都是確定的,所以為了保證狀態流轉正確,所以在更新數據庫狀態的時候,需要帶上關于狀態的樂觀鎖UPDATE XXX SET status = XXX WHERE id = XXX AND from_status = XXX

如果使用的是全局鎖,那么每個操作工單的地方都需要加上相應的全局鎖

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26240.html

相關文章

  • 業務上鎖應用

    摘要:鎖業務場景針對一個賠付工單由底下小二發起當金額數量大于一定值以后針對這筆工單就會有層層審批風控先一個審批流審批主管審批財務審批這里就會存在種權限一審權限二審權限終審權限當這筆工單被小二提交以后就會給小二對應的創建一個審批任務在主 鎖 業務場景 針對一個賠付工單(由底下小二發起),當金額數量大于一定值以后,針對這筆工單就會有層層審批(風控),先YY一個審批流「TL審批」--->「主管審批...

    stormzhang 評論0 收藏0
  • 聊聊 Redis 分布式鎖正確實現

    摘要:在昨天隊友代碼的過程中,發現了我們組分布式鎖的寫法似乎有點問題,實現代碼如下加鎖部分解鎖部分主要原理是使用了的去插入一組,其中要上鎖的標識在項目中是鎖死用戶,如果上鎖失敗則返回。 最近在參加學校安排的實訓任務,我們小組需完成一套分布式&微服務跨境電商,雖然這題目看起來有點老套,并且隊友多是 Java 技術棧,所以我光榮(被迫) 的成為了一名前端,并順路使用 PHP 的 Swoole 幫...

    imingyu 評論0 收藏0

發表評論

0條評論

Scliang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<