CN107301098A - 一种基于Thrift协议的远程过程调用装置、方法及系统 - Google Patents

一种基于Thrift协议的远程过程调用装置、方法及系统 Download PDF

Info

Publication number
CN107301098A
CN107301098A CN201710451530.1A CN201710451530A CN107301098A CN 107301098 A CN107301098 A CN 107301098A CN 201710451530 A CN201710451530 A CN 201710451530A CN 107301098 A CN107301098 A CN 107301098A
Authority
CN
China
Prior art keywords
thrift
service
agreements
call
remote
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
Application number
CN201710451530.1A
Other languages
English (en)
Other versions
CN107301098B (zh
Inventor
汪浩淼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Search Easy Loan (beijing) Financial Information Services Ltd
Original Assignee
Search Easy Loan (beijing) Financial Information Services Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Search Easy Loan (beijing) Financial Information Services Ltd filed Critical Search Easy Loan (beijing) Financial Information Services Ltd
Priority to CN201710451530.1A priority Critical patent/CN107301098B/zh
Publication of CN107301098A publication Critical patent/CN107301098A/zh
Application granted granted Critical
Publication of CN107301098B publication Critical patent/CN107301098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明属于通信及互联网金融领域,特别涉及一种基于Thrift协议的远程过程调用装置、方法及系统。所述装置包括API模块、远程调用模块;其中API模块包括若干预设服务约定接口及若干Thrift调用基础类;所述远程调用模块包括特定开发语言对应的若干基础工具类,可读取API模块中包含的预设服务约定接口,并结合API包中Thrift编译器生成的基础类,生成一个代理对象,并扩展spring将生成的代理对象注入到spring所管理的context中;调用者使用时,可通过spring注解机制获取到代理对象,并通过代理对象以thrift协议触发对远程服务的调用。调用者调用手写代码书写量大幅减少,降低业务组之间服务相互调用的开发门槛与成本。

Description

一种基于Thrift协议的远程过程调用装置、方法及系统
技术领域
本发明属于通信及互联网金融领域,特别涉及一种基于Thrift协议的远程过程调用装置、方法及系统。
背景技术
Thrift是由facebook开源出来用在系统以及各语言之间的进行RPC通信的基础软件框架,Thrift通过一个中间描述文件以及Thrift特有的中间描述语言来定义数据类型和服务接口,通过Thrift的编译器可以利用中间描述文件来生成各种语言的基础代码,从而实现各个语言以及系统间的无缝调用。Thrift编译器可在C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,OCaml,Delphi间提供支持。总得来说,Thrift提供了很完备的网络通信和中间协议。参考出处:http:// thrift.apache.org/;http://dongxicheng.org/search-engine/thrift-framework- intro/
但是利用Thrift进行服务和客户端开发,需要开发人员懂得使用Thrift开发语言,对于不熟悉thrift环境的开发人员,存在较大的学习成本,不利于高效开发;此外,采用thrift原生开发方式,需要在开发环境中带入thrift代码,存在诸多不便。
发明内容
为了克服现有技术中存在的如下技术缺陷:1、上手成本偏高,需要所有开发人员都要关心Thrift的客户端如何开发,无法高效的开发和使用;2、用原生的开发方式开发会让业务代码侵入很多关于Thrift本身的代码,使得业务代码非常臃肿、不清晰、不易维护以及影响代码可读性;3、缺乏灵活调度和监控调用过程方案;本发明在Thrift基础上继续封装,充分利用Thrift优秀的协议框架基础之上,开发一套可以和spring技术体系高度融合、让开发人员透明使用、几乎无学习成本、简单高效开发、无任何Thrift代码侵入、灵活调度、充分监控调用过程数据的远程过程调用系统。
本发明首先提供了一种基于Thrift协议的远程过程调用装置,包括API模块、远程调用模块(TFCilentFactory);其中API模块包括若干预设服务约定接口及若干Thrift调用基础类,一个预设服务约定接口对应一种远程服务,所述远程调用模块(TFCilentFactory)包括若干Java基础工具类,所述Java基础工具类可读取API模块中包含的预设服务约定接口,并结合API包中的Thrift编译器生成的基础类,生成一个代理对象,并扩展Java基础类工具中的spring将生成的代理对象注入到spring所管理的context中,供调用者通过spring注解机制获取代理对象,通过代理对象以thrift协议触发对远程服务的调用。
优选地,所述API模块中各预设服务约定接口通过url和tprotocol两个变量与一种特定远程服务对应,url用于定义该特定远程服务的地址,tprotocol用于定义该特定远程服务所以使用的Thrift网络数据传输格式,所述远程调用模块(TFCilentFactory)中的Java基础类工具可利用java反射机制读取任何API包中约定格式的接口,并提取出该接口对应的服务的url和网络传输格式tprotocol,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象。根据项目涉及及目标调用环境编程语言需求,相关变量或参数的数量可以根据实际需要进行调整。
优选地,Java基础类工具包含经扩展的springBeanFactoryPostProcessor后置处理器,该处理器中设有自定义处理逻辑,用以将代理对象注入到spring所管理的context中,供调用者通过spring注解机制获取代理对象,通过代理对象以thrift协议触发对远程服务的调用。
优选地,还包括服务端模块和客户端模块,所述服务端模块包括基于thrift协议的若干预设服务,所述服务端模块可根据客户端模块发出的调用请求向调用者反馈对应的预设服务处理结果,并记录执行数据,所述执行数据包括输入流、输出流、基于thrift协议的预设服务、调用成功情况、响应时间中的一种或多种。
本发明还提供了一种基于Thrift协议的远程过程调用方法,包括以下步骤:
建立API包的步骤,所述API包中若干预设服务约定接口及Thrift调用基础类工具,一个预设服务约定接口对应一种远程服务;
建立远程调用包(TFCilentFactory)的步骤,所述远程调用包设有特定开发语言对应的若干基础类工具,所述特定开发语言对应的基础类工具可读取所述API包中包含的预设服务约定接口,并协同Thrift调用基础类工具产生的基础代码,动态生成一个代理对象。
本发明还提供了另一种基于Thrift协议的远程过程调用方法,包括以下步骤:
步骤1:建立Thrift中间描述文件,其中定义了若干服务;
步骤2:对中间文件定义一个注解,注解里面定义两个变量,其中一个变量用于定义各服务的远程地址(url),另一个变量用于定义远程服务所使用的Thrift网络数据传输格式(tprotocol);
步骤3:将步骤2中产生的注解存放于一个公共的基础包中;
步骤4:定义一个约定接口,并继承对应服务的接口,并在接口上打上注解定义好步骤2中的两个变量;
步骤5:利用Thrift编译器和thrift-maven-plugin插件,将步骤4中的接口与对应的thrift中间描述文件所生成的thrift调用基础类工具打包成API包;
步骤6:建立远程调用包(TFCilentFactory),所述远程调用包设有特定开发语言对应的若干基础类工具,所述特定开发语言对应的基础类工具可读取API模块中包含的预设服务约定接口,并协同Thrift调用基础类工具产生的基础代码,动态生成一个代理对象,供业务开发者实现对特定服务的本地化远程调用。
优选地,在前述基于Thrift协议的远程过程调用方法中,步骤6中的远程调用包为Java开发语言对应的若干基础类工具,该等工具类可利用java反射原理读取API包中任一约定格式的接口,并提取出该接口对应服务的注解变量,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象。
优选地,在前述基于Thrift协议的远程过程调用方法中,扩展spring的BeanFactoryPostProcessor后置处理器,添加自定义处理逻辑,使引入了API包和远程调用包的工程可以在spring容器启动后自动扫描所有该工程引入的约定接口,并利用扫描到的约定接口生成对应的代理对象,将产生的代理对象自动存入spring context;供业务开发者在需要使用该服务的类中就可以创建约定接口类型的成员变量,并在其上约定接口上打@Autowired,注解,即可快捷方便的自动注入代理对象,实现对特定服务的本地化远程调用。
优选地,在前述基于Thrift协议的远程过程调用方法中,还包括步骤7,远程过程调用方法被执行时利用Hystrix进行包装,收集对应服务的统计数据,统计数据至少包括成功次数、失败次数、失败比例、调用时长中的一种或多种。
优选地,在前述基于Thrift协议的远程过程调用方法中,统计数据以一定频率将统计数据发往时序存储数据库influxDB,通过grafana以图表形式实时将显示相关数据。
优选地,在前述任一种基于Thrift协议的远程过程调用方法中,还包括步骤8,定义一个服务端处理工具包,主要入口需提供三个参数:输入流、输出流、thrift服务具体实现的实例,处理逻辑读取API包产生的通信格式tprotocol,并结合thrift编译器生成的基础类以及thrift服务具体实现实例,将输入流读取为请求对象,调用具体实现实例进行处理,处理结果回写入输出流,完成一次调用。
优选地,在前述任一种基于Thrift协议的远程过程调用方法中,好包括步骤9,具体为扩展默认的远程服务所使用的Thrift网络数据传输格式变量,实现一个自定义的远程服务所使用的Thrift网络数据传输格式变量处理器,在扩展的远程服务的变量中再解析传输协议时增加详细的日志监控,包括服务端的调用性能,传递的参数数据。
本发明还提供了一种基于Thrift协议的远程过程调用系统,包括服务端和调用端;所述服务端包括前述任一种基于Thrift协议的远程过程调用装置,且设有基于thrift协议的若干预设服务,所述服务端可根据调用端发送的请求,向调用者反馈对应的预设服务;所述调用端,可供调用者根据所述基于Thrift协议的远程过程调用装置生成的代理对象,向服务端发送调用请求,并接受服务端反馈的预设服务。
优选地,在前述基于Thrift协议的远程过程调用系统中,所述服务端在处理调用请求的同时记录执行数据,所述执行数据包括输入流、输出流、基于thrift协议的预设服务、调用成功情况、响应时间中的一种或多种。
优选地,在前述基于Thrift协议的远程过程调用系统中,所述系统采用HTTP通讯协议,并基于Nginx构架。
优选地,在前述基于Thrift协议的远程过程调用系统中,还包括Hystrix封装装置,用于在所述服务端执行调用请求时收集对应服务的统计数据,统计数据至少包括成功次数、失败次数、失败比例、调用时长中的一种或多种。
优选地,在前述基于Thrift协议的远程过程调用系统中,还包括时序存储数据库(influxDB),用于按照一定频率接收和存储所述统计数据。
优选地,在前述基于Thrift协议的远程过程调用系统中,还包括grafana装置,用于以图表形式实时显示时序存储数据库接收的统计数据。
优选地,在前述任一种基于Thrift协议的远程过程调用系统中,还包括Thrift网络数据传输格式变量处理器,用于扩展默认的远程服务所使用的Thrift网络数据传输格式变量,通过扩展的远程服务的变量中再解析传输协议时增加详细的日志监控,包括服务端的调用性能,传递的参数数据。
通过本发明所述技术方案,至少能够实现以下有益效果:
1、客户端调用手写代码书写量以及服务端注入Thrift实现的代码量由平均5行降为1行,开发效率直接提升5倍左右;
2、业务代码中没有任何Thrift相关代码的体现,实现了对Thrift调用实现代码的完全隔离,对业务开发者完全透明,大大降低了业务组之间服务相互调用的开发门槛与成本,并且完全不影响任何代码可读性;
3、能实时观察各个接口调用数据,掌握各服务实时吞吐量和健康情况,方便制定扩容和维护等策略;
4、采用http协议通讯,基于nginx可以方便快速的进行流量调度。
附图说明
图1是本发明所述基于Thrift协议的远程过程调用装置结构示意图;
图2是本发明所述基于Thrift协议的远程过程调用系统及方法实施例调用过程流程图;
图3是本发明所述基于Thrift协议的远程过程调用系统网络结构图;
图4是本发明所述基于Thrift协议的远程过程调用系统实施例效果示意图。
具体实施方式
为了使本发明技术方案更容易理解,现结合附图采用具体实施例的方式,对本发明的技术方案进行清晰、完整的描述。应当注意,在此所述的实施例仅为本发明的部分实施例,而非本发明的全部实现方式,所述实施例只有示例性,其作用只在于为审查员及公众提供理解本发明内容更为直观明了的方式,而不是对本发明所述技术方案的限制。在不脱离本发明构思的前提下,所有本领域普通技术人员没有做出创造性劳动就能想到的其它实施方式,及其它对本发明技术方案的简单替换和各种变化,都属于本发明的保护范围。
如图1所示,基于Thrift协议的远程过程调用装置,包括API模块、远程调用模块(TFCilentFactory);其中API模块包括若干预设服务约定接口及若干Thrift调用基础类,一个预设服务约定接口对应一种远程服务,所述远程调用模块(TFCilentFactory)包括若干Java基础工具类,所述Java基础工具类可读取API模块中包含的预设服务约定接口,并结合API包中的Thrift编译器生成的基础类,生成一个代理对象,并扩展Java基础类工具中的spring将生成的代理对象注入到spring所管理的context中,供调用者通过spring注解机制获取代理对象,通过代理对象以thrift协议触发对远程服务的调用。
所述API模块中各预设服务约定接口通过url和tprotocol两个变量与一种特定远程服务对应,url用于定义该特定远程服务的地址,tprotocol用于定义该特定远程服务所以使用的Thrift网络数据传输格式,所述远程调用模块(TFCilentFactory)中的Java基础类工具可利用java反射机制读取任何API包中约定格式的接口,并提取出该接口对应的服务的url和网络传输格式tprotocol,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象。根据项目涉及及目标调用环境编程语言需求,相关变量或参数的数量可以根据实际需要进行调整。扩展spring的BeanFactoryPostProcessor后置处理器,该处理器中设有自定义处理逻辑,用以将代理对象注入到spring所管理的context中,供调用者通过spring注解机制获取代理对象,通过代理对象以thrift协议触发对远程服务的调用。
还包括服务端模块,所述包括基于thrift协议的若干预设服务,所述服务端模块可根据调用请求对应的代理对象,向调用者反馈对应的预设服务,并记录执行数据,所述执行数据包括输入流、输出流、基于thrift协议的预设服务、调用成功情况、响应时间中的一种或多种。
为进一步说明本发明所述基于Thrift协议的远程过程调用系统的工作流程和实现方式,以下以Java环境为例,对基于Thrift协议的远程过程调用系统调用流程进行说明:
如图2所示:
1、假设有一个已经存在的Thrift中间描述文件-UserService.thrift,并在其中定义了一些服务,如UserService;
2、定义一个注解@STFService,里面定义url和tprotocol两个变量,url用于定义一个服务的远程地址,tprotocol用于定义这个远程服务所以使用的Thrift网络数据传输格式;
3、产生的注解会存放于一个公共的基础包中,我们称为soeasy-thrift-commons;
4、约定在开发任何一个服务前,先定义一个接口并约定名称以大写‘I’打头,后面接在中间描述文件中定义的服务名,并继承对应服务的Iface接口,如IUserService,并在接口上打上注解@STFService定义好url和tprotocol,暂称之为约定接口;
5、利用Thrift编译器和thrift-maven-plugin插件,约定接口与对应的thrift中间描述文件所生成的thrift调用基础类打成一个包,我们称这个包为API包,命名依据具体服务场景而定;
6、创建一个新包,定义一些基础工具类,这些工具类可以利用java反射原理读取任何API包中约定格式的接口,并提取出该接口对应的服务的url和网络传输格式tprotocol,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象,业务开发者拿到动态代理对象就可以像使用任何本地对象一样,我把这个工具类新包成为TFClientFactory;动态生成代理对象通过以下方式实现:利用Spring的BeanFactoryPostProcessor,添加逻辑使引入了API包和TFClientFactory包的工程可以在spring容器启动后自动扫描所有该工程引入的约定接口,并利用TFClientFactory根据扫描到的约定接口生成对应的代理对象,并将产生的代理对象存入spring context,这样在业务服务中,直接在约定接口上打@Autowired注解就会自动注入代理对象,就像使用本地service一样进行远程调用;
7、在前述步骤的基础上,在代理方法被执行时利用Hystrix进行包装,收集对应服务对应方法的执行数据,包括成功次数,失败次数,失败比例,调用时长等数据,并以一定频率(如:10s一次)将统计数据发往时序存储数据库influxDB,然后通过grafana实时将数据以图表形式展示出来;
8、定义一个新的工具包,用于服务端处理。主要入口需提供三个参数:输入流、输出流、thrift服务具体实现的实例,处理逻辑读取API包中的通信格式tprotocol,并结合thrift编译器生成的基础类以及thrift服务具体实现实例将输入流读取为请求对象,并调用具体实现实例进行处理,处理结果回写入输出流,完成一次调用。我们将这个新包称为TFSFactory。
9、在前述步骤的基础上,扩展默认的TProtocol,并实现一个自定义的TProcessor,在扩展的TProtocol中再解析传输协议时增加详细的日志监控,包括服务端的调用性能,传递的参数等数据。
为进一步说明本发明的技术方案,以定时调度系统对外提供的服务为例,本实施例采用HTTP通讯协议,并基于Nginx构架,如图3所示。
1、创建API包,添加中间描述文件QuartzService.thrift,定义TQuartzService,利用Thrift编译器变出Thrift基础代码,创建接口IQuartzService继承TQuartzService.Iface,添加注解@STFService(url="http://xxx.souyidai.com/quartz/xxx",tprotocol=TBinaryProtocol.class)定义好服务的地址以及网络传输所采用的数据格式。
2、Maven打包发布API
3、实现服务端逻辑,并使用TFSFactory在web controller中开启Thrift服务
4、调用方如果想调用quartz的服务,仅需要引入quartz服务的API包以及公共的TFCFactory包,并在需要使用的地方直接@Autowired即可,代码量对比可以参考图4,图中上半部分为使用原生thrift方式呈现的代码量,下半部分属于使用本发明所述技术方案呈现的代码量;
通过图4可以看出,本发明所述技术方案完全屏蔽掉了Thrift的代码,使得业务代码更为清晰简洁,易用;
由于采用http协议,当监控到请求量很大的情况下,可以直接通过nginx代理服务器进行流量调度;
调用统计数据直接在grafana中实时显示。可以监控调用量,服务的健康情况,以便随时调整调度策略。

Claims (10)

1.一种基于Thrift协议的远程过程调用装置,包括API模块、远程调用模块(TFCilentFactory);其中API模块包括若干预设服务约定接口及若干Thrift调用基础类,一个预设服务约定接口对应一种远程服务,所述远程调用模块(TFCilentFactory)包括若干Java基础工具类,所述Java基础工具类可读取API模块中包含的预设服务约定接口,所述API模块中各预设服务约定接口通过url和tprotocol两个变量与一种特定远程服务对应,url用于定义该特定远程服务的地址,tprotocol用于定义该特定远程服务所以使用的Thrift网络数据传输格式,所述远程调用模块(TFCilentFactory)中的Java基础类工具可利用java反射机制读取任何API包中约定格式的接口,并提取出该接口对应的服务的url和网络传输格式tprotocol,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象,Java基础类工具包含经扩展的springBeanFactoryPostProcessor后置处理器,该处理器中设有自定义处理逻辑,用以将代理对象注入到spring所管理的context中供调用者通过spring注解机制获取代理对象,通过代理对象以thrift协议触发对远程服务的调用。
2.根据权利要求1所述的基于Thrift协议的远程过程调用装置,其特征在于:还包括服务端模块和客户端模块,所述服务端模块包括基于thrift协议的若干预设服务,所述服务端模块可根据客户端模块发出的调用请求向调用者反馈对应的预设服务处理结果,并记录执行数据,所述执行数据包括输入流、输出流、基于thrift协议的预设服务、调用成功情况、响应时间中的一种或多种。
3.一种基于Thrift协议的远程过程调用方法,其特征在于,包括以下步骤:
步骤1:建立Thrift中间描述文件,其中定义了若干远程服务;
步骤2:定义一个注解,注解里面定义两个变量,其中一个变量用于定义各服务的远程地址(url),另一个变量用于定义远程服务所使用的Thrift网络数据传输格式(tprotocol);
步骤3:将步骤2中产生的注解存放于一个公共的基础包中;
步骤4:定义一个约定接口,并继承由Thrift编译器根据步骤1中的IDL文件所生成的对应服务的接口,并在约定接口上打上注解同时定义好步骤2中的两个变量;
步骤5:利用Thrift编译器和thrift-maven-plugin插件,将步骤4中的接口与对应的thrift中间描述文件所生成的thrift调用基础类工具打包成API包;
步骤6:建立远程调用包(TFCilentFactory),所述远程调用包为Java开发语言对应的若干基础类工具,该等工具类可利用java反射原理读取API包中任一约定格式的接口,并提取出该接口对应服务的注解变量,结合API包中thrift编译器生成的基础代码,利用java的动态代理技术,根据约定接口动态生成一个代理对象,供业务开发者实现对特定服务的本地化远程调用,具体为:扩展Java基础类工具中的spring BeanFactoryPostProcessor后置处理器,添加自定义处理逻辑使引入了API包和远程调用包的工程可以在spring容器启动后自动扫描所有该工程引入的约定接口,并利用扫描到的约定接口生成对应的代理对象,将产生的代理对象自动存入spring context;业务开发者在需要使用该服务的类中就可以创建约定接口类型的成员变量,并在其上打@Autowired注解,从而自动注入代理对象,实现对特定服务的本地化远程调用。
4.根据权利要求3所述的基于Thrift协议的远程过程调用方法,其特征在于:还包括步骤7,远程过程调用方法被执行时利用Hystrix进行包装,收集对应服务的统计数据,统计数据至少包括成功次数、失败次数、失败比例、调用时长中的一种或多种。
5.根据权利要求4所述的基于Thrift协议的远程过程调用方法,其特征在于:统计数据以一定频率将统计数据发往时序存储数据库influxDB,通过grafana以图表形式实时显示相关数据。
6.根据权利要求3-5中任一项所述的基于Thrift协议的远程过程调用方法,其特征在于,还包括步骤8,定义一个服务端处理工具包,主要入口需提供三个参数:输入流、输出流、thrift服务具体实现的实例,处理逻辑读取API包产生的通信格式tprotocol,并结合thrift编译器生成的基础类以及thrift服务具体实现实例,将输入流读取为请求对象,调用具体实现实例进行处理,处理结果回写入输出流,完成一次调用。
7.根据权利6所述的基于Thrift协议的远程过程调用方法,其特征在于:还包括步骤9,具体为扩展默认的远程服务所使用的Thrift网络数据传输格式变量,实现一个自定义的远程服务所使用的Thrift网络数据传输格式变量处理器,在扩展的远程服务的变量中再解析传输协议时增加详细的日志监控,包括服务端的调用性能,传递的参数数据。
8.一种基于Thrift协议的远程过程调用系统,其特征在于,包括服务端和调用端;所述服务端包括权利要求1-2中任一项所述基于Thrift协议的远程过程调用装置,且设有基于thrift协议的若干预设服务,所述服务端可根据调用端发送的请求,向调用者反馈对应的预设服务;所述调用端,可供调用者根据所述基于Thrift协议的远程过程调用装置生成的代理对象,向服务端发送调用请求,并接受服务端反馈的预设服务;所述服务端在处理调用请求的同时记录执行数据,所述执行数据包括输入流、输出流、基于thrift协议的预设服务、调用成功情况、响应时间中的一种或多种;所述系统采用HTTP通讯协议,并基于Nginx构架。
9.根据权利要求8所述的基于Thrift协议的远程过程调用系统,其特征在于,还至少包括以下装置中的一种或多种:Hystrix封装装置,时序存储数据库(influxDB),grafana装置,
其中:
Hystrix封装装置,用于在所述服务端执行调用请求时收集对应服务的统计数据,统计数据至少包括成功次数、失败次数、失败比例、调用时长中的一种或多种;
时序存储数据库(influxDB),用于按照一定频率接收和存储所述统计数据;
grafana装置,用于以图表形式实时显示时序存储数据库接收的统计数据。
10.根据权利要求8或9所述的基于Thrift协议的远程过程调用系统,其特征在于,还包括Thrift网络数据传输格式变量处理器,用于扩展默认的远程服务所使用的Thrift网络数据传输格式变量,通过扩展的远程服务的变量中在解析传输协议时增加详细的日志监控,包括服务端的调用性能,传递的参数数据。
CN201710451530.1A 2017-06-15 2017-06-15 一种基于Thrift协议的远程过程调用装置、方法及系统 Active CN107301098B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710451530.1A CN107301098B (zh) 2017-06-15 2017-06-15 一种基于Thrift协议的远程过程调用装置、方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710451530.1A CN107301098B (zh) 2017-06-15 2017-06-15 一种基于Thrift协议的远程过程调用装置、方法及系统

Publications (2)

Publication Number Publication Date
CN107301098A true CN107301098A (zh) 2017-10-27
CN107301098B CN107301098B (zh) 2020-09-08

Family

ID=60134794

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710451530.1A Active CN107301098B (zh) 2017-06-15 2017-06-15 一种基于Thrift协议的远程过程调用装置、方法及系统

Country Status (1)

Country Link
CN (1) CN107301098B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107800707A (zh) * 2017-11-06 2018-03-13 北京奇艺世纪科技有限公司 扩展thrift协议方法、读取方法、装置以及电子设备
CN107832116A (zh) * 2017-11-13 2018-03-23 郑州云海信息技术有限公司 一种基于Grafana实现虚拟机实例监控的方法
CN108182120A (zh) * 2017-12-08 2018-06-19 广州视源电子科技股份有限公司 接口调用方法和系统、存储介质和计算机设备
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN109062574A (zh) * 2018-07-11 2018-12-21 武汉灯塔之光科技有限公司 一种可扩展的证券行情数据传输显示方法及系统
CN110083457A (zh) * 2018-01-26 2019-08-02 北京京东尚科信息技术有限公司 一种数据获取方法、装置以及数据分析方法、装置
CN110162344A (zh) * 2019-04-15 2019-08-23 深圳壹账通智能科技有限公司 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN110191141A (zh) * 2018-02-23 2019-08-30 阿里巴巴集团控股有限公司 服务调用信息处理方法、装置及计算机系统
CN110290212A (zh) * 2019-06-28 2019-09-27 浙江大搜车软件技术有限公司 服务调用记录方法、装置、计算机设备和存储介质
CN110377273A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种数据处理的方法、装置、介质和电子设备
CN110442345A (zh) * 2019-06-21 2019-11-12 华为技术有限公司 一种编译方法、运行方法及设备
CN110457144A (zh) * 2019-08-05 2019-11-15 北京字节跳动网络技术有限公司 一种实现前端应用的方法、装置、介质和设备
CN110944018A (zh) * 2019-12-27 2020-03-31 浪潮通用软件有限公司 一种基于注解和动态代理的rpc通信方法及设备、介质
CN111142860A (zh) * 2019-12-31 2020-05-12 广州酷狗计算机科技有限公司 用于实现接口调用的方法及装置
CN111405029A (zh) * 2020-03-12 2020-07-10 北京字节跳动网络技术有限公司 一种请求处理方法及装置
CN111427702A (zh) * 2020-03-12 2020-07-17 北京明略软件系统有限公司 一种人工智能ai系统及数据处理方法
CN111698205A (zh) * 2020-04-29 2020-09-22 中国平安财产保险股份有限公司 服务调用方法及相关设备
CN112367294A (zh) * 2020-10-13 2021-02-12 成都精灵云科技有限公司 适配边缘计算架构的多主机间的网络通信方法
CN112363707A (zh) * 2020-11-25 2021-02-12 国电南瑞科技股份有限公司 一种基于java反射技术的控制层通用调度方法
CN113626225A (zh) * 2021-10-11 2021-11-09 中航金网(北京)电子商务有限公司 程序调用方法、终端设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719902A (zh) * 2009-12-04 2010-06-02 深圳创维数字技术股份有限公司 一种远程过程调用方法和系统
CN103116520A (zh) * 2012-11-02 2013-05-22 深圳键桥通讯技术股份有限公司 基于tcp/ udp的远程过程调用rpc的方法
US20150074407A1 (en) * 2013-09-09 2015-03-12 Layer, Inc. Federated authentication of client computers in networked data communications services callable by applications
CN105516097A (zh) * 2015-11-30 2016-04-20 上海爱数信息技术股份有限公司 基于Thrift数据格式的混合架构消息系统及消息传输方法
CN106487805A (zh) * 2016-11-15 2017-03-08 乐视控股(北京)有限公司 一种远程过程调用跟踪方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719902A (zh) * 2009-12-04 2010-06-02 深圳创维数字技术股份有限公司 一种远程过程调用方法和系统
CN103116520A (zh) * 2012-11-02 2013-05-22 深圳键桥通讯技术股份有限公司 基于tcp/ udp的远程过程调用rpc的方法
US20150074407A1 (en) * 2013-09-09 2015-03-12 Layer, Inc. Federated authentication of client computers in networked data communications services callable by applications
CN105516097A (zh) * 2015-11-30 2016-04-20 上海爱数信息技术股份有限公司 基于Thrift数据格式的混合架构消息系统及消息传输方法
CN106487805A (zh) * 2016-11-15 2017-03-08 乐视控股(北京)有限公司 一种远程过程调用跟踪方法及装置

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107800707B (zh) * 2017-11-06 2020-07-03 北京奇艺世纪科技有限公司 扩展thrift协议读取方法、读取装置以及电子设备
CN107800707A (zh) * 2017-11-06 2018-03-13 北京奇艺世纪科技有限公司 扩展thrift协议方法、读取方法、装置以及电子设备
CN107832116A (zh) * 2017-11-13 2018-03-23 郑州云海信息技术有限公司 一种基于Grafana实现虚拟机实例监控的方法
CN108255615A (zh) * 2017-11-30 2018-07-06 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN108255615B (zh) * 2017-11-30 2022-03-01 平安科技(深圳)有限公司 跨语言调用方法、服务器及存储介质
CN108182120A (zh) * 2017-12-08 2018-06-19 广州视源电子科技股份有限公司 接口调用方法和系统、存储介质和计算机设备
CN108182120B (zh) * 2017-12-08 2020-11-24 广州视源电子科技股份有限公司 接口调用方法和系统、存储介质和计算机设备
CN110083457A (zh) * 2018-01-26 2019-08-02 北京京东尚科信息技术有限公司 一种数据获取方法、装置以及数据分析方法、装置
CN110191141A (zh) * 2018-02-23 2019-08-30 阿里巴巴集团控股有限公司 服务调用信息处理方法、装置及计算机系统
CN109062574A (zh) * 2018-07-11 2018-12-21 武汉灯塔之光科技有限公司 一种可扩展的证券行情数据传输显示方法及系统
CN109062574B (zh) * 2018-07-11 2022-02-18 武汉灯塔之光科技有限公司 一种可扩展的证券行情数据传输显示方法及系统
CN110162344A (zh) * 2019-04-15 2019-08-23 深圳壹账通智能科技有限公司 一种隔离限流的方法、装置、计算机设备及可读存储介质
CN110442345A (zh) * 2019-06-21 2019-11-12 华为技术有限公司 一种编译方法、运行方法及设备
CN110290212A (zh) * 2019-06-28 2019-09-27 浙江大搜车软件技术有限公司 服务调用记录方法、装置、计算机设备和存储介质
CN110377273A (zh) * 2019-07-01 2019-10-25 北京字节跳动网络技术有限公司 一种数据处理的方法、装置、介质和电子设备
CN110377273B (zh) * 2019-07-01 2023-07-28 北京字节跳动网络技术有限公司 一种数据处理的方法、装置、介质和电子设备
CN110457144A (zh) * 2019-08-05 2019-11-15 北京字节跳动网络技术有限公司 一种实现前端应用的方法、装置、介质和设备
CN110457144B (zh) * 2019-08-05 2021-12-07 北京字节跳动网络技术有限公司 一种实现前端应用的方法、装置、介质和设备
CN110944018A (zh) * 2019-12-27 2020-03-31 浪潮通用软件有限公司 一种基于注解和动态代理的rpc通信方法及设备、介质
CN111142860A (zh) * 2019-12-31 2020-05-12 广州酷狗计算机科技有限公司 用于实现接口调用的方法及装置
CN111142860B (zh) * 2019-12-31 2023-05-23 广州酷狗计算机科技有限公司 用于实现接口调用的方法及装置
CN111405029A (zh) * 2020-03-12 2020-07-10 北京字节跳动网络技术有限公司 一种请求处理方法及装置
CN111427702A (zh) * 2020-03-12 2020-07-17 北京明略软件系统有限公司 一种人工智能ai系统及数据处理方法
CN111698205A (zh) * 2020-04-29 2020-09-22 中国平安财产保险股份有限公司 服务调用方法及相关设备
CN111698205B (zh) * 2020-04-29 2023-09-26 中国平安财产保险股份有限公司 服务调用方法及相关设备
CN112367294A (zh) * 2020-10-13 2021-02-12 成都精灵云科技有限公司 适配边缘计算架构的多主机间的网络通信方法
CN112363707B (zh) * 2020-11-25 2022-09-09 国电南瑞科技股份有限公司 一种基于java反射技术的控制层通用调度方法
CN112363707A (zh) * 2020-11-25 2021-02-12 国电南瑞科技股份有限公司 一种基于java反射技术的控制层通用调度方法
CN113626225A (zh) * 2021-10-11 2021-11-09 中航金网(北京)电子商务有限公司 程序调用方法、终端设备及介质

Also Published As

Publication number Publication date
CN107301098B (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN107301098A (zh) 一种基于Thrift协议的远程过程调用装置、方法及系统
CN109308224B (zh) 跨平台数据通信、跨平台数据处理的方法、装置及系统
CN109246251A (zh) 一种微服务调用方法、装置、系统、设备及可读存储介质
CN104717179B (zh) 一种通信业务的处理方法及装置
CN107729139A (zh) 一种并发获取资源的方法和装置
EP2418825A1 (en) Method and system for generating open telecommunication service based on internet
CN110187902B (zh) 基于spring boot的项目改造方法、装置、设备及存储介质
CN107179951A (zh) 远程过程调用方法和装置
CN105915529B (zh) 一种报文生成方法及装置
CN105975261B (zh) 一种面向统一接口调用的运行时系统及运行方法
CN106302442A (zh) 一种基于Java语言的网络通讯数据包解析方法
CN105354240B (zh) 报表文件处理方法和装置
CN109634751A (zh) 一种利用electron框架实现应用层和底层通信的方法
CN110489323A (zh) 可视化的rpc api调试方法、装置、介质和设备
CN108683636A (zh) 一种充电桩通讯方法及系统
CN114416075A (zh) 业务处理方法及装置
CN108259942A (zh) 获取预览广告的方法、装置及系统
WO2006042314A2 (en) Methods and apparatus for message oriented invocation
CN109725887A (zh) 基于消息研发框架的数据交互方法、装置及终端设备
Dennert et al. Advanced concepts for flexible data integration in heterogeneous production environments
CN106610845A (zh) 信息管理方法、装置、服务器及系统
CN102495757A (zh) 一种适用于java远程调用对象传输的优化方法、装置
US6973659B2 (en) Mapping between remote procedure call system primitives and event driven execution environment system primitives
CN105991779B (zh) 一种物联网短距离通信的方法、装置及中间件
CN107592359A (zh) 一种基于rpc协议的服务端响应方法、装置及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant