熱點賬戶就是高頻進行扣款、入賬的賬戶,也就是該賬號餘額會被頻繁更新。一般熱點賬戶分為兩種,一種是頻繁扣款的熱點賬戶,另外一種是頻繁入賬的熱點賬戶。
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...