1. 程式人生 > 實用技巧 >面向海量資料的高併發高可用分層系統架構設計

面向海量資料的高併發高可用分層系統架構設計


近期參與一個網際網路專案,按照該專案的需求設計了分層的系統架構,主要目的是高併發高可用,能夠根據使用者訪問量和併發情況進行伸縮。


第一個部分是由Web伺服器和應用伺服器構成的負載均衡區。該區域的主要目標是分散使用者的訪問量,平衡各伺服器的壓力,提高各伺服器的資源利用率,因為大多數網站都是屬於IO密集型,因此可以利用執行緒池增加併發處理能力,採用多核多記憶體的資源配置模式。可以採用Apache+Tomcat或Nginx+Jboss來實現,其中訊息伺服器通過非同步處理機制可以提高系統響應速度,增加使用者體驗。


第二個部分是資料儲存區。包括了NoSql資料庫和關係型資料庫,NoSql資料庫主要目的是實現快速快取,通過主從結構提高處理能力,NoSql資料庫可以儲存需要經常訪問的資料,可以選擇redis、Memcache、berkelydb等。關係型資料庫主要儲存交易和行為資料,通過讀寫分離和業務拆分提高資料庫的負載能力。同時,資料在寫入關係型資料庫時候同時更新讀庫和Nosql資料庫,以保證資料的一致性。資料一致性符合CAP原理。同時資料庫儲存的大量交易、行為資料可以通過ETL的形式提供給資料倉庫作為資料分析和報表使用。


第三個部分是資料採集區。包括了多併發多執行緒的採集伺服器叢集,以提高資料更新的實時性。資料採集後存入分散式資料庫,因存在大量非結構化資料,所以可以採用Monogodb、Hbase等文件或列表型資料庫儲存海量資料。Monogodb內建Map-reduce處理,Hbase可以結合Hadoop做Map-reduce大資料分析。生成的結果可以同步到資料儲存區,以便於使用者的查詢。


整個體系結構如下圖:


wKiom1a6pKPSVc3RAAE4p3QGYwk576.png

轉載於:https://blog.51cto.com/casey/1741461