PHP處理大數據,如何保證處理完整性;如:同時給1W個用戶轉賬,如何保證一次觸發,讓所有用戶的轉賬都到賬。請詳細說明!
2 回答

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