消息通信系统.pdf

上传人:万林****人 文档编号:9208881 上传时间:2021-05-10 格式:PDF 页数:11 大小:588.16KB
收藏 版权申诉 举报 下载
消息通信系统.pdf_第1页
第1页 / 共11页
消息通信系统.pdf_第2页
第2页 / 共11页
消息通信系统.pdf_第3页
第3页 / 共11页
文档描述:

《消息通信系统.pdf》由会员分享,可在线阅读,更多相关《消息通信系统.pdf(11页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010212026.8 (22)申请日 2020.03.24 (71)申请人 中国建设银行股份有限公司 地址 100033 北京市西城区金融大街25号 申请人 建信金融科技有限责任公司 (72)发明人 朱翀谢彦彬李小锋丁伟奇 徐浩胡宏黄文宝刘波 (74)专利代理机构 北京品源专利代理有限公司 11332 代理人 孟金喆 (51)Int.Cl. H04L 29/08(2006.01) H04L 12/46(2006.01) (54)发明名称 一种消息通信系统 (57)摘要 本。

2、发明实施例公开了一种消息通信系统, 该 系统包括: TCP通道模块、 解码前异步消息接收队 列模块、 异步消息处理模块、 解码后异步消息接 收队列模块以及消息分发模块; TCP通道模块用 于建立客户端与服务端之间的通信连接, 以接收 服务端发送至客户端的消息; 解码前异步消息接 收队列模块用于对所述TCP通道模块传输来的消 息进行存储; 异步消息处理模块用于当监听到所 述解码前异步消息接收队列模块中有消息时, 对 所述消息进行读取并基于设定报文格式对所述 消息进行解码, 得到业务数据, 并将所述业务数 据传输至解码后异步消息接收队列模块。 通过本 发明实施例的技术方案, 可避免TCP连接中数据。

3、 传输的粘包问题, 且该消息通信系统具有较强的 扩展性。 权利要求书2页 说明书7页 附图1页 CN 111447263 A 2020.07.24 CN 111447263 A 1.一种消息通信系统, 其特征在于, 包括: TCP通道模块、 解码前异步消息接收队列模 块、 异步消息处理模块、 解码后异步消息接收队列模块以及消息分发模块; 其中, 所述TCP通道模块与所述解码前异步消息接收队列模块相连, 用于建立客户端与 服务端之间的通信连接, 以接收服务端发送至客户端的消息, 并将所述消息传输至所述解 码前异步消息接收队列模块; 所述解码前异步消息接收队列模块与所述异步消息处理模块相连, 用于。

4、对所述TCP通 道模块传输来的消息进行存储; 所述异步消息处理模块与所述解码后异步消息接收队列模块相连, 用于当监听到所述 解码前异步消息接收队列模块中有消息时, 对所述消息进行读取并基于设定报文格式对所 述消息进行解码, 以得到完整的业务数据, 并将所述业务数据传输至所述解码后异步消息 接收队列模块; 所述解码后异步消息接收队列模块与所述消息分发模块相连, 用于对所述异步消息处 理模块传输来的业务数据进行存储; 所述消息分发模块用于当监听到所述解码后异步消息接收队列模块存在业务数据时, 基于所述业务数据的主题将所述业务数据传输至接收方。 2.根据权利要求1所述的系统, 其特征在于, 所述设定。

5、报文格式包括: 标识一个完整消 息报文全部字节数的标识、 标识消息报文头字节数的标识、 消息报文头数据以及消息报文 体数据。 3.根据权利要求1所述的系统, 其特征在于, 还包括: TCP连接管理模块, 与所述TCP通道模块相连, 用于通过同一线程对所述TCP通道模块中 的至少两个TCP连接进行监听, 若在设定监听时间内目标TCP连接始终没有接收到服务端发 送至客户端的消息, 则将所述目标TCP连接关闭。 4.根据权利要求1所述的系统, 其特征在于, 还包括: 连接保持模块以及写消息队列模 块, 所述连接保持模块用于在监听到目标TCP连接在设定时间内无通信消息时, 通过所述写 消息队列模块向所。

6、述目标TCP连接发送设定消息, 以使所述目标TCP连接将所述设定消息发 送至服务端, 使所述目标TCP连接保持连线状态。 5.根据权利要求1所述的系统, 其特征在于, 所述异步消息处理模块还用于: 将所述业 务数据按照客户端报文格式进行封装, 并将封装后的业务数据传输至所述解码后异步消息 接收队列模块。 6.根据权利要求1所述的系统, 其特征在于, 当所述异步消息处理模块对所述解码前异 步消息接收队列模块中的消息进行读取的速度低于阈值时, 所述解码前异步消息接收队列 模块还用于按照预设限流策略对其存储的消息进行限流。 7.根据权利要求1所述的系统, 其特征在于, 当所述消息分发模块将所述解码后。

7、异步消 息接收队列模块中的业务数据传输至接收方的速度低于阈值时, 所述解码后异步消息接收 队列模块还用于按照预设限流策略对其存储的消息进行限流。 8.根据权利要求6或7所述的系统, 其特征在于, 所述预设限流策略包括最老消息丢弃 策略或者最新消息丢弃策略。 9.根据权利要求1-7任一项所述的系统, 其特征在于, 还包括: 异常事件监听模块, 用于基于设定策略监听异常事件, 并基于监听到的异常事件的异 权利要求书 1/2 页 2 CN 111447263 A 2 常类型触发响应事件。 10.根据权利要求8所述的系统, 其特征在于, 所述响应事件包括下述至少一种: 日志记 录、 断线重连以及通知业。

8、务层处理。 权利要求书 2/2 页 3 CN 111447263 A 3 一种消息通信系统 技术领域 0001 本发明实施例涉及通信技术领域, 尤其涉及一种消息通信系统。 背景技术 0002 在金融市场的互联交易平台, 客户端应用程序需要接收实时的、 高频的交易行情 数据。 0003 然而, 在实现本发明过程中, 发明人发现现有技术中至少存在如下问题: 0004 现有的应用于客户端的通信应用程序存在TCP连接中数据传输粘包的问题; 无法 支持后台不同的消息报文格式, 若需要接入新的后台消息服务, 对应用于客户端的通信应 用程序的改造工作量较大; 高频消息处理问题, 会出现消息堆积导致内存占用不。

9、断增长的 问题。 发明内容 0005 本发明实施例提供了一种消息通信系统, 通过该消息通信系统可避免TCP连接中 数据传输的粘包问题, 且该消息通信系统具有较强的扩展性。 0006 第一方面, 本发明实施例提供了一种消息通信系统, 所述系统包括: 0007 TCP通道模块、 解码前异步消息接收队列模块、 异步消息处理模块、 解码后异步消 息接收队列模块以及消息分发模块; 0008 其中, 所述TCP通道模块与所述解码前异步消息接收队列模块相连, 用于建立客户 端与服务端之间的通信连接, 以接收服务端发送至客户端的消息, 并将所述消息传输至所 述解码前异步消息接收队列模块; 0009 所述解码前。

10、异步消息接收队列模块与所述异步消息处理模块相连, 用于对所述 TCP通道模块传输来的消息进行存储; 0010 所述异步消息处理模块与所述解码后异步消息接收队列模块相连, 用于当监听到 所述解码前异步消息接收队列模块中有消息时, 对所述消息进行读取并基于设定报文格式 对所述消息进行解码, 以得到完整的业务数据, 并将所述业务数据传输至所述解码后异步 消息接收队列模块; 0011 所述解码后异步消息接收队列模块与所述消息分发模块相连, 用于对所述异步消 息处理模块传输来的业务数据进行存储; 0012 所述消息分发模块用于当监听到所述解码后异步消息接收队列模块存在业务数 据时, 基于所述业务数据的主。

11、题将所述业务数据传输至接收方。 0013 上述发明中的实施例具有如下优点或有益效果: 0014 通过所述异步消息处理模块对所述解码前异步消息接收队列模块进行监听, 当监 听到所述解码前异步消息接收队列模块中有消息时, 对所述消息进行读取并基于设定报文 格式对所述消息进行解码, 以得到完整的业务数据, 并将所述业务数据传输至所述解码后 异步消息接收队列模块, 解决了TCP连接中的消息粘包问题, 通过模块化的设计, 增强了通 说明书 1/7 页 4 CN 111447263 A 4 信系统的扩展性, 当需要接入新的后台服务时, 只需基于所述新的后台服务的消息报文格 式调整所述异步消息处理模块即可,。

12、 降低了调整工作量, 提高了调整效率。 附图说明 0015 图1是本发明实施例一提供的一种消息通信系统的结构示意图; 0016 图2是本发明实施例一提供的一种设定报文格式的示意图。 具体实施方式 0017 下面结合附图和实施例对本发明作进一步的详细说明。 可以理解的是, 此处所描 述的具体实施例仅仅用于解释本发明, 而非对本发明的限定。 另外还需要说明的是, 为了便 于描述, 附图中仅示出了与本发明相关的部分而非全部结构。 0018 实施例一 0019 图1为本发明实施例一提供的一种消息通信系统的结构示意图。 如图1所示, 所述 系统包括: TCP通道模块110、 解码前异步消息接收队列模块1。

13、20、 异步消息处理模块130、 解 码后异步消息接收队列模块140以及消息分发模块150。 0020 其中, TCP通道模块110与解码前异步消息接收队列模块120相连, 用于建立客户端 与服务端之间的通信连接(即TCP连接), 以接收服务端发送至客户端的消息, 并将所述消息 传输至解码前异步消息接收队列模块120。 可以理解的是, TCP通道模块110还用于将客户端 发送至服务端的消息传输至服务端。 0021 示例性的, 本实施例中, 底层通信-TCP通道模块110采用Windows.NET Framework 开发类库中的TCP Client类, 该接口类的消息读写分为异步和同步两种方式。

14、, 为达到同一 线程监听多个TCP连接的目的, 本实施例中采用异步读取方式, 若某条TCP连接中无服务端 推送的数据, 则继续轮询下一条TCP连接, 直到当前线程管理的所有TCP连接中有准备好的 数据, 则读取数据后向上写入解码前异步消息接收队列模块120, 在整个数据轮询过程中, 若某条TCP连接中一直没有接收数据, 则将该TCP连接阻塞, 以减少系统资源消耗。 0022 对应的, 所述消息通信系统还包括: 0023 TCP连接管理模块111, 与TCP通道模块110相连, 用于通过同一线程对所述TCP通道 模块中的至少两个TCP连接进行监听, 若在设定监听时间内目标TCP连接始终没有接收到。

15、服 务端发送至客户端的消息, 则将所述目标TCP连接关闭。 0024 解码前异步消息接收队列模块120与异步消息处理模块130相连, 用于对TCP通道 模块110传输来的消息进行存储。 0025 异步消息处理模块130与解码后异步消息接收队列模块140相连, 用于当监听到解 码前异步消息接收队列模块中120有消息时, 对所述消息进行读取并基于设定报文格式对 所述消息进行解码, 以得到完整的业务数据, 并将所述业务数据传输至解码后异步消息接 收队列模块140。 其中, 参见图2所示的一种设定报文格式的示意图, 所述设定报文格式包 括: 标识一个完整消息报文全部字节数的标识length、 标识消息。

16、报文头字节数的标识 header length、 消息报文头数据header data以及消息报文体数据body data。 0026 其中, 在一个示例中, length为4个字节的整数, 其等于header length、 header data以及body data的长度总和, 标识一个完整消息的全部字节数。 header length:为4个 说明书 2/7 页 5 CN 111447263 A 5 字节的整数, 标识消息报文头字节数。 0027 header data的具体报文头格式与字段如下: 0028 0029 0030 body data应用自定义的二进制序列化数据。 0031。

17、 其中, header data中的ExtField字段, 以及body data字段可根据业务场景灵活 适配, 使得消息传输的报文格式具备非常强的扩展性, 可满足不同业务场景的要求。 0032 进一步的, 可参见如下表1表示的报文头header data中各字段的类型、 请求含义 以及对应的应答含义。 说明书 3/7 页 6 CN 111447263 A 6 0033 0034 0035 进一步的, 异步消息处理模块130还用于: 将所述业务数据按照客户端报文格式进 行封装, 并将封装后的业务数据传输至解码后异步消息接收队列模块140。 0036 进一步的, 当异步消息处理模块130对解码前。

18、异步消息接收队列模块120中的消息 进行读取的速度低于阈值时, 解码前异步消息接收队列模块120还用于按照预设限流策略 对其存储的消息进行限流。 所述预设限流策略包括最老消息丢弃策略或者最新消息丢弃策 略。 所述最老消息丢弃策略实质为将其存储的消息中最早接收到的消息丢弃, 所述最新消 息丢弃策略实质为将其存储的消息中最晚接收到的消息丢弃, 以达到减少其存储的消息数 量的目的。 当然还可以是其它的自定义的限流策略。 具体的, 例如客户端电脑资源不够, 页 面刷新速度变慢、 消息的业务计算工作量变大等情况下, 对解码前异步消息接收队列模块 120中存储的消息进行限流。 0037 解码后异步消息接收。

19、队列模块140与消息分发模块150相连, 用于对异步消息处理 说明书 4/7 页 7 CN 111447263 A 7 模块130传输来的业务数据进行存储。 0038 消息分发模块150用于当监听到解码后异步消息接收队列模块140存在业务数据 时, 基于所述业务数据的主题将所述业务数据传输至接收方。 0039 本实施例的消息通信系统采用消息订阅接收的方式管理客户端不同页面需要接 收的不同数据, 并且使用主题Topic对消息进行分类。 消息分发模块150(例如其中的 MQClient线程)当监听到解码后异步消息接收队列模块140存在业务数据时, 将根据业务数 据的主题(Topic)对业务数据进行。

20、分发, 分发工作具体由消息分发模块150中的 MsgDispatcher处理。 MsgDispatcher通过MQClient的订阅接口给业务数据的最终接收方返 回消息容器MsgHandler, 当监听到符合订阅主题的业务数据时, 将通过MsgHandler的事件 机制把业务数据通知到消息接收方。 0040 类似的, 当消息分发模块150将解码后异步消息接收队列模块140中的业务数据传 输至接收方的速度低于阈值时, 解码后异步消息接收队列模块140还用于按照预设限流策 略对其存储的消息进行限流。 0041 本实施例提供的消息通信系统, 通过解码前异步消息接收队列模块120以及解码 后异步消息接。

21、收队列模块140的两层限流, 极大地降低了系统宕机的风险, 提高了系统的稳 定性。 0042 进一步的, 所述系统还包括: 0043 异常事件监听模块160, 用于基于设定策略监听异常事件, 并基于监听到的异常事 件的异常类型触发响应事件。 所述响应事件包括下述至少一种: 日志记录、 断线重连以及通 知业务层处理。 具体的, 系统对消息读写与处理过程中出现的任何异常和错误, 系统将异常 与错误封装成事件异步通知到异常事件监听模块160, 异常事件监听模块160根据异常事件 的不同类型进行不同的响应。 例如, 断线重连功能通过异常事件监听机制触发, 一般以下情 况会触发异常事件监听: 读取到的数。

22、据格式异常、 TCP连接不可用、 消息编码解码报错、 后台 服务不可用、 网络不通、 不可预知的错误等。 断线重连事件触发后, 发生异常事件的连接涉 及到的所有线程将被销毁, 消息队列被清空, 停止一段时间后将被重新启动。 在后台服务重 启的场景下, 断线重连功能可通过F5或haproxy的负载均衡功能, 实现客户端与后台服务端 之间的高可用。 0044 进一步的, 通常当客户端与服务端之间的TCP连接在一段时间无消息通信时, 服务 端的消息通信设备会对闲置的TCP连接资源进行释放, 断开某些空闲的TCP连接, 但是在消 息通信时机不可预知的情况下, TCP连接的不断建立与断开也将不断消耗客户。

23、端的资源。 为 了避免上述情况, 所述消息通信系统还包括: 连接保持模块170以及写消息队列模块180, 连 接保持模块170用于在监听到目标TCP连接在设定时间内无通信消息时, 通过写消息队列模 块170向目标TCP连接发送设定消息(例如空消息), 以使所述目标TCP连接将所述设定消息 发送至服务端, 使所述目标TCP连接保持连线状态。 可以理解的是, 写消息队列模块180还用 于存储客户端向服务端传输的消息。 0045 本实施例的技术方案, 通过所述异步消息处理模块对所述解码前异步消息接收队 列模块进行监听, 当监听到所述解码前异步消息接收队列模块中有消息时, 对所述消息进 行读取并基于设。

24、定报文格式对所述消息进行解码, 以得到完整的业务数据, 并将所述业务 数据传输至所述解码后异步消息接收队列模块, 解决了TCP连接中的消息粘包问题; 且通过 说明书 5/7 页 8 CN 111447263 A 8 异步消息处理模块将所述业务数据按照客户端报文格式进行封装, 并将封装后的业务数据 传输至所述解码后异步消息接收队列模块, 使得适配服务端不同报文格式的工作量大大减 少; 通过模块化的设计, 增强了通信系统的扩展性, 当需要接入新的后台服务时, 只需基于 所述新的后台服务的消息报文格式调整所述异步消息处理模块即可, 降低了调整工作量, 提高了调整效率; 通过多层限流机制, 极大地提高。

25、了系统的稳定性。 0046 实施例二 0047 本实施例二提供了一种计算机可读存储介质, 其上存储有计算机程序, 该程序被 处理器执行时实现如本发明任意实施例所提供的消息通信系统中的流程步骤。 0048 本发明实施例的计算机存储介质, 可以采用一个或多个计算机可读的介质的任意 组合。 计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。 计算机可读 存储介质例如可以是但不限于: 电、 磁、 光、 电磁、 红外线、 或半导体的系统、 装置或器件, 或 者任意以上的组合。 计算机可读存储介质的更具体的例子(非穷举的列表)包括: 具有一个 或多个导线的电连接、 便携式计算机磁盘、 硬盘、 。

26、随机存取存储器(RAM)、 只读存储器(ROM)、 可擦式可编程只读存储器(EPROM或闪存)、 光纤、 便携式紧凑磁盘只读存储器(CD-ROM)、 光 存储器件、 磁存储器件、 或者上述的任意合适的组合。 在本文件中, 计算机可读存储介质可 以是任何包含或存储程序的有形介质, 该程序可以被指令执行系统、 装置或者器件使用或 者与其结合使用。 0049 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。 这种传播的数据信号可以采用多种形式, 包括但不限 于电磁信号、 光信号或上述的任意合适的组合。 计算机可读的信号介质还可以是计算机可 读存。

27、储介质以外的任何计算机可读介质, 该计算机可读介质可以发送、 传播或者传输用于 由指令执行系统、 装置或者器件使用或者与其结合使用的程序。 0050 计算机可读介质上包含的程序代码可以用任何适当的介质传输, 包括但不限于: 无线、 电线、 光缆、 RF等等, 或者上述的任意合适的组合。 0051 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码, 所述程序设计语言包括面向对象的程序设计语言, 诸如Java、 Smalltalk、 C+, 还 包括常规的过程式程序设计语言诸如 “C” 语言或类似的程序设计语言。 程序代码可以完 全地在用户计算机上执行、 部分地在用户。

28、计算机上执行、 作为一个独立的软件包执行、 部分 在用户计算机上部分在远程计算机上执行、 或者完全在远程计算机或服务器上执行。 在涉 及远程计算机的情形中, 远程计算机可以通过任意种类的网络, 包括局域网(LAN)或广域网 (WAN), 连接到用户计算机, 或者, 可以连接到外部计算机(例如利用因特网服务提供商来通 过因特网连接)。 0052 本领域普通技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用的计 算装置来实现, 它们可以集中在单个计算装置上, 或者分布在多个计算装置所组成的网络 上, 可选地, 他们可以用计算机装置可执行的程序代码来实现, 从而可以将它们存储在存储 装置中由。

29、计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们中的多 个模块或步骤制作成单个集成电路模块来实现。 这样, 本发明不限制于任何特定的硬件和 软件的结合。 0053 注意, 上述仅为本发明的较佳实施例及所运用技术原理。 本领域技术人员会理解, 说明书 6/7 页 9 CN 111447263 A 9 本发明不限于这里所述的特定实施例, 对本领域技术人员来说能够进行各种明显的变化、 重新调整和替代而不会脱离本发明的保护范围。 因此, 虽然通过以上实施例对本发明进行 了较为详细的说明, 但是本发明不仅仅限于以上实施例, 在不脱离本发明构思的情况下, 还 可以包括更多其他等效实施例, 而本发明的范围由所附的权利要求范围决定。 说明书 7/7 页 10 CN 111447263 A 10 图1 图2 说明书附图 1/1 页 11 CN 111447263 A 11 。

展开阅读全文
内容关键字: 消息 通信 系统
关于本文
本文标题:消息通信系统.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/9208881.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1