基於libev面向分布式數據系統的C10K服務器設計


物聯網(M2M)是當前信息化的一個熱點方向。具體到不同的行業就體現為各種不同的解決方案:遠程電力控制系統、智能家居、智能交通、現代物流、遠程可視化醫療系統等等。。。

它們的一些共性是:

1. 系統由前端設備、遠程數據中心、和后端可視化終端組成。

2. 前端由各種各樣的嵌入式系統組成,集成各種專用數據模塊或者傳感器。 

3. 系統用戶最多可達到百萬甚至千萬級別,活躍用戶可達到數十萬,並發峰值在C10K級別。

4. 設備實時性高,實時數據可達秒級別,每個數據包一般都經過壓縮或者編碼,內容很小。

5. 遠程設備通過局域網或者移動網絡連接到internet,通過移動網絡的設備對數據量有嚴格要求,比如每月流量最大不超過30M。

6. 因為要做到實時雙向數據同步及反饋,所有的設備幾乎都實時在線。

...

目標 

 為了實現高並發、多用戶高實時的數據服務器,決定基於開源框架,開發一個可兼容特定http請求和sock服務的混合服務器,主要面向物聯網分布式場景。

風險評估

優點:

1. 目前網站的用戶雖然多,但業務邏輯和數據處理相對簡單和單一,定制的服務器可以有更優化的邏輯。

2. 基於優秀的開源框架,可以體現更好的並發性。

3. 通過可定制的網絡數據處理邏輯將提供更好的實時性和用戶體驗。 

4. 定制的服務器可方便地應用於其他類似行業以及解決方案中。  

 

挑戰:

1. 新系統短期很難穩定,增加運維風險

2. 增加開發代價

3. 要求有較高的系統架構能力和實現能力 

 

參考模型

1)基於libev庫

2)參考nginx

3)參考lighttpd

4)參考libebb 


系統概要框架

 

系統詳細設計 

關於架構的詳細設計,可參看這篇文章 http://www.cnblogs.com/inteliot/archive/2012/04/21/2461031.html ,包括細節都已經很詳細了 

實現

現在基本通訊框架已經ok了。master-worker模式,短連接模式下普通機器配置能達到20K。

下來開始整合業務邏輯,和mysql了。

mysql部分架構准本參考篇帖子:http://www.cnblogs.com/inteliot/archive/2012/04/19/2457108.html 
整個過程希望只對cache操作,調高寫數據庫的瓶頸,最終的方案,要看研究結果,沒准還是用Redis呢。。。

 

優化方向

1)分層 、集群

2)優化memcache層 ,分析數據流程和業務邏輯,希望整合 no-sql 等適合大數據量高性能的哈希數據庫,進一步提高系統速率。

3)可靠性、熱備、容災

 

方案調研的過程中,發現已經有人在嘗試類似的方案了,想法何其相似啊:

 http://www.cnblogs.com/inteliot/archive/2012/04/21/2461042.html

持續更新中。。。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM