zoukankan      html  css  js  c++  java
  • 轻量级的应用服务器基础框架

    项目地址为: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等。
    希望和大家一起探讨学习。

  • 相关阅读:
    python 3.5下用户登录验证,三次锁定的编码
    Python之面向对象
    Python基础之模块
    Python基础之yield,匿名函数,包与re模块
    Python基础之函数
    Python基础之字符编码,文件操作流与函数
    Python基础之字符串,布尔值,整数,列表,元组,字典,集合
    Python基础之(判断,循环,列表,字典)
    mysql学习
    linux 下的 正则表达式(awk,sed,awk)学习
  • 原文地址:https://www.cnblogs.com/nearmeng/p/4057958.html
Copyright © 2011-2022 走看看