zoukankan      html  css  js  c++  java
  • 基于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

    持续更新中。。。

  • 相关阅读:
    Jquery 中止正在执行的AJAX
    SQL语句添加说明
    MINIUI基本学习笔记
    ADO.NET使用事务简单实例
    通过反射将Datetable转换为泛型List<T>
    C语言七夕必备神器,待那烟花灿烂时,依旧做个单身狗
    七夕来了,请用C 语言和我交流
    C语言第一个字符串Hello,C语言基础教程之字符串
    无形细节最为致命,C语言中与零值比较那些小事儿
    C语言讨论象棋将帅问题,代码短又美!
  • 原文地址:https://www.cnblogs.com/inteliot/p/2454518.html
Copyright © 2011-2022 走看看