qq_遁去的一_1
2018-07-31 09:21:52
PHP處理大數(shù)據(jù),如何保證處理完整性;如:同時給1W個用戶轉賬,如何保證一次觸發(fā),讓所有用戶的轉賬都到賬。請詳細說明!
2 回答

慕虎7371278
TA貢獻1802條經(jīng)驗 獲得超4個贊
我覺得你希望的是
1 保證單個用戶的操作準確,如果其中一個步驟出現(xiàn)問題,立刻回滾,之后從新開始轉賬步驟
2 對單個用戶的操作不管是否成功 都不會對其他用戶的操作產(chǎn)生影響
我舉一個例子,
比如轉賬需要10個步驟,你寫十個接口,
每個接口都有一個返回值(表示這個操作是否成功),這十個接口放到隊列里面(這是保證 轉賬10個步驟處理是有序的),
用戶當轉賬的時候, 使用 轉賬的步驟隊列,
上面是轉賬的操作,下面再說說對用戶的處理
我們將 用戶看作對象,用戶的信息就是 對象的屬性,將所有的對象放到 隊列里面, 遍歷這個隊列,對每一個用戶都進行如下操作
1 先記錄這個用戶的狀態(tài)(留著出現(xiàn)意外恢復用的),
2 轉賬的步驟隊列
2-error 出現(xiàn)問題,恢復用戶的初始信息,將這個用戶重新添加到隊列的尾部
上面說的都是保證處理的完整性,下面說說速度問題
為了提升讀寫速度(我是說內(nèi)容很多的話),你可以使用redis這樣的nosql數(shù)據(jù)庫,redis里面有隊列這個數(shù)據(jù)結構,你百度一下看看。
再其次,可以考慮使用多線程,創(chuàng)建10個線程,1w個用戶分分,一個線程處理1千個用戶
希望能幫到你
- 2 回答
- 0 關注
- 1037 瀏覽
添加回答
舉報
0/150
提交
取消