CN105516097A - 基于Thrift数据格式的混合架构消息系统及消息传输方法 - Google Patents
基于Thrift数据格式的混合架构消息系统及消息传输方法 Download PDFInfo
- Publication number
- CN105516097A CN105516097A CN201510856872.2A CN201510856872A CN105516097A CN 105516097 A CN105516097 A CN 105516097A CN 201510856872 A CN201510856872 A CN 201510856872A CN 105516097 A CN105516097 A CN 105516097A
- Authority
- CN
- China
- Prior art keywords
- thrift
- client
- server
- message
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及一种基于Thrift数据格式的混合架构消息系统及消息传输方法,其中,消息系统包括:基本协议建立模块,用于根据Thrift接口定义语言建立一基本协议;TCP连接建立模块,用于建立客户端与服务器间的TCP连接,并通过心跳消息保持此TCP连接为长连接;消息交换模块,用于根据所述基本协议交换客户端与服务器间的消息;服务实现模块,用于根据所述Thrift接口定义语言实现服务器的Thrift服务,接收客户端对Thrift服务的处理结果,并通过远程过程调用功能向外提供所述Thrift服务。与现有技术相比,本发明具有结构简单、维护成本低、风险低等优点。
Description
技术领域
本发明涉及计算机网络技术领域,尤其是涉及一种基于Thrift数据格式的混合架构消息系统及消息传输方法。
背景技术
Thrift是一种远程服务调用(RPC)的框架,支持自定义服务接口并提供远程客户端调用,通过使用一种语言无关的接口定义语言IDL(InterfaceDefinitionLanguage),可以生成多种编程语言的客户端,从而实现一种服务能够被多种不同语言的客户端调用。本质上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服务的服务器进行访问,比如指定一个路径,之后即可方便获得客户端对应目录的文件列表。
Claims (6)
1.一种基于Thrift数据格式的混合架构消息系统,其特征在于,包括:
基本协议建立模块,用于根据Thrift接口定义语言建立一基本协议;
TCP连接建立模块,用于建立客户端与服务器间的TCP连接,并通过心跳消息保持此TCP连接为长连接;
消息交换模块,用于根据所述基本协议交换客户端与服务器间的消息;
服务实现模块,用于根据所述Thrift接口定义语言实现服务器的Thrift服务,接收客户端对Thrift服务的处理结果,并通过远程过程调用功能向外提供所述Thrift服务。
2.根据权利要求1所述的基于Thrift数据格式的混合架构消息系统,其特征在于,所述消息交换模块中,进行交换的数据格式为Thrift数据格式。
3.根据权利要求1所述的基于Thrift数据格式的混合架构消息系统,其特征在于,所述服务实现模块设置于服务器中。
4.根据权利要求1所述的基于Thrift数据格式的混合架构消息系统,其特征在于,所述服务实现模块包括:
监听单元,用于实时监测是否有服务调用者发起对所建立的Thrift服务的访问,并实时监测是否收到客户端对Thrift服务的处理结果。
5.一种基于Thrift数据格式的混合架构消息传输方法,其特征在于,包括以下步骤:
1)基于Thrift接口定义语言建立一基本协议;
2)在客户端与服务器之间建立TCP连接,并通过心跳消息保持此TCP连接为长连接;
3)客户端与服务器通过所述基本协议进行消息交换,服务调用者对服务器进行远程过程调用功能,通过客户端与服务器的长连接实现对客户端的间接调用。
6.根据权利要求5所述的基于Thrift数据格式的混合架构消息传输方法,其特征在于,所述步骤3)中,间接调用具体为:
301)服务器基于Thrift接口定义语言建立Thrift服务,并通过所述长连接通知客户端,客户端实现所述Thrift服务的处理过程;
302)服务器监听Thrift服务的外部访问端口,当监听到有服务调用者通过远程过程调用功能访问Thrift服务的消息时,服务器将此消息以Thrift数据格式通过长连接发送到客户端;
303)客户端将Thrift服务对应的处理结果以Thrift数据格式返回给服务器;
304)服务器实时监听与客户端连接的端口,当监听到有客户端的处理结果数据返回时,将此数据作为Thrift服务的结果返回给服务调用者。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510856872.2A CN105516097B (zh) | 2015-11-30 | 2015-11-30 | 基于Thrift数据格式的混合架构消息系统及消息传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510856872.2A CN105516097B (zh) | 2015-11-30 | 2015-11-30 | 基于Thrift数据格式的混合架构消息系统及消息传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105516097A true CN105516097A (zh) | 2016-04-20 |
CN105516097B CN105516097B (zh) | 2019-02-19 |
Family
ID=55723735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510856872.2A Active CN105516097B (zh) | 2015-11-30 | 2015-11-30 | 基于Thrift数据格式的混合架构消息系统及消息传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105516097B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
CN107800707A (zh) * | 2017-11-06 | 2018-03-13 | 北京奇艺世纪科技有限公司 | 扩展thrift协议方法、读取方法、装置以及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577546A (zh) * | 2013-10-12 | 2014-02-12 | 北京奇虎科技有限公司 | 一种数据备份的方法、设备及分布式集群文件系统 |
CN104699612A (zh) * | 2015-03-25 | 2015-06-10 | 北京嘀嘀无限科技发展有限公司 | 用于软件测试中的处理方法、设备和系统 |
-
2015
- 2015-11-30 CN CN201510856872.2A patent/CN105516097B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577546A (zh) * | 2013-10-12 | 2014-02-12 | 北京奇虎科技有限公司 | 一种数据备份的方法、设备及分布式集群文件系统 |
CN104699612A (zh) * | 2015-03-25 | 2015-06-10 | 北京嘀嘀无限科技发展有限公司 | 用于软件测试中的处理方法、设备和系统 |
Non-Patent Citations (1)
Title |
---|
李洋: "《云计算中可扩展的远程服务调用机制的设计与实现》", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
CN107800707A (zh) * | 2017-11-06 | 2018-03-13 | 北京奇艺世纪科技有限公司 | 扩展thrift协议方法、读取方法、装置以及电子设备 |
CN107800707B (zh) * | 2017-11-06 | 2020-07-03 | 北京奇艺世纪科技有限公司 | 扩展thrift协议读取方法、读取装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105516097B (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2645636B1 (en) | Home gateway, cloud server, and method for communication therebetween | |
CN102377814B (zh) | 针对嵌入式操作系统的远程协助服务方法 | |
CN106453288A (zh) | 一种支持异步模式的分布式微服务框架系统及其实现方法 | |
CN107528891B (zh) | 一种基于WebSocket的自动集群方法及其系统 | |
CN105610888A (zh) | 基于安卓的利用socket推送消息的方法和系统 | |
CN103873472A (zh) | 一种自动连接网络的方法 | |
CN103312528A (zh) | 一种心跳消息发送方法及用户终端 | |
US20180351889A1 (en) | Method and system for transferring messages between messaging systems | |
CN116048538B (zh) | 用于dpu的服务网格部署方法及装置 | |
CN104468380A (zh) | 一种接入点设备与服务器交互的接口通信方法 | |
CN101854367A (zh) | 用于服务器端监控客户端的方法和系统 | |
CN101009588A (zh) | 配置分布式代理服务器信息的方法及系统 | |
WO2018017171A1 (en) | Efficient transport of encapsulated media traffic over a datagram based transport layer | |
CN104463670A (zh) | 一种基于Websocket的银行前置交易系统的搭建方法 | |
CN107872492B (zh) | 一种在服务端支持多用户编辑数据对象的方法和装置 | |
CN105516097A (zh) | 基于Thrift数据格式的混合架构消息系统及消息传输方法 | |
CN103516766A (zh) | 一种客户端与应用服务器间进行通信的方法和系统 | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
CN116192863B (zh) | 微服务流量处理方法、dpu服务网格部署方法及系统 | |
CN106169982B (zh) | 扩展端口的处理方法、装置及系统 | |
US20190036793A1 (en) | Network service implementation method, service controller, and communications system | |
CN102984145A (zh) | 与具有多个分机的通信终端通信的方法及通信设备 | |
CN101695169B (zh) | 运营支持系统数据的远端维护方法及系统、远端开户代理 | |
CN110753043B (zh) | 一种通信方法、装置、服务器及介质 | |
US10263915B2 (en) | Method for processing event between controller and network device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |