問題的出發點:數據庫
最近公司爲了發展須要,要擴大對用戶的信息採集,每一個用戶的採集量估計約3W。若是用戶量增長的話,將會大量照成採集量成3W倍的增加,可是又要知足平常業務須要,特別是報表數據必要在規定的時間內完成。緩存
技術障礙:服務器
1. 面對用戶量的增加,記錄數3W倍的增加,如何保證這些記錄可以在比較快的時間內進入存儲介質。架構
2. 應對用戶量的增加,如何在規定的時間內完成採集,增長硬件設備處理能力仍是使用更多的服務器來處理請求。併發
3. 服務器的增加,是否可以支持現有的擴展能力。異步
架構實現:分佈式
使用到的技術項:大數據
1. 面向服務開發思惟url
2. 隊列服務spa
3. 多任務併發執行
4. 分佈式服務管理
5. Redis的應用
6. 數據分表(分區)的實現和應用
7. Redis異步延遲同步到數據庫
架構圖以下:
具體實現:
1. 隊列服務能夠採用HttpsQs
2. 多任務併發執行,PHP版可採用ParallelCurl,可控制併發數量
3. 可以使用PHP Redis實現對Redis的操做
4. 數據表分表或者分區,可自行動手寫個,原理很簡單,須要指導的能夠發私密信
總結:
整個方案不是很複雜,在處理大數據方向這塊,基本的原理都是同樣,把不可控的因素要把握住,因此在多任務併發這塊必定要控制到合理的數量,另外Redis緩存也支持分佈式集羣,增長Redis服務器並不會影響上層代碼的改變,相對來講擴容能力仍是相對不錯。