CN110262912A - 一种过程调用gRPC的调用方法及装置 - Google Patents
一种过程调用gRPC的调用方法及装置 Download PDFInfo
- Publication number
- CN110262912A CN110262912A CN201910563454.2A CN201910563454A CN110262912A CN 110262912 A CN110262912 A CN 110262912A CN 201910563454 A CN201910563454 A CN 201910563454A CN 110262912 A CN110262912 A CN 110262912A
- Authority
- CN
- China
- Prior art keywords
- calling
- server
- grpc
- data
- client
- 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
- 238000000034 method Methods 0.000 title claims abstract description 190
- 230000008569 process Effects 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000018109 developmental process Effects 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Abstract
本申请提供一种过程调用gRPC的调用方法及装置,用于提高编程者的开发效率。包括:接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;接收所述编程者输入的调用方式;根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
Description
技术领域
本申请涉及计算机技术领域,也可以运用在金融科技(Fintech)领域,尤其涉及一种过程调用gRPC的调用方法及装置。
背景技术
在远程过程调用(Remote Procedure Call,RPC)框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此可以方便的创建一些分布式的应用服务。gRPC Java是gRPC官方使用Java的一个实现,一个典型的RPC交互过程如下:
客户端创建连接,然后在客户端创建存根类stub,接着在客户端执行逻辑,客户端等待服务端处理完请求;服务端接收到请求后接着处理请求,在服务端处理完毕后,则将结果返回至客户端;对应的客户端等待完成,接收服务端返回的结果,在接收到返回的结果后,客户端对接收到的返回结果进行处理,处理完成后,服务端与客户端的交互结束。
为了使用gRPC Java,编程者需要处理上述所有步骤中涉及的细节问题,而其中的一些细节,例如数据同步、连接建立等与编程者编写的核心逻辑是没有什么关系的,而这些繁琐的细节增加了编程者的开发时长。
发明内容
本申请实施例提供一种过程调用gRPC的调用方法及装置,用于简化gRPC的调用的过程,提高开发人员的发开效率。
第一方面,本申请提供了一种过程调用gRPC的调用方法,包括:
接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;
接收所述编程者输入的调用方式;
根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
在本申请实施例中,根据编程者输入的调用方式及与该调用方式对应的调用上下文类初始化调用模板,则可以通过调用模板中的调用函数实现gRPC的调用,相较于现有技术中的调用交互过程,简化了编程者的操作,从而能够提高开发效率。
在一个可能的设计中,
所述调用方式为第一调用方式或第二调用方式中的一种;
其中,所述第一调用方式是客户端向服务端传输数据的数据量大于所述服务端向所述客户端传输数据的数据量的方式;所述第二调用方式是所述服务端向所述客户端传输数据的数据量大于所述客户端向所述服务端传输数据的数据量的方式。
在本申请实施例中,是将现有技术中gRPC的四种调用方式归类为本申请中的第一调用方式和第二调用方式,从而能够简化gRPC调用过程,提高编程者的开发效率。
在一个可能的设计中,在所述调用方式是所述第一调用方式时,所述方法还包括:
向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
在本申请实施例中,第一调用方式中主要发数据的一方是客户端。而在gRPC-java中,流量控制主要是收数据的一方向发数据的一方提供接收方的当前状态,发数据的一方按照当前接收方的状态,进行流量控制。因此本申请实施例中,在第一调用方式下采用分段式处理,这样客户端向服务端发送的数据可以单独被处理,更符合gRPC-java的使用模式。
在一个可能的设计中,所述上下文信息包括:环境配置信息和逻辑类。
在一个可能的设计中,
所述环境配置信息包括但不限于:
同步线程数量;或
服务端的地址与端口;或
调用超时时间;或
调用gRPC的存根类stub函数;或
连接元信息;其中,所述连接元信息中是客户端向服务端发送的超文本传输协议HTTP请求的HTTP头部中包括的信息;
相应的,所述逻辑类包括但不限于:
所述编程者基于所述gRPC框架编写的代码中的类;或
根据所述第一调用方式和所述第二调用方式抽象出来的调用过程类;或
所述gRPC框架中的观察者类。
上述只是上下文信息的几种举例,在具体实现过程中还可以包括其它上下文信息,在此不做限制。
第二方面,本申请实施例还提供一种过程调用gRPC的调用装置,包括:
第一接收模块,用于接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;
第二接收模块,用于接收所述编程者输入的调用方式;
实现模块,用于根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
在一个可能的设计中,
所述调用方式为第一调用方式或第二调用方式中的一种;
其中,所述第一调用方式是客户端向服务端传输数据的数据量大于所述服务端向所述客户端传输数据的数据量的方式;所述第二调用方式是所述服务端向所述客户端传输数据的数据量大于所述客户端向所述服务端传输数据的数据量的方式。
在一个可能的设计中,若调用方式是所述第一调用方式,所述装置还包括:
第一发送模块,用于向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
第二发送模块,用于在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
第三发送模块,用于在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
在一个可能的设计中,所述上下文信息包括:环境配置信息和逻辑类。
在一个可能的设计中,
所述环境配置信息包括但不限于:
同步线程数量;或
服务端的地址与端口;或
调用超时时间;或
调用gRPC的存根类stub函数;或
连接元信息;其中,所述连接元信息中是客户端向服务端发送的超文本传输协议HTTP请求的HTTP头部中包括的信息;
相应的,所述逻辑类包括但不限于:
所述编程者基于所述gRPC框架编写的代码中的类;或
根据所述第一调用方式和所述第二调用方式抽象出来的调用过程类;或
所述RPC框架中的观察者类。
第三方面,本申请实施例还提供过程调用gRPC的调用装置,包括:
存储器,用于存储程序指令;
处理器,用于读取所述存储器中存储的程序指令,按照获得的程序执行上述过程调用gRPC的调用方法。
第四方面,提供一种计算机可读存储介质,包括计算机可读指令,当所述计算机读取并执行所述计算机可读指令时,使得计算机执行上述过程调用gRPC的调用方法。
附图说明
图1为本申请提供的一种应用场景;
图2为本申请提供的一种过程调用gRPC的调用方法的流程示意图;
图3为本申请提供的一种过程调用gRPC的调用装置的结构示意图;
图4为本申请提供的另一种过程调用gRPC的调用装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)远程过程调用(Remote Procedure Call,RPC)框架,其目标是让远程服务调用更加简单、透明,RPC框架负责屏蔽底层的传输方式、序列化方式和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。目前,业界主流的RPC框架,较为成熟的有谷歌google的gRPC、脸书(Facebook)的Thrift。
(2)类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、方法、属性和事件。
(3)接口(Interface),在java编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方法,从而来继承接口的抽象方法。
(4)本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。且在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
gRPC框架是一个高性能、开源和通用的RPC框架,面向服务端和客户端,基于超文本传输协议(Hyper Text Transfer Protocol,HTTP)/2设计。请参见图1,gRPC框架包括服务器端和多个客户端。在服务器端,服务器运行gRPC服务器来处理客户端调用。在客户端有一个stub,提供与服务器相同的方法。
在具体实现过程中,首先创建一个RPC服务,即服务端接收一个来自客户端的Hello Request消息,这个消息中包含了用户的姓名,然后返回一个打招呼的Hello Reply。在创建完成上述服务之后,则生成gRPC代码,用于启动一个服务端和一个客户端。服务端通过侦听指定的端口,来等待客户端的连接请求。在生成gRPC代码之后,则调用gRPC。
现有技术中,在调用gRPC的交互过程中,主要包括如下步骤:
1、客户端建立与服务端之间的连接,在该步骤中,是需要编程人员触发客户端,由客户端建立与服务端之间的连接;
2、客户端建立stub,在具体实现过程中,也是由编程人员在客户端建立stub;
3、客户端执行逻辑;
在该步骤中,不仅需要由编程人员触发客户端通过stub发送请求,还有RPC消息的准备,例如从队列中取出数据并计算出结果。其中,客户端向服务端发送的请求均被封装成HTTP2的流帧(stream Frame),通过第一步骤建立的连接进行交互。
4、客户端等待服务端处理完请求,在该步骤中需要由编程人员触发建立java中的latch,以维持客户端的生命周期,在建立java中的latch后,则等待数据同步。
5、服务端收到请求;
6、服务端处理请求;
7、在服务端处理完毕之后,则将结果返回;
在步骤5-步骤7中,在服务端接收到一个请求后,服务端会先调用onNext()方法。继续沿用上述举例,在接收到请求Hello Request消息时,需要解析接收到的消息,确定是要Hello Reply以及回复的姓名“小明”,这时需要编程人员添加“小明”,将“Hello小明”的应答消息返回到客户端。然后调用onComplete()方法,使得gRPC框架确保应答消息已经成功发到客户端,gRPC框架也会做一些连接断开的处理逻辑,而其中onNext()和onComplete()都是需要编程者触发的。
8、等待完成,客户端收到结果,在该步骤中,编程者就是静静等待服务端处理,返回结果;
9、客户端处理结果,在该步骤中,编程者需要对接收到的结果进行处理,例如在接收到结果后,可以直接退出客户端,也可能是利用接收到的结果进行下一步,或者需要保存接收到的结果等;
10、交互结束。
通过对现有技术中的gRPC的调用过程的描述可以看出,上述各个步骤的实现都需要编程者的参与,而其中涉及到的一些细节其实与编程者编写的核心逻辑关系不大,这些流程的处理对于编程者来说相对繁琐,会影响编程者的开发效率。
为此,本申请提供一种过程调用gRPC的调用方法,在本申请实施例中,根据编程者输入的调用方式及与该调用方式对应的调用上下文类初始化调用模板,则可以通过调用模板中的调用函数实现gRPC的调用,相较于现有技术中的调用交互过程,简化了编程者的操作,从而能够提高开发效率。
下面则结合附图介绍本申请实施例提供的技术方案,在下面的介绍过程中,以将本申请实施例提供的技术方案应用在图1所示的应用场景中为例。
请参见图2,为本申请一实施例提供的一种过程调用gRPC的调用方式,该方法的流程描述如下:
S201:接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息。
在本申请实施例中,继续沿用上述举例,在创建完一个服务,也就是此处编程者基于RPC框架编写的程序,以实现输出Hello Reply。然后编写gRPC代码,以实现客户端和服务端,在编写gRPC代码之后,则调用gRPC。
在本申请实施例中,上下文信息包括用于为实现gRPC调用而设置的信息,包括但不限于为实现gRPC调用而设置的环境配置信息和逻辑类。
1)环境配置信息包括但不限于同步线程数量、服务端的地址与端口、调用超时时间、调用RPC的存根类stub函数及连接元信息,其中,所述连接元信息中是客户端向服务端发送的超文本传输协议HTTP请求的HTTP头部中包括的信息,下面则逐项进行介绍。
(1)同步线程数量,若服务端要接收客户端的调用,则需要接收客户端发送的请求,也就需要接收客户端发送的连接请求,而在客户端连接比较多时,就会开辟较多线程,因此上下文信息中需要包括同步线程数量。
(2)服务端的地址与端口,客户端向服务端发送请求,就需要知道要向哪个服务端发送请求,因此上下文信息中需要包括服务端的地址与端口。
(3)调用超时时间,gRPC允许客户端指定在RPC服务调用终止之前愿意等待RPC完成的时间,否则显示错误超时时间Deadline_Exceeded。在服务端,可以查询特定的RPC是否超时,或是还剩下多少时间可以用来完成PRC调用。而具体如何指定期限或超时时间因编程语言而异,例如并非所有编程语言都有默认的最后期限,某些语言应用程序编程接口(Application Programming Ineterface,API)的工作时间是截止时间(固定时间点),而某些语言API的工作范围是超时(一段时间内)。因此上下文信息中需要包括调用超时时间。
(4)stub函数,由于客户端向服务端发送请求,是要通过stub调用的,因此在上下文信息中需要包括stub函数。
(5)连接元信息,gRPC是基于http2的RPC框架,http协议可以在请求中的header部分带上一些信息。这里的元信息其实也是header的信息。
上述(1)-(5)只是举例示意,在具体实现过程中,上下文信息中还包括其它信息,例如是否需要支持安全传输层协议(Transport Layer Security,TLS)安全连接等。
2)逻辑类,包括但不限于:编程者基于gRPC框架编写的代码中的类;根据所述第一调用方式和所述第二调用方式抽象出来的类;所述gRPC框架中的观察者类,例如onNext()、onError()、onComplete()等。在本申请实施例中,若继续沿用上述举例,onNext()所在的类就是一个观察者类。其中,抽象出来的观察者类可以包含调用过程中涉及到一些细节,例如数据同步、异常处理,流量控制等。
(1)继续沿用上述举例,代码中包含的类可以是预先抽象好的,从gRPC框架中继承的观察者类;代码中包含的类还可以是业务逻辑类,继续沿用上述举例,在“Hell小明”中,生成“小明”这个名字的类。在具体实现过程中,例如在一个需要登录的系统中,可能一个叫“小红”的用户登录了,这个业务逻辑类就会把小红的名字从数据库表中取出来,然后进行HelloRequest的调用;
(2)根据第一调用方式和第二调用方式抽象出来的类
在介绍根据第一调用方式和第二调用方式抽象出来的类之前,首先需要先介绍第一调用方式和第二调用方式。而在介绍第一调用方式和第二调用方式之前,为便于理解,先介绍下现有技术中的四种gRPC的调用方式:
A一元调用(Unary call),客户端发送单个请求,服务端返回单个响应。适用于单个单全球广域网(World Wide Web,Web)调用的场景;
B客户端流(Client streaming),客户端向服务端发送请求流而不是单个请求,服务端返回单个响应。适用于客户端向服务端进行数据上传的场景;
C服务端流(Server streaming),服务端在获取客户端发送的请求后,向客户端返回响应流。适用于客户端向服务端请求数据下载的场景;
D双向流(Bidirectional Streaming),客户端和服务端可以按任何顺序进行独立的读写数据流。服务端可以在收到所有请求后再返回响应信息,或者收到一个请求返回一个响应信息,或者收到部分请求后再返回部分响应信息。适用于即时通信(InstantMessaging,IM)场景。
在本申请实施例中,为简化gRPC调用方式,将现有技术中的四种调用方式归类为本申请中的第一调用方式和第二调用方式。其中,第一调用方式主要是适用于客户端向服务端传输数据的数据量大于服务端向客户端传输数据的数据量的场景,例如客户端向服务端进行数据上传的场景和IM软件聊天的场景,第二调用方式主要是适用于服务端向客户端传输数据数据量大于客户端向服务端传输数据的数据量的场景,例如单个Web调用的场景和客户端向服务端请求数据下载的场景。在本申请实施例中,可以将第一调用方式用caller streaming表示,将第二调用方式用callee streaming表示,此处对第一调用方式和第二调用方式的具体名称不做限制,只要是能够表达上述定义即可。
在具体实现过程中,若要使用第一调用方式和第二调用方式,是需要将第一调用方式对应的逻辑抽象出第一接口,将第二调用方式对应的逻辑抽象出第二接口,然后根据抽象出的第一接口和第二接口抽象出相应的类,以继承第一接口和第二接口对应的方法。
在介绍完上下文信息中包括的具体内容之后,则结合具体示例介绍,客户端如何接收编程者输入上下文信息的。在具体实现过程中,客户端接收编程者打开用于输入上下文信息的模板的操作,客户端响应该操作,在客户端的显示界面显示相应的模板,具体可以参见下文,客户端接收编程者输入上下文信息,在检测到编程者进行的保存操作后,则响应保存操作,保存编程者输入的上下文信息,建立调用上下文类。
其中,在显示界面显示的模板具体如下,其中,Context.后面的内容就是需要编程者输入的上下文信息。GrpcAsyncClientContext就可以用于表征根据编程者输入的上下文信息抽象出来的类,KV表征该类是一个支持范型的类。
在本申请实施例中,在执行完步骤S201之后,则执行步骤S202:接收所述编程者输入的调用方式;其中,此处的调用方式可以是第一调用方式和第二调用方式中的一种,而对于第一调用方式和第二调用方式在上述对上下文信息的描述中介绍,在此不再赘述。
在执行完步骤S202之后,则执行步骤S203:根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
在本申请实施例中,在接收编程者输入的调用方式后,利用与该调用方式对应调用上下文初始化调用模板,通过调用调用模板中的模板函数,实现gRPC的调用。例如调用过程中的客户端与服务端的建立连接与stub的创建等等。对于调用模板的模板函数,可以参见上述举例中的Template.calleeStreamingRpc(operand)。
在执行完步骤S203之后,则执行步骤S204:调用gRPC。
在本申请实施例中,根据编程者输入的调用方式及与该调用方式对应的调用上下文类初始化调用模板,则可以通过调用模板中的调用函数实现gRPC的调用,相较于现有技术中的调用交互过程,简化了编程者的操作,从而能够提高开发效率。
在本申请实施例中,若所调用方式是所述第一调用方式,所述方法还包括:
向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
在本申请实施例中,在调用方式是第一调用方式时,也就是在数据上传的场景。在客户端需要向服务端上传数据时,首先会向服务端发送请求,以请求向服务端传输数据,在接收到服务端反馈的响应消息时,则以流的形式向服务端传输数据,在数据传输完毕后,则向服务端发送结束请求,以请求服务端结束本次调用。
在本申请实施例中,第一调用方式中,主要发数据的一方是客户端。而在RPC-java中,流量控制主要是收数据的一方向发数据的一方提供接收方的当前状态,发数据的一方按照当前接收方的状态,进行流量控制。因此本申请实施例中,在第一调用方式下采用分段式处理,这样客户端向服务端发送的数据可以单独被处理,更符合RPC-java的使用模式。
在本申请实施例中,在第二调用方式中,后续处理流程可以分段,也可以不分段。
请参见图3,基于同一发明构思,本申请实施例提供一种过程调用gRPC的调用装置300,包括:
第一接收模块301,用于接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;
第二接收模块302,用于接收所述编程者输入的调用方式;
实现模块303,用于根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
在一个可能的设计中,
所述调用方式为第一调用方式或第二调用方式中的一种;
其中,所述第一调用方式是客户端向服务端传输数据的数据量大于所述服务端向所述客户端传输数据的数据量的方式;所述第二调用方式是所述服务端向所述客户端传输数据的数据量大于所述客户端向所述服务端传输数据的数据量的方式。
在一个可能的设计中,若调用方式是所述第一调用方式,所述装置还包括:
第一发送模块304,用于向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
第二发送模块305,用于在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
第三发送模块306,用于在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
在一个可能的设计中,所述上下文信息包括:环境配置信息和逻辑类。
在一个可能的设计中,
所述环境配置信息包括但不限于:
同步线程数量;或
服务端的地址与端口;或
调用超时时间;或
调用gRPC的存根类stub函数;或
连接元信息;其中,所述连接元信息中是客户端向服务端发送的超文本传输协议HTTP请求的HTTP头部中包括的信息;
相应的,所述逻辑类包括但不限于:
所述编程者基于所述gRPC框架编写的代码中的类;或
根据所述第一调用方式和所述第二调用方式抽象出来的调用过程类;或
所述RPC框架中的观察者类。
请参见图4,本申请实施例还提供过程调用gRPC的调用装置400,包括:
存储器401,用于存储程序指令;
处理器402,用于读取所述存储器中存储的程序指令,按照获得的程序执行上述过程调用gRPC的调用方法。
在本申请实施例中,处理器402可以是中央处理器(central processing unit,CPU),或特定应用集成电路(application-specific integrated circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是基带芯片,等等。存储器的数量可以是一个或多个,存储器可以是只读存储器(read-only memory,ROM)、随机存取存储器(randomaccess memory,RAM)或磁盘存储器,等等。
本申请还提供一种计算机可读存储介质,包括计算机可读指令,当所述计算机读取并执行所述计算机可读指令时,使得计算机执行上述过程调用gRPC的调用方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种过程调用gRPC的调用方法,其特征在于,包括:
接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;
接收所述编程者输入的调用方式;
根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
2.根据权利要求1所述的方法,其特征在于,
所述调用方式为第一调用方式或第二调用方式中的一种;
其中,所述第一调用方式是客户端向服务端传输数据的数据量大于所述服务端向所述客户端传输数据的数据量的方式;所述第二调用方式是所述服务端向所述客户端传输数据的数据量大于所述客户端向所述服务端传输数据的数据量的方式。
3.根据权利要求2所述的方法,其特征在于,若调用方式是所述第一调用方式,所述方法还包括:
向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
4.根据权利要求1所述的方法,其特征在于,所述上下文信息包括:环境配置信息和逻辑类。
5.根据权利要求4所述的方法,其特征在于,
所述环境配置信息包括但不限于:
同步线程数量;或
服务端的地址与端口;或
调用超时时间;或
调用gRPC的存根类stub函数;或
连接元信息;其中,所述连接元信息中是客户端向服务端发送的超文本传输协议HTTP请求的HTTP头部中包括的信息;
相应的,所述逻辑类包括但不限于:
所述编程者基于所述gRPC框架编写的代码中的类;或
根据所述第一调用方式和所述第二调用方式抽象出来的调用过程类;或
所述RPC框架中的观察者类。
6.一种过程调用gRPC的调用装置,其特征在于,包括:
第一接收模块,用于接收编程者输入的上下文信息,建立调用上下文类;其中,所述上下文信息为为实现gRPC的调用而设置的信息;
第二接收模块,用于接收所述编程者输入的调用方式;
实现模块,用于根据与所述调用方式对应的调用上下文类初始化调用模板,通过所述调用模板中包括的调用函数实现gRPC的调用。
7.根据权利要求6所述的装置,其特征在于,
所述调用方式为第一调用方式或第二调用方式中的一种;
其中,所述第一调用方式是客户端向服务端传输数据的数据量大于所述服务端向所述客户端传输数据的数据量的方式;所述第二调用方式是所述服务端向所述客户端传输数据的数据量大于所述客户端向所述服务端传输数据的数据量的方式。
8.根据权利要求7所述的装置,其特征在于,若调用方式是所述第一调用方式,所述装置还包括:
第一发送模块,用于向所述服务端发送调用请求;其中,所述调用请求用于请求向所述服务端上传数据;
第二发送模块,用于在接收到所述服务端发送的响应消息时,以流的方式向所述服务端发送数据;
第三发送模块,用于在上传数据完毕后,向所述服务端发送结束请求;其中,所述结束请求用于请求所述服务端结束调用。
9.一种过程调用gRPC的调用装置,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910563454.2A CN110262912B (zh) | 2019-06-26 | 2019-06-26 | 一种过程调用gRPC的调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910563454.2A CN110262912B (zh) | 2019-06-26 | 2019-06-26 | 一种过程调用gRPC的调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110262912A true CN110262912A (zh) | 2019-09-20 |
CN110262912B CN110262912B (zh) | 2023-12-22 |
Family
ID=67921948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910563454.2A Active CN110262912B (zh) | 2019-06-26 | 2019-06-26 | 一种过程调用gRPC的调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110262912B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515319A (zh) * | 2021-04-20 | 2021-10-19 | 北京科东电力控制系统有限责任公司 | 一种客户端通过grpc动态调用服务端的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064503A1 (en) * | 2002-02-22 | 2004-04-01 | Bea Systems, Inc. | System and method for web services Java API-based invocation |
US20070016897A1 (en) * | 2005-07-12 | 2007-01-18 | International Business Machines Corporation | Methods, apparatus and computer programs for optimized parsing and service invocation |
US20090031287A1 (en) * | 2007-07-23 | 2009-01-29 | Bin Ni | Container-less jsp template |
US8555297B1 (en) * | 2008-09-29 | 2013-10-08 | Emc Corporation | Techniques for performing a remote procedure call using remote procedure call configuration information |
CN104363285A (zh) * | 2014-11-18 | 2015-02-18 | 东方网力科技股份有限公司 | 一种网络通信程序生成方法及装置 |
-
2019
- 2019-06-26 CN CN201910563454.2A patent/CN110262912B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064503A1 (en) * | 2002-02-22 | 2004-04-01 | Bea Systems, Inc. | System and method for web services Java API-based invocation |
US20070016897A1 (en) * | 2005-07-12 | 2007-01-18 | International Business Machines Corporation | Methods, apparatus and computer programs for optimized parsing and service invocation |
US20090031287A1 (en) * | 2007-07-23 | 2009-01-29 | Bin Ni | Container-less jsp template |
US8555297B1 (en) * | 2008-09-29 | 2013-10-08 | Emc Corporation | Techniques for performing a remote procedure call using remote procedure call configuration information |
CN104363285A (zh) * | 2014-11-18 | 2015-02-18 | 东方网力科技股份有限公司 | 一种网络通信程序生成方法及装置 |
Non-Patent Citations (1)
Title |
---|
张小晶: "一种基于原始接口编译的远程调用部署方法", 《软件导刊》, vol. 8, no. 6, pages 122 - 124 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515319A (zh) * | 2021-04-20 | 2021-10-19 | 北京科东电力控制系统有限责任公司 | 一种客户端通过grpc动态调用服务端的方法 |
CN113515319B (zh) * | 2021-04-20 | 2023-08-08 | 北京科东电力控制系统有限责任公司 | 一种客户端通过grpc动态调用服务端的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110262912B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016165615A1 (zh) | 一种即时视频中的表情特效动画加载方法和电子设备 | |
KR102220127B1 (ko) | 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치 | |
US8856658B2 (en) | Representing user interactions as a synchronous action in a business process flow | |
US7995064B2 (en) | Computer-implemented chat system having dual channel communications and self-defining product structures | |
CN108536468A (zh) | 配置文件获取方法、提供方法、装置及设备 | |
CN111756917B (zh) | 信息交互方法、电子设备和计算机可读介质 | |
US8516451B2 (en) | System and method for creating virtual callback objects | |
TWI313417B (en) | Dynamic wizard interface system and method | |
CN108306917A (zh) | 数据处理方法和装置、微服务模块的注册方法及装置 | |
US11504636B2 (en) | Games in chat | |
US11738277B2 (en) | Game testing system | |
US11290404B2 (en) | Messaging and gaming applications communication platform | |
CN110221901A (zh) | 容器资源创建方法、装置、设备及计算机可读存储介质 | |
CN108282527A (zh) | 生成服务实例的分布式系统和方法 | |
WO2020143159A1 (zh) | 一种用户界面的处理方法和装置 | |
CN109788029A (zh) | 微服务的灰度调用方法、装置、终端及可读存储介质 | |
CN110728558A (zh) | 虚拟物品包发送方法、装置、设备和存储介质 | |
US20210041997A1 (en) | Message thread prioritization interface | |
CN107133160B (zh) | 服务器和客户端 | |
CN110262912A (zh) | 一种过程调用gRPC的调用方法及装置 | |
US11169861B2 (en) | Application server programming language cloud functions | |
CN110175030A (zh) | 一种api服务网关处理方法 | |
JP2023055615A (ja) | 自然言語処理を使用するゲーム・ログからのイベント情報抽出 | |
US20210043214A1 (en) | Programmable Voice Extension Framework | |
CN114513512A (zh) | 界面渲染的方法及装置 |
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 |