高併發數據採集的架構應用(Redis的應用)

問題的出發點:數據庫

      最近公司爲了發展須要,要擴大對用戶的信息採集,每一個用戶的採集量估計約3W。若是用戶量增長的話,將會大量照成採集量成3W倍的增加,可是又要知足平常業務須要,特別是報表數據必要在規定的時間內完成。緩存

技術障礙:服務器

     1. 面對用戶量的增加,記錄數3W倍的增加,如何保證這些記錄可以在比較快的時間內進入存儲介質。架構

   2. 應對用戶量的增加,如何在規定的時間內完成採集,增長硬件設備處理能力仍是使用更多的服務器來處理請求。併發

     3. 服務器的增加,是否可以支持現有的擴展能力。異步

架構實現:分佈式

使用到的技術項:大數據

     1. 面向服務開發思惟url

     2. 隊列服務spa

     3. 多任務併發執行

     4. 分佈式服務管理

     5. Redis的應用

     6. 數據分表(分區)的實現和應用

     7. Redis異步延遲同步到數據庫

架構圖以下:

image

image

具體實現:

     1. 隊列服務能夠採用HttpsQs

     2. 多任務併發執行,PHP版可採用ParallelCurl,可控制併發數量

     3. 可以使用PHP Redis實現對Redis的操做

     4. 數據表分表或者分區,可自行動手寫個,原理很簡單,須要指導的能夠發私密信

 

總結:

      整個方案不是很複雜,在處理大數據方向這塊,基本的原理都是同樣,把不可控的因素要把握住,因此在多任務併發這塊必定要控制到合理的數量,另外Redis緩存也支持分佈式集羣,增長Redis服務器並不會影響上層代碼的改變,相對來講擴容能力仍是相對不錯。

相關文章
相關標籤/搜索