亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP處理大數據,如何保證處理完整性

PHP處理大數據,如何保證處理完整性

qq_遁去的一_1 2018-07-31 09:21:52
PHP處理大數據,如何保證處理完整性;如:同時給1W個用戶轉賬,如何保證一次觸發,讓所有用戶的轉賬都到賬。請詳細說明!
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

使用memcacheq等隊列,慢慢處理

查看完整回答
反對 回復 2018-08-02
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

我覺得你希望的是
1 保證單個用戶的操作準確,如果其中一個步驟出現問題,立刻回滾,之后從新開始轉賬步驟
2 對單個用戶的操作不管是否成功 都不會對其他用戶的操作產生影響

我舉一個例子,
比如轉賬需要10個步驟,你寫十個接口,
每個接口都有一個返回值(表示這個操作是否成功),這十個接口放到隊列里面(這是保證 轉賬10個步驟處理是有序的),

用戶當轉賬的時候, 使用 轉賬的步驟隊列,

上面是轉賬的操作,下面再說說對用戶的處理

我們將 用戶看作對象,用戶的信息就是 對象的屬性,將所有的對象放到 隊列里面, 遍歷這個隊列,對每一個用戶都進行如下操作
1 先記錄這個用戶的狀態(留著出現意外恢復用的),
2 轉賬的步驟隊列
2-error 出現問題,恢復用戶的初始信息,將這個用戶重新添加到隊列的尾部


上面說的都是保證處理的完整性,下面說說速度問題
為了提升讀寫速度(我是說內容很多的話),你可以使用redis這樣的nosql數據庫,redis里面有隊列這個數據結構,你百度一下看看。

再其次,可以考慮使用多線程,創建10個線程,1w個用戶分分,一個線程處理1千個用戶

希望能幫到你


查看完整回答
反對 回復 2018-08-02
  • 2 回答
  • 0 關注
  • 1031 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號