基于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 


系统概要框架

 基于libev面向分布式数据系统的C10K服务器设计

系统详细设计 

关于架构的详细设计,可参看这篇文章 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

持续更新中。。。

 

 

你可能感兴趣的:(分布式)