量化交易系统-接入网关设计

客户端接入网关设计

  1. 系统介绍

    客户端接入网关,上游对接PC客户端,下游对接消息总线和数据管理服务器,主要由如下功能:

  • 客户端连接会话管理。
  • 客户端请求消息转发和服务端应答转发客户端。
  • 订阅管理及消息推送。
  • 客户端消息协议转换。

    2. 体系结构

   2.1 逻辑架构功能模块

2.2 功能模块

客户端接入网关由四个模块组成:

(a)客户端通讯消息处理模块。

  (b)数据管理通讯消息处理模块。

  (c)消息总线通讯消息处理模块。

  (d)订阅管理推送模块。

  1. 客户端消息处理模块
    1. 功能说明
  1. 负责客户端连接回话管理。
  2. 客户端消息响应处理。

对消息进行协议转换(例如json协议转换成protobuf协议),转发到对应服务器处理。

DataPackConvertProtoUtils功能类负责将json协议转换成对应的protobuf协议格式。

    1. 结构图

     客户端消息处理器

      客户端会话管理

    1. 接口

//请求处理回调函数声明

using MsgHandlerCB = std::function<void(net::task_from_cli_sptr& task)>;

using MsgHandlerCBMap = std::map<int, MsgHandlerCB> ;

#define ON_MSG_CALLBACK(msg_id, cb) \

    msg_id_cb_map_[msg_id] = std::bind(&cb, this, std::placeholders::_1)

每新增加一个消息,如果需要特殊处理,需要在RegisterMsgHandleCallback注册一个消息处理函数。否则,调用缺省消息处理函数onMsgCommonTask。

  1. 数据管理消息处理模块
    1. 功能说明

对数据管理服务器消息响应处理,并将数据管理服务器的应答消息转发到客户端。

目前所有数据查询直接走数据管理服务器,避免大流量查询占用消息总线的带宽,影响正常的交易,提交系统性能。

    1. 结构图

     数据管理消息处理器

    1. 接口

//请求处理回调函数声明

using MsgRspHandlerCB =  std::function<void(net::task_from_srv_sptr& task)>;

using MsgRspHandlerCBMap = std::map<int, MsgRspHandlerCB>;

#define ON_MSG_RSP_CALLBACK(msg_id, cb) \

msg_id_rsp_cb_map_[msg_id] = std::bind(&cb, this, std::placeholders::_1)

每新增加一个消息,如果需要特殊处理,需要在RegisterMsgHandleCallback注册一个消息处理函数。否则,调用缺省消息处理函数onMsgCommonTask。

  1. 消息总线消息处理模块
    1. 功能说明

(1)消息总线消息响应处理。

对消息进行协议转换(例如protobuf协议转换成json协议格式)。如果是请求消息应答消息,根据会话管理信息,转发应答消息给客户端。如果是推送消息,调用订阅推送管理,将消息推送给订阅改消息的用户。

(2)ProtoConvertDataPackUtils功能类负责将protobuf协议转换成对应的json协议格式。

    1. 结构图

             消息总线消息处理器

MsgPushMgr负责消息推送给订阅的用户

MsgSubMgr 负责管理消息的订阅

SessionMgr 负责客户端会话管理

    1. 接口

//请求处理回调函数声明

using MsgRspHandlerCB =  std::function<void(net::task_from_srv_sptr& task)>;

using MsgRspHandlerCBMap = std::map<int, MsgRspHandlerCB>;

#define ON_MSG_RSP_CALLBACK(msg_id, cb) \

msg_id_rsp_cb_map_[msg_id] = std::bind(&cb, this, std::placeholders::_1)每新增加一个消息,如果需要特殊处理,需要在RegisterMsgHandleCallback注册一个消息处理函数。否则,调用缺省消息处理函数onMsgCommonTask。

  1. 其他

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值