当前位置:首页 > 开发 > 系统架构 > 应用服务器 > 正文

轻量级的应用服务器基础框架

发表于: 2015-11-13   作者:互联网   来源:转载   浏览:
摘要: 项目地址为:github地址 1 框架目标 做一个典型应用场景下的服务器框架,这里所谓的典型指的是: 中度规模的并发量 客户端和服务器之间以自定义协议包进行交互 关心接口而非连接处理 2 所采用的组件库或技术 框架主要使用了下述的内容 libevent multi-thread protobuf-c 使用libevent解决连接问题,内部实现了一个队列

项目地址为:github地址

1 框架目标

做一个典型应用场景下的服务器框架,这里所谓的典型指的是:

  1. 中度规模的并发量
  2. 客户端和服务器之间以自定义协议包进行交互
  3. 关心接口而非连接处理

2 所采用的组件库或技术

框架主要使用了下述的内容

  1. libevent
  2. multi-thread
  3. protobuf-c

使用libevent解决连接问题,内部实现了一个队列+多线程池的结构,将可以触发的连接放入队列中,线程池中的线程通过竞争来获取连接,进而进行连接的处理。同时,框架使用了protobuf的C语言版本来进行数据对象的序列化,但是由于本框架使用的是tcp连接,可能会出现粘包等问题,因此,在每个proto包之前加了一个4字节的头来标志包的大小,在接收端处理时,同样,先读取4个字节,获得包大小,在根据包的大小获得数据包,进行proto解码操作,进而获得包内容。

3 框架的使用

根据上述的分析,框架的使用也可以分为下述几个部分:

  1. 定义cs包
    在框架中的proto文件夹下,已经有实例,目前只需要加入想要的包的定义,并在主cs message中添加该message类型。
  2. 声明和实现数据包的处理函数
    在框架中的src下的asf_op.h/c这两个文件是处理函数集合,可以通过添加所需的包处理函数,来完成自定义的消息处理。
  3. 线程主操作中对应其处理关系
    在框架中的server.c主程序中,server_job_function是任务处理函数,在其中的switch中增加case即可实现对应。

4 改良方向

上述内容在网络之上,建立了一个基于包的通信方式,但是对应用层的数据的处理不足描述不足。
另外需要丰富的还有客户端的表现形式,web,app等。
希望和大家一起探讨学习。

轻量级的应用服务器基础框架

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号