公开/公告号CN105516097A
专利类型发明专利
公开/公告日2016-04-20
原文格式PDF
申请/专利权人 上海爱数信息技术股份有限公司;
申请/专利号CN201510856872.2
发明设计人 邢保松;
申请日2015-11-30
分类号H04L29/06;H04L29/08;
代理机构上海科盛知识产权代理有限公司;
代理人翁惠瑜
地址 201112 上海市闵行区联航路1188号8幢第2层A-1单元
入库时间 2023-12-18 15:37:44
法律状态公告日
法律状态信息
法律状态
2019-02-19
授权
授权
2016-05-18
实质审查的生效 IPC(主分类):H04L29/06 申请日:20151130
实质审查的生效
2016-04-20
公开
公开
技术领域
本发明涉及计算机网络技术领域,尤其是涉及一种基于Thrift数据格式的混合 架构消息系统及消息传输方法。
背景技术
Thrift是一种远程服务调用(RPC)的框架,支持自定义服务接口并提供远程客 户端调用,通过使用一种语言无关的接口定义语言IDL(InterfaceDefinition Language),可以生成多种编程语言的客户端,从而实现一种服务能够被多种不同 语言的客户端调用。本质上thrift所提供的是一种不同机器之间消息交互的系统, 并提供了完整的协议栈。
但是,由于Thrift是一种RPC系统,所以只能是被动地提供服务供客户端访 问服务,类似于HTTP协议,这是一种短连接的服务,每次调用服务都需要重新连 接才能调用服务,服务端并不能主动向客户端发送消息,虽然可以重用一个连接, 但是仍不具备长连接方式所需的功能,而且服务器端只能被动地等待客户端调用并 回复消息,在需要保持长连接,并且服务器端需要向客户端发送消息的系统环境中 就无法发挥作用。采取在客户端方面实现服务这种方式也可以解决问题,但是这种 方式需要客户端方面对外部提供访问端口,在某些环境中,由于安全性等限制,不 能随意开通访问端口,这种方式是无法实现的。
另一方面,在已有的支持长连接的系统中,使用的协议可能是一种自定义的数 据格式,当在两种场景都需要支持的系统中,会不可避免的需要做大量繁琐的数据 格式之间的转换,导致给系统会带来一些不必要的性能损耗,同时也增加了系统的 复杂度,使得系统难以维护。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种结构简单、 维护成本低、风险低的基于Thrift数据格式的混合架构消息系统及消息传输方法。
本发明的目的可以通过以下技术方案来实现:
一种基于Thrift数据格式的混合架构消息系统,包括:
基本协议建立模块,用于根据Thrift接口定义语言建立一基本协议;
TCP连接建立模块,用于建立客户端与服务器间的TCP连接,并通过心跳消 息保持此TCP连接为长连接;
消息交换模块,用于根据所述基本协议交换客户端与服务器间的消息;
服务实现模块,用于根据所述Thrift接口定义语言实现服务器的Thrift服务, 接收客户端对Thrift服务的处理结果,并通过远程过程调用功能向外提供所述Thrift 服务。
所述消息交换模块中,进行交换的数据格式为Thrift数据格式。
所述服务实现模块设置于服务器中。
所述服务实现模块包括:
监听单元,用于实时监测是否有服务调用者发起对所建立的Thrift服务的访 问,并实时监测是否收到客户端对Thrift服务的处理结果。
一种基于Thrift数据格式的混合架构消息传输方法,包括以下步骤:
1)基于Thrift接口定义语言建立一基本协议;
2)在客户端与服务器之间建立TCP连接,并通过心跳消息保持此TCP连接 为长连接;
3)客户端与服务器通过所述基本协议进行消息交换,服务调用者对服务器进 行远程过程调用功能,通过客户端与服务器的长连接实现对客户端的间接调用。
所述步骤3)中,间接调用具体为:
301)服务器基于Thrift接口定义语言建立Thrift服务,并通过所述长连接通 知客户端,客户端实现所述Thrift服务的处理过程;
302)服务器监听Thrift服务的外部访问端口,当监听到有服务调用者通过远 程过程调用功能访问Thrift服务的消息时,服务器将此消息以Thrift数据格式通过 长连接发送到客户端;
303)客户端将Thrift服务对应的处理结果以Thrift数据格式返回给服务器;
304)服务器实时监听与客户端连接的端口,当监听到有客户端的处理结果数 据返回时,将此数据作为Thrift服务的结果返回给服务调用者。
与现有技术相比,本发明具有以有益效果:
(1)本发明在客户端与服务器之间建立TCP连接,并通过心跳消息保持此 TCP连接为长连接,使得采用thrift技术的系统能够同时支持长连接的模式,以实 现从服务器端主动向客户端发送消息的功能,架构简单易懂,也易于实现。
(2)本发明以Thrift数据格式进行消息传递,消除了RPC系统与长连接系统 中不同消息格式之间的转换,使得系统的开销得到降低,从而降低了消息传递的延 迟;同时由于不再需要维护多种不同的数据格式,有效降低了维护的成本。
(3)本发明中,服务调用者通过远程过程调用功能实现对客户端的间接调用, 不需要客户端对外暴露访问端口,降低了客户端被攻击的风险。
附图说明
图1为本发明的原理及消息传递框图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方 案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范 围不限于下述的实施例。
本实施例提供一种基于Thrift数据格式的混合架构消息系统,包括基本协议建 立模块、TCP连接建立模块、消息交换模块和服务实现模块,其中,基本协议建 立模块用于根据Thrift接口定义语言建立一基本协议;TCP连接建立模块用于建立 客户端与服务器间的TCP连接,并通过心跳消息保持此TCP连接为长连接;消息 交换模块用于根据所述基本协议交换客户端与服务器间的消息;服务实现模块设置 于服务器中,用于根据所述Thrift接口定义语言实现服务器的Thrift服务,接收客 户端对Thrift服务的处理结果,并通过远程过程调用功能向外提供所述Thrift服务。 Thrift服务包括获取客户端指定目录下的文件等。
服务实现模块中还包括监听单元,用于实时监测是否有服务调用者发起对所建 立的Thrift服务的访问,并实时监测是否收到客户端对Thrift服务的处理结果。
基于上述消息系统可实现混合架构消息传输方法,客户端和服务器以及外部服 务访问者与服务器之间的相互交互的示意图如图1所示,消息传输方法包括以下步 骤:
1)基于Thrift接口定义语言建立一基本协议。
2)在客户端与服务器之间建立TCP连接,并通过心跳消息保持此TCP连接 为长连接。
3)客户端与服务器通过所述基本协议进行消息交换,服务调用者对服务器进 行远程过程调用功能,通过客户端与服务器的长连接实现对客户端的间接调用,具 体为:
301)服务器基于Thrift接口定义语言建立Thrift服务,并通过所述长连接通 知客户端,客户端实现所述Thrift服务的处理过程;
302)服务器监听Thrift服务的外部访问端口,当监听到有服务调用者通过远 程过程调用功能访问Thrift服务的消息时,服务器将此消息以Thrift数据格式通过 长连接发送到客户端;
303)客户端将Thrift服务对应的处理结果以Thrift数据格式返回给服务器;
304)服务器实时监听与客户端连接的端口,当监听到有客户端的处理结果数 据返回时,将此数据作为Thrift服务的结果返回给服务调用者。
以Thrift服务为获取客户端指定目录下的文件为例,服务器建立该Thrift服务, 在一台客户端机器上启动客户端程序,使得客户端连接到启动的服务器,并保持长 连接,在另外一台机器(服务访问者)上对提供Thrift服务的服务器进行访问,比 如指定一个路径,之后即可方便获得客户端对应目录的文件列表。
机译: 即时消息系统的修改消息传输方法,包括向终端发送修改消息,该消息具有发送给终端之前的即时消息标识和修改即时消息的指令。
机译: 通用消息系统,为基于PC /基于Web的客户端提供集成的语音,数据和传真消息传递服务,包括用于高效地将语音/传真消息分发给基于Web的客户端的大型对象服务器
机译: 从发件人到收件人的消息传输方法,消息系统和消息转换装置