• Linux C++服务器端进程SDK


    目标:开发人员在这个SDK的基础上开发,不用关注技术细节,只需要开发对应业务消息处理函数即可

    1.每个进程SDK包括一个系统服务和多个业务服务,对外发布服务ID,每个服务有一个请求队列和一个反馈队列,接收线程负责接收请求队列消息,消息处理线程调用相应的消息处理函数并将结果发送到反馈队列,如果是其他服务器过来的消息则将结果发送到对外反馈队列,消息处理线程数量可自定义。

    2.队列SDK自带定时器线程,可定期处理超时消息,可阻塞规定时间接收消息(阻塞接收队列消息,在规定时间内没有收到消息则发送超时消息退出)。

    3.每个进程启动时发送消息到BBL队列注册服务,BBL进程采用共享内存哈希表存储所有服务和队列的关联信息,其他进程调用服务则根据服务ID查找共享内存中对应的队列信息,发送消息到请求队列,如果需要同步返回则阻塞规定时间接收反馈队列消息。

    4.监控进程相当所有进程的总管,接收终端消息启动或者停止相关进程。

    5.所有进程写日志通过发送消息到日志队列,日志进程接收消息并写日志,解决多进程写日志的混乱。

    6.针对集群调用服务,每台服务器配置消息路由器进程,消息路由器进程由几个线程组成
    1)开放统一的监听端口,接收其他服务器消息并写入相应的业务请求队列,并负责将发送缓冲的区的数据发出;
    2)接收对外反馈队列消息,写入对应的发送缓冲区;
    3)接收对外请求队列消息,建立对外连接发送数据。

    7.对外接收消息前置机进程,负责接收外部消息、解析并重组内部消息包发送到不同服务器的业务请求队列:
    1)采用nginx多进程监听并接收消息,单线程accept客户端socket,采用多线程epoll机制接收消息并发送到每个进程专属的对外请求队列,并负责将发送缓冲的区的数据发出;
    2)接收每个进程专属的对外反馈队列消息,写入对应的发送缓冲区,实现异步处理网络数据请求。

    目前正在完善相关技术细节,后续有合适的将会公开部分代码。

  • 相关阅读:
    函数式编程理解
    Java8 lambda表达式10个示例
    MD5进行文件完整性校验的操作方法
    加密算法和MD5等散列算法的区别(转)
    随笔
    瑕疵(bug)严重性定义
    无需Cygwin,如果没有在命令行,Eclipse编NDK
    BZOJ 1878 SDOI 2009 HH项链 树状数组 + 脱机处理
    Teamcity+SVN+VisualStudio在持续集成简明教程
    UVALive3713-Astronauts(2-SAT)
  • 原文地址:https://www.cnblogs.com/guoyinglin/p/4848762.html
Copyright © 2020-2023  润新知