熱點賬號餘額更新問題

2021-09-25 02:14:53 字數 1211 閱讀 4688

熱點賬戶就是高頻進行扣款、入賬的賬戶,也就是該賬號餘額會被頻繁更新。一般熱點賬戶分為兩種,一種是頻繁扣款的熱點賬戶,另外一種是頻繁入賬的熱點賬戶。

1、效能瓶頸問題

2、資料庫壓力問題

3、成功率問題

使用樂觀鎖版本號(version)進行控制,操作如下:

select  balance, status, version, … from account where id = ?

入賬: post_balance = balance + amount

扣款: post_balance = balance - amount

update …. balance = post_balance,version = version +1 where id = ? and version = ?

更新返回1,更新成功,返回0,更新失敗,需丟擲異常,回滾事務!

採用重試的方式,並把事務隔離級別設定成讀已提交(isolation_read_committed)立即重試三次,以提高成功率 ,失敗三次返回系統繁忙提醒!

個人看法:這種重試在真正的有量的時候基本沒啥作用,相反會徒增資料庫的請求量,鄙人覺得這種重試只能解決請求量較小的時候的併發,比如突然同時進來兩筆同乙個賬戶的請求,處理失敗的話進行重試是可以解決問題的;但是一瞬間進來200筆,甚至更多的話,這種重試沒啥作用了。         

使用悲觀鎖(for  update)進行控制,操作如下:

select  balance, status, version, … from account where id = ? for update

入賬: post_balance = balance + amount

扣款: post_balance = balance - amount

update …. balance = post_balance,version = version +1 where id = ?

更新返回1,更新成功,返回0,更新失敗,需丟擲異常,回滾事務!

採用訊號量做熱點賬戶資源使用限制,可以控制資料庫壓力,為資料庫分壓,且保持在乙個客觀的效能水平。

個人看法:這種方式能解決大部分的熱點賬戶問題,也是本人之前採取的方式,不過偶爾會存在的超時問題也僅僅是一兩筆,其餘的都會被訊號量拒絕了。

hcharts更新問題

顯示 hcharts的顯示這裡就不多說了,基本官網上的例子都有 需要說明一點的是,在柱狀圖中表示時,可以使用座標的方式指定表示的橫座標,而不是只能像官網上一樣全部寫完 data可以寫成 1,5 2,8 其中1代表橫座標,5代表縱座標 更新 hcharts更新時series不會自動增加或減少,需要我們...

pip更新問題

更新命令 requirement already up to date 在pycharm的虛擬環境中,特別容易出現執行更新pip的命令後,提示要求己經更新,但實際上檢視版本還是沒更新成功的情況 直接使用pip install upgrade pip 這簡直是死迴圈了,使用python m pip i...

android sdk 無法更新問題

android sdk manager 一直不能更新,網上找了好長時間,現在終於找到了辦法 找原因 先測試一下通不通 ping dl ssl.google.com t 始終ping不通 2.有的使用者可以更新出列表來。如果還是不能,繼續下面的操作。在位址列裡輸入 c windows system32...