題目1 公司的手續(xù)費(fèi)賬戶(hù)如何保證并發(fā)
一, 現(xiàn)場(chǎng)回答
每個(gè)商戶(hù)設(shè)置一個(gè)手續(xù)費(fèi)賬戶(hù)的子賬戶(hù), 這樣, 在并發(fā)的時(shí)候, 不同的商戶(hù)是可以并發(fā)的. 所有商戶(hù)的手續(xù)費(fèi)進(jìn)行sum, 就是總賬戶(hù).
二. 思考后回答
手續(xù)費(fèi)業(yè)務(wù)作為非核心業(yè)務(wù), 沒(méi)有其他業(yè)務(wù)風(fēng)險(xiǎn). 可以進(jìn)行批量合并后進(jìn)行更新.
具體做法是這樣的, 所有的手續(xù)費(fèi)入賬都會(huì)形成流水,可以每隔1秒(如果認(rèn)為延遲大, 可以設(shè)置小一些), 將前一秒的數(shù)據(jù)匯總到一個(gè)新的匯總流水表, 表中有上一次賬戶(hù)的數(shù)值和本次更新后的數(shù)值. 然后連帶更新賬戶(hù)數(shù)值, 達(dá)到最終的賬戶(hù)變更.
注意事項(xiàng):
- 每次計(jì)算都是基于上一時(shí)間單位(默認(rèn)一秒)的結(jié)果,
- 會(huì)有定時(shí)對(duì)系統(tǒng)匯總表進(jìn)行監(jiān)控, 如果最近更新時(shí)間與當(dāng)前時(shí)間時(shí)間差超過(guò)閾值, 進(jìn)行報(bào)警
- 如果應(yīng)用掛了, 那么要從上一次匯總后的數(shù)據(jù)開(kāi)始再次開(kāi)始進(jìn)行匯總
題目2, 有一個(gè)資金池的賬戶(hù), 對(duì)手續(xù)費(fèi)賬戶(hù)進(jìn)行補(bǔ)貼, 如何保證并發(fā)
一. 現(xiàn)場(chǎng)回答
設(shè)置一個(gè)zset , 將資金池的手續(xù)費(fèi)賬戶(hù)分為多份, 分?jǐn)?shù)是該子賬戶(hù)的余額, 用不同的子賬戶(hù)作為單獨(dú)的交易對(duì)象, 進(jìn)行手續(xù)費(fèi)支付, 這樣可以將并發(fā)擴(kuò)大n倍. 如果出現(xiàn)無(wú)法支付, 則選擇兩個(gè)最小的賬戶(hù)進(jìn)行合并,進(jìn)行重試.
二, 思考后回答
資金池賬戶(hù)和手續(xù)費(fèi)賬戶(hù)有很大的相似點(diǎn), 在滿(mǎn)足一定條件時(shí), 他們的操作可以是一樣的.
進(jìn)行如下設(shè)置:
(弱)實(shí)時(shí)統(tǒng)計(jì)該資金池的的交易情況, 分別得出 平均7天的補(bǔ)貼額度, 一天的補(bǔ)貼額度, 還有1小時(shí)的補(bǔ)貼額度
當(dāng)余額大于7天補(bǔ)貼額度, 采用快速流水方式, 就是業(yè)務(wù)過(guò)來(lái)直接生成流水日志, 沒(méi)秒鐘對(duì)流水日志進(jìn)行匯總, 并更新賬戶(hù).
當(dāng)余額小于7天, 會(huì)對(duì)賬戶(hù)所有者進(jìn)行通知, 進(jìn)行續(xù)費(fèi)
當(dāng)余額在1-7天的范圍內(nèi), 進(jìn)行快限速流水方式, 如果歷史記錄沒(méi)有問(wèn)題, 實(shí)時(shí)記錄和快速流水方式相同. 但如果應(yīng)用出現(xiàn)過(guò)問(wèn)題, 導(dǎo)致當(dāng)前處理數(shù)據(jù)與當(dāng)前時(shí)間存在時(shí)間差, 那么實(shí)時(shí)的就會(huì)進(jìn)入限流方式. 直至?xí)r間差小于閾值, 進(jìn)入快速方式
當(dāng)余額小于1天的補(bǔ)貼金額, 進(jìn)行通知續(xù)費(fèi)
當(dāng)余額在1小時(shí)至一天的范疇的時(shí)候, 進(jìn)行快阻式流水方式, 如果記錄沒(méi)有問(wèn)題, 采用快速流水方式. 但如果應(yīng)用出現(xiàn)過(guò)問(wèn)題, 導(dǎo)致當(dāng)前處理數(shù)據(jù)與當(dāng)前時(shí)間時(shí)間差超過(guò)閾值, 那么實(shí)時(shí)會(huì)進(jìn)行阻塞, 暫停該賬戶(hù)交易, 直至?xí)r間差小于閾值, 進(jìn)入快速方式
當(dāng)余額小于1小時(shí)的補(bǔ)貼范圍, 進(jìn)入慢速模式, 所有的該賬戶(hù)的業(yè)務(wù)要使用隊(duì)列, 保證順序. 慢速模式下, 每一筆補(bǔ)貼都要從賬戶(hù)扣除后, 才形成流水, 每秒的流水也只有匯總功能, 不進(jìn)行更新賬戶(hù).
-
圖標(biāo)如下
賬戶(hù) 快速模式 快限模式 快阻模式 慢速模式 余額范圍 >7天 1-7天 1小時(shí)-1天 小于一小時(shí) 無(wú)歷史數(shù)據(jù)滯留 批量處理 批量處理 批量處理 隊(duì)列串行 有歷史數(shù)據(jù)滯留_實(shí)時(shí)部分 批量處理 限流 阻塞交易, 直至更新完成 /