CN114090280A - 基于远程过程调用协议的交互方法及装置 - Google Patents

基于远程过程调用协议的交互方法及装置 Download PDF

Info

Publication number
CN114090280A
CN114090280A CN202111187032.3A CN202111187032A CN114090280A CN 114090280 A CN114090280 A CN 114090280A CN 202111187032 A CN202111187032 A CN 202111187032A CN 114090280 A CN114090280 A CN 114090280A
Authority
CN
China
Prior art keywords
target
client
server
connection
tcp
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.)
Pending
Application number
CN202111187032.3A
Other languages
English (en)
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.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co 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 Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN202111187032.3A priority Critical patent/CN114090280A/zh
Publication of CN114090280A publication Critical patent/CN114090280A/zh
Pending legal-status Critical Current

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种基于远程过程调用协议的交互方法及装置,涉及通信领域,以解决现有技术中远程过程调用框架的性能不高的技术问题。所述方法包括:在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。

Description

基于远程过程调用协议的交互方法及装置
技术领域
本申请涉及互联网领域,尤其涉及一种基于远程过程调用协议的交互方法及装置。
背景技术
在信息飞速发展的时代,互联网已经成为了人们日常生活中密切相关的新产物。现在大多数服务都需要依赖外部服务来实现,为了降低调用外部服务的成本,提升调用外部服务的稳定性,远程过程调用(Remote Procedure Call,RPC)框架应运而生,通过RPC框架可以实现远程服务调用。RPC是一种广泛使用的分布式应用程序处理方法,一个应用程序使用RPC框架来远程调用一个位于不同地址空间里的服务,从效果上看和调用本地服务相同。
目前常用的gRPC是谷歌开发的高性能、通用的开源RPC框架,gRPC是基于超文本传输协议第2版(Hyper Text Transfer Protocol 2.0,HTTP/2)的标准而设计的,支持多种开发语言。
但是,gRPC使用的HTTP/2协议的性能不高。
发明内容
本申请实施例提供一种基于远程过程调用协议的交互方法及装置,以解决现有技术中远程过程调用框架的性能不高的问题。
第一方面,本申请提供了一种基于远程过程调用协议的交互方法,所述方法包括:
在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
第二方面,本申请提供了一种基于远程过程调用协议的交互装置,所述装置包括:
处理模块,用于在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
发送模块,用于利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
第三方面,本申请提供了一种客户端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现第一方面的方法的步骤。
第四方面,本申请提供了一种基于远程过程调用协议的交互方法,所述方法包括:
监听目标TCP端口,获取服务端的目标地址;
将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
第五方面,本申请提供了一种基于远程过程调用协议的交互装置,所述装置包括:
获取模块,用于监听目标TCP端口,获取服务端的目标地址;
注册模块,用于将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
第六方面,本申请提供了一种服务端,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现第四方面的方法的步骤。
本申请实施例提供的基于远程过程调用协议的交互方法和装置,在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种基于远程过程调用协议的交互方法的流程图;
图2是本申请实施例提供的一种远程过程调用协议的结构示意图;
图3是本申请实施例提供的一种基于远程过程调用协议的交互方法的流程图;
图4是本申请实施例提供的一种基于远程过程调用协议的交互方法的流程图;
图5是本申请实施例提供的一种基于远程过程调用协议的交互装置的结构框图;
图6是本申请实施例提供的一种客户端的结构框图;
图7是本申请实施例提供的一种基于远程过程调用协议的交互装置的结构框图;
图8是本申请实施例提供的一种服务端的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供的一种基于远程过程调用协议的交互方法,可应用于客户端和服务端。
其中,所述远程过程调用(Remote Procedure Call,RPC)是分布式***中常见的一种通信方法,RPC允许调用另一个地址(通常指网络上的另一台机器)的过程或者函数等。
RPC本身可以是客户端-服务端(Client-Server,C/S)模型,也可以是一种请求-响应即request-response协议。类似的协议最常见如:超文本传输协议(Hyper TextTransfer Protocol,HTTP)是一个简单的请求-响应协议,HTTP通常运行在传输控制协议之上。它指定了客户端可能发送给服务端什么样的消息以及得到什么样的响应。
其中,C/S模型也叫C/S结构或C/S架构,C/S结构体系是一种软件***。网络上软件***大致可以分为浏览器-服务端(Browser-Server,B/S)和C/S结构的。C/S结构通常采取两层结构:服务端负责数据的管理,客户端负责完成与用户的交互任务。客户端通过局域网与服务端相连,接受用户的请求,并通过网络向服务端提出请求,对数据库进行操作。服务端接受客户端的请求,将数据提交给客户端,客户端将数据进行计算并将结果呈现给用户。服务端还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户端同时访问服务端,这就对服务端的硬件处理数据能力提出了很高的要求。C/S结构的主要特点是交互性强、具有安全的存取模式、响应速度快、利于处理大量数据。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本申请实施例提供的一种基于远程过程调用协议的交互方法的流程图。参照图1,本申请实施例提供的基于远程过程调用协议的交互方法可由客户端来执行,并且可以包括:
步骤110,在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
其中,所述传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信***之上进行操作。
可以理解的是,TCP在具体传输数据之前需要建立连接。这里的连接并不是物理连接,物理连接基于底层的协议已经建立完成,而TCP建立连接也是要假设底层连接已经成功。TCP的连接其实是一个虚拟的、逻辑的连接。简而言之,就是客户端和服务端分别记录了各自接受到的数据的序号,并且将自身设置为某种状态。在TCP协议中,连接的建立通常称为3次握手,从字面的概念可以看出,连接的建立需要经过3次确认的过程。
在本申请实施例中,客户端与目标服务端之间的TCP连接可以指在客户端的第一地址与目标服务端的第二地址之间建立TCP连接。其中,所述客户端的第一地址可以为所述客户端启动的一个临时TCP端口而得到的地址,当所述客户端与所述服务端的TCP连接断开时,所述客户端的临时TCP端口也会相应地关闭,所述客户端是为了与服务端建立连接才会启动一个临时端口。所述目标服务端的第二地址可以为所述目标服务端本地监听TCP端口而得到的地址。
在本申请的实施例中,为了避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,可以预先在连接池中建立客户端与多个服务端之间的TCP连接。在连接池中建立客户端与多个服务端之间的TCP连接之后,客户端与服务端之间无需再次新建连接,而是可以从连接池中获取已建立的TCP连接,并可以利用获取的TCP连接在客户端与服务端之间传输数据。
其中,所述连接池中已预先建立的多条TCP连接可以为所述客户端的地址分别与多个服务端的地址之间的TCP连接。例如,某个数据库中存储有N个服务端的地址,可以将所述客户端的地址分别与所述N个服务端的地址对应建立N条TCP连接,所述N条TCP连接可以存储在所述连接池中。同时,在本申请实施例中,一个服务端可以对应客户端所需的一项服务。
步骤120,利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
可以理解的是,在选定客户端与目标服务端之间的目标TCP连接之后,所述客户端可以向所述目标服务端发送请求,所述请求中携带所述目标数据,所述目标服务端可以向所述客户端返回响应。也就是说,所述客户端与所述目标服务端之间可以进行数据交互。
本申请实施例提供的一种基于远程过程调用协议的交互方法,在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
需了解的是,在本申请实施例中,由于TCP连接既可以支持多语言调用,也可以支持多种编码方式,还可以支持服务发现,故而在诸如以上列举的这些方面均可以提高远程过程调用的性能。
可选地,在本申请的一个实施例中,在步骤110之前,所述方法还可以包括:从用于服务发现的指定数据库中获取多个目标地址,其中,所述多个目标地址是基于多个服务端的TCP端口而得到的地址;基于获取的所述多个目标地址,在所述连接池中建立所述多条TCP连接。
为了便于理解,在此举例说明。例如,服务端B、服务端C和服务端D预先在指定数据库X中注册有各自的地址b、地址c和地址d,客户端A可以从指定数据库X中获取地址b、地址c和地址d。此时,客户端A可以在连接池中根据自身的地址a分别与地址b、地址c和地址d建立3条TCP连接,即地址a-b、地址a-c和地址a-d。
如此,可以从用于服务发现的指定数据库获取多个目标地址,并在连接池中建立多条TCP连接,从而可以提高服务端的目标地址的获取效率,进而提高建立TCP连接的效率。
其中,所述服务发现可以是指使用一个注册中心例如数据库来记录分布式***中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务。
所述指定数据库可以为etcd或zookeeper等。其中,etcd是使用Go语言开发的一个开源的、高可用的分布式存储***,可以用于配置共享和服务的注册和发现;Go语言(又称Golang)是谷歌开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。zookeeper是一个分布式的、开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的***提供给用户。
可以理解的是,所述多个目标地址可以为多个服务端本地监听TCP端口而得到的地址。服务端在得到本地监听的目标地址之后,可以将目标地址注册到如etcd或zookeeper等的指定数据库中,用于后续客户端进行服务发现。
在本申请的实施例中,所述服务端本地监听的端口可以为TCP端口,也可以为用户数据报协议(User Datagram Protocol,UDP)、QUIC(Quick UDP Internet Connection)等端口,可以根据实际情况进行选择,在此不做限定。
需注意的是,所述服务端监听的端口与所述客户端启动的一个临时端口需要采用相同的通信协议。例如,所述服务端监听的端口为TCP端口时,所述客户端启动的一个临时端口也为TCP端口;所述服务端监听的端口为UDP端口时,所述客户端启动的一个临时端口也为UDP端口,等等。
其中,网络协议集支持一个无连接的传输协议,该协议可以称为UDP。UDP为应用程序提供了一种无需建立连接就可以发送封装的网络互连协议(Internet Protocol,IP)数据包的方法。网络的传输层有两个主要协议,互为补充。无连接的是UDP,只能实现给应用程序发送数据包的功能以及允许应用程序在所需的层次上架构自己的协议;面向连接的是TCP,TCP协议可以可靠地实现传输层通信。QUIC是谷歌制定的一种基于UDP的低时延的互联网传输层协议。
可选地,在本申请的一个实施例中,如图2所示,所述远程过程调用RPC协议可以包括如下部分:头部、服务路径、服务方法、元数据和实际数据;其中,所述头部可以包括:编码方式,所述目标数据的编码方式与所述头部中定义的编码方式相匹配。如此,可以通过预先定义RCP协议来确定远程过程调用中所需用到的编码方式等。
可以理解的是,RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。具体地,RPC协议可以包含五部分:头部(header)、服务路径(path)、服务方法(method)、元数据(meta)以及实际数据(payload)。所述编码方式(Serialize)可以占用所述头部的第五个字节,用于定义编码方式,主要可以有protobuf、msgpack、json等方式。
其中,protobuf(Protocol Buffers)是谷歌公司开发的一种数据描述语言,类似于可扩展标记语言(Extensible Markup Language,XML)能够将结构化数据序列化,可用于数据存储、通信协议等方面。msgpack可以将数据打包成二进制的数据,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式也保证不会因为字符化带来额外存储空间的增加,所以在很大程度上减少了传输数据的大小。举例而言,如果说把json数据的大小比作西瓜大小,那么protobuf就是苹果大小,msgpack则是红豆大小。json对象标记(Java Script Object Notation,JSON)可以是一种轻量级的数据交换格式,json的一个子集可以采用完全独立于编程语言的文本格式来存储和表示数据。一般json编码的数据很少落地,数据都是通过网络传输。传输的时候,要考虑压缩它。本质上来说json就是个文本,就是个字符串,应用范围十分广泛。
在本申请的一个实施例中,所述头部(header)还可以包括:版本号(Version)、消息类型(Message Type)、心跳(Heartbeat)、压缩方式(Compress)、消息状态(Status)以及消息序号(Seq)。
其中,如图2所示,版本号(Version)可以占用所述头部的第一个字节,用于定义RPC协议的版本号。消息类型(Message Type)可以分为请求(request)和响应(response),可以占用所述头部的第二个字节,用于定义消息类型。心跳(Heartbeat)可以占用所述头部的第三个字节,用于定义判断消息是否为心跳包。心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。压缩方式(Compress)可以占用所述头部的第四个字节,用于定义压缩方式,主要可以为Gzip、Snappy或不压缩等方式。Gzip是若干种文件压缩程序的简称;Snappy是一个C++的用来压缩和解压缩的开发包,Snappy的目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。消息状态(Status)可以占用所述头部的第六个字节,用于定义消息状态,可以根据Status判断消息为常规消息还是错误消息。消息序号(Seq)可以占用所述头部的第7-14字节,用于定义消息序号。
如图2所示,所述服务路径(path)的长度可以等于所述头部(header)存储4个字节的长度,正文可以存储RPC服务的路径。所述服务方法(method)的长度可以等于所述头部(header)存储4个字节的长度,正文可以存储服务的方法名称,即函数名。所述元数据(meta)的长度可以等于所述头部(header)存储4个字节的长度,正文可以存储一些元数据;所述元数据又称中介数据、中继数据,可以为描述数据的数据(data about data),主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。所述实际数据(payload)的长度也可以等于所述头部(header)存储4个字节的长度,实际数据的正文可以存储消息的正文。
可选地,在本申请的一个实施例中,所述多条TCP连接为所述客户端与多个服务端之间的多条TCP连接,所述方法还可以包括:向所述多条TCP连接对应的多个服务端发送心跳包,所述心跳包用于确定所述客户端与所述多个服务端之间的连接是否中断;在所述客户端与所述多个服务端中的一个指定服务端的连接中断的情况下,从所述连接池中删除所述指定服务端对应的TCP连接。
为了便于理解,在此举例说明:
例如,客户端A可以每隔单位时间例如30秒向服务端B发送一个心跳包,服务端B可以使用定时器设定一固定时间,例如2分钟,在接收到心跳包的时候,重置定时器。若2分钟后服务端B的定时器没有重置,即服务端B没有接收到客户端A的心跳包,则确定客户端A与服务端B之间的连接中断;若2分钟后服务端B的定时器进行重置,即服务端B接收到客户端A的心跳包,则确定客户端A与服务端B之间的连接没有中断。在本申请实施例中,服务端可以将连接是否中断的结果反馈给客户端。
如此,可以通过心跳包来确定连接池中的多条TCP连接是否中断,从而确定连接池中TCP连接的状态,并在某一TCP连接中断的情况下,从连接池中删除这一TCP连接,避免无效的TCP连接占用连接池的资源。
在本申请实施例中,可以利用所述RPC协议的头部中定义的心跳(Heartbeat)来判断客户端与服务端之间传递的消息是否为心跳包。
可选地,在本申请的一个实施例中,在步骤110中所述从连接池中选取一条已预先建立的目标TCP连接,可以包括:基于负载均衡算法,从连接池中选取一条已预先建立的目标TCP连接。如此,可以通过负载均衡算法,提高选取目标TCP连接的效率,从而提高服务端的响应速度。
其中,所述负载均衡可以建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡的意思就是分摊到多个操作单元上进行执行,例如:万维网(WorldWide Web,Web)服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
需了解的是,所述负载均衡算法可以为轮询法、随机法、源地址哈希法、加权轮询法、加权随机法以及最小连接数法等等。在本申请的实施例中,所述负载均衡算法可以根据实际情况进行选择,在此不做限定。举例而言,轮询法,就是将用户的请求轮流分配给服务端,就像是挨个数数,轮流分配。这种算法比较简单,具有绝对均衡的优点,但是也正是因为绝对均衡所以它必须付出很大的代价。例如,它无法保证分配任务的合理性,无法根据服务端承受能力来分配任务。
图3是本申请实施例提供的一种基于远程过程调用协议的交互方法的流程图。参照图3,本申请实施例提供的基于远程过程调用协议的交互方法可由服务端来执行,并且可以包括:
步骤310,监听目标TCP端口,获取服务端的目标地址;
在本申请的实施例中,所述目标地址可以为所述服务端本地监听TCP端口而得到的地址。所述服务端本地监听的端口可以为TCP端口,也可以为UDP、QUIC等端口,可以根据实际情况进行选择,在此不做限定。
需注意的是,所述服务端监听的端口与所述客户端启动的一个临时端口需要采用相同的通信协议。例如,所述服务端监听的端口为TCP端口时,所述客户端启动的一个临时端口也为TCP端口;所述服务端监听的端口为UDP端口时,所述客户端启动的一个临时端口也为UDP端口,等等。
步骤320,将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
可以理解的是,多个服务端在得到多个本地监听的目标地址之后,可以将多个目标地址分别注册到如etcd或zookeeper等的指定数据库中,用于后续客户端进行服务发现。
本申请实施例提供的一种基于远程过程调用协议的交互方法,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,可以通过预先将服务端的地址注册到用于服务发现的指定数据库中以及在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
在本申请的一个实施例中,所述方法还可以包括:接收客户端通过TCP连接发送的心跳包,所述心跳包用于确定所述客户端与所述服务端之间的连接是否中断,所述TCP连接为所述客户端基于所述目标地址与所述服务端之间建立的连接。如此,可以通过心跳包来确定连接池中的多条TCP连接是否中断,从而保证连接池中TCP连接的状态。
可选地,在本申请的一个实施例中,所述服务端可以创建一个无限循环,在所述服务端未接收到连接请求的情况下,该无限循环可以堵塞。也就是说,当服务端没有接收到客户端的连接请求时,无限循环就会循环阻塞,直至等到服务端接收到下一个连接请求即可继续循环。如此,服务端可以通过这个无限循环来确认是否接收到客户端的连接请求,从而确定服务端与客户端之间的连接状态。
参照图2,在本申请的实施例中,所述远程过程调用协议可以包括如下部分:头部、服务路径、服务方法、元数据和实际数据;其中,所述头部可以包括:版本号、消息类型、心跳、压缩方式、编码方式、消息状态以及消息序号。如此,可以通过预先定义RCP协议来确定远程过程调用中所需用到的编码方式等。
在本申请的一个实施例中,所述方法还可以包括:接收所述客户端传输的目标数据,所述目标数据可以为所述客户端基于所述远程过程调用协议编码得到的数据;基于所述远程过程调用协议,对接收到的所述客户端传输的所述目标数据进行解析,得到函数名;在所述远程过程调用协议的服务方法中找到与所述函数名相匹配的目标函数;执行所述目标函数,得到目标结果;将所述目标结果按照所述远程过程调用协议中定义的编码方式进行编码,得到携带所述目标结果的响应消息;向所述客户端返回所述响应消息。如此,可以通过反射的方式即通过函数名找到函数再去执行函数,从而使得客户端与服务端之间可以更好地连接交互。
可以理解的是,在所述服务端接收到的数据包中可以携带有函数名,所述服务端可以根据所述函数名在预先定义好的RPC协议的所述服务方法(method)中找到与所述函数名相对应的目标函数,然后所述服务端可以执行所述目标函数,得到目标结果。此时,所述服务端可以根据所述目标结果修改所述RPC协议中的消息状态(Status),例如,消息可以为常规响应消息,或者可以为错误消息,即执行目标函数错误。最后,所述服务端再将所述目标结果按照所述远程过程调用协议中定义的编码方式进行编码,得到携带所述目标结果的响应消息;并向所述客户端返回所述响应消息。
其中,所述RPC协议中的服务路径(path)和服务方法(method)可以反射出所述服务端对应的服务路由和方法。
在本申请的实施例中,在服务端与客户端建立连接之前,所述服务端可以预先将所述目标函数相对应的服务存储在自己的路由中,便于在接收到所述客户端传输数据之后进行调用。所述路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。所述服务可以为一个函数,执行这个函数一般是一些业务逻辑;不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑。
而所述服务端在将所述服务存储在路由之前,还可以预先定义所述服务,所述服务可以包含三个参数(上下文,入参,出参)以及一个错误返回值。例如:函数名(context,arg,reply)以及error。在调用所述目标函数之后,可以在上下文(context)中添加所述RPC协议中的元数据(meta)。
下面结合实际的应用场景,对本申请实施例提供的基于远程过程调用协议的交互方法进行进一步地详细介绍。如图4所示,本申请实施例提供的基于远程过程调用协议的交互方法仅是示例而非限制,目的在于便于本领域技术人员更好地理解本申请的技术方案。所述方法可以包括三方:调用方、客户端和服务端,所述调用方可以为操作所述客户端的第三方,例如,编写代码的用户。
参照图4,本申请实施例提供的基于远程过程调用协议的交互方法可以包括如下步骤:
步骤401,服务端监听目标TCP端口,获取目标地址;
步骤402,所述服务端将所述目标地址注册到用于服务发现的指定数据库中,所述指定数据库中包括多个所述目标地址;
步骤403,客户端从所述指定数据库中获取多个所述目标地址;
步骤404,所述客户端基于获取的多个所述目标地址,在连接池中建立多条TCP连接;
在本申请实施例中,所述多条TCP连接是所述客户端根据自己的地址与多个所述目标地址分别建立的TCP连接。
可以理解的是,在多个服务端将多个目标地址注册到指定数据库中之后,多个所述目标地址可以在所述指定数据库中被客户端获取,然后在所述连接池中预先被建立多条TCP连接。所述连接池中预先被建立的多条TCP连接可以为所述客户端的地址与所述多个服务端的多个目标地址之间的TCP连接。
步骤405,所述客户端基于负载均衡算法,从所述连接池中选取一条已预先建立的目标TCP连接,所述目标TCP连接为所述客户端与目标服务端之间的TCP连接;
步骤406,所述客户端创建第一目标请求;
其中,所述第一目标请求可以携带有所述客户端需要向所述目标服务端发送的数据。
步骤407,所述客户端将所述第一目标请求的数据按照预先定义的RPC协议中的编码方式进行编码,得到第二目标请求;
其中,所述第二目标请求可以为所述第一目标请求编码后的二进制数据;所述编码方式与所述服务端的编码方式可以相同。
需了解的是,步骤405与步骤406-407的顺序可以按照实际情况进行选择,在此不做限定。举例而言,可以先进行步骤405,再进行步骤406-407;也可以先进行步骤406-407,再进行步骤405。
步骤408,根据所述目标TCP连接,所述客户端向所述目标服务端发送所述第二目标请求;
步骤409,在所述目标服务端接收到所述第二目标请求之后,所述目标服务端读取所述第二目标请求的数据;
可以理解的是,所述目标服务端可以建立协程来读取所述第二目标请求的数据;其中,所述协程(coroutine)是一种程序组件,相对子例程而言,协程更为一般和灵活,是不带返回值的函数调用。
步骤410,所述目标服务端基于所述RPC协议,对所述第二目标请求的数据进行解析;
步骤411,所述目标服务端根据所述解析后的数据中携带的函数名,在所述RPC协议的所述服务方法中找到与所述函数名相匹配的目标函数;
其中,通过函数名找到函数,然后去执行函数的方式可以称为反射。所述服务端的方法可以为函数,而服务可以为所述服务端中所有方法的集合。
步骤412,执行所述目标函数,得到目标结果;
在本申请的实施例中,所述服务端可以根据所述目标结果修改所述RPC协议中的消息状态,例如,消息可以为常规响应消息,或者可以为错误消息,即执行目标函数错误。
步骤413,所述目标服务端按照与所述客户端相同的编码方式,对所述目标结果的数据进行编码,得到目标响应;
其中,所述目标响应可以为所述目标结果编码后的二进制数据,可以用于客户端与服务端之间进行数据传输。
步骤414,所述目标服务端向所述客户端发送所述目标响应,所述目标响应与所述第二目标请求相对应;
步骤415,所述客户端接收到所述目标响应。
本申请实施例提供的一种基于远程过程调用协议的交互方法,在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
图5为本申请实施例提供的一种基于远程过程调用协议的交互装置的结构框图。参照图5,本申请实施例提供的一种基于远程过程调用协议的交互装置500,可以包括:处理模块510和发送模块520。
其中,所述处理模块510,用于在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
所述发送模块520,用于利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
本申请实施例提供的一种基于远程过程调用协议的交互装置,在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
可选地,在一个实施例中,所述装置500还可以包括:获取模块,用于在所述处理模块从连接池中选取一条已预先建立的目标TCP连接之前,从用于服务发现的指定数据库中获取多个目标地址,其中,所述多个目标地址是基于多个服务端的TCP端口而得到的服务端地址;连接建立模块,用于基于获取的所述多个目标地址,在所述连接池中建立所述多条TCP连接。
可选地,在一个实施例中,所述多条TCP连接为所述客户端与多个服务端之间的多条TCP连接,所述发送模块520还可以用于:向所述多条TCP连接对应的多个服务端发送心跳包,所述心跳包用于确定所述客户端与所述多个服务端之间的连接是否中断;所述处理模块510还可以用于:在所述客户端与所述多个服务端中的一个指定服务端的连接中断的情况下,从所述连接池中删除所述指定服务端对应的TCP连接。
可选地,在一个实施例中,所述远程过程调用协议可以包括如下部分:头部、服务路径、服务方法、元数据和实际数据;所述头部包括:版本号、消息类型、心跳、压缩方式、编码方式、消息状态以及消息序号;所述目标数据的编码方式与所述头部中定义的编码方式相匹配。
需要说明的是,本申请实施例提供的基于远程过程调用协议的交互装置与上文提到的基于远程过程调用协议的交互方法相对应。相关内容可参照上文对基于远程过程调用协议的交互方法的描述,在此不做赘述。
图6是本申请实施例提供的一种客户端的结构示意图。参照图6,本申请实施例还提供一种客户端600,所述客户端600包括:存储器610、处理器620及存储在所述存储器610上并可在所述处理器620上运行的计算机程序,所述计算机程序被所述处理器620执行时实现如上文中任一项所述的方法的步骤。举例而言,所述计算机程序被所述处理器620执行时实现如下过程:在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被所述处理器执行时实现如上文中任一项所述的方法的步骤。举例而言,所述计算机程序被所述处理器执行时实现如下过程:在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立多条TCP连接,避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
图7是本申请实施例提供的一种基于远程过程调用协议的交互装置的结构框图。参照图7,本申请实施例提供的基于远程过程调用协议的交互装置700,可以包括:获取模块710和注册模块720。
其中,所述获取模块710,用于监听目标TCP端口,获取服务端的目标地址;
所述注册模块720,用于将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
本申请实施例提供的一种基于远程过程调用协议的交互装置,通过获取服务端的目标地址,并将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立的TCP连接向所述客户端传输所述服务端的数据,可以避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
可选地,在一个实施例中,所述装置700还可以包括:
接收模块,用于接收所述客户端传输的目标数据,所述目标数据为基于所述远程过程调用协议编码得到的数据;
处理模块,用于基于所述远程过程调用协议,对接收到的所述客户端传输的所述目标数据进行解析,得到函数名;
在所述远程过程调用协议的服务方法中找到与所述函数名相匹配的目标函数;
执行所述目标函数,得到目标结果;
将所述目标结果按照所述远程过程调用协议中定义的编码方式进行编码,得到携带所述目标结果的响应消息;
发送模块,用于向所述客户端返回所述响应消息。
需要说明的是,本申请实施例提供的基于远程过程调用协议的交互装置与上文提到的基于远程过程调用协议的交互方法相对应。相关内容可参照上文对基于远程过程调用协议的交互方法的描述,在此不做赘述。
图8是本申请实施例提供的一种服务端的示意图。参照图8,本申请实施例还提供一种服务端800,所述服务端800包括:存储器810、处理器820及存储在所述存储器810上并可在所述处理器820上运行的计算机程序,所述计算机程序被所述处理器820执行时实现如上文中基于服务端所描述的方法的步骤。举例而言,所述计算机程序被所述处理器820执行时实现如下过程:监听目标TCP端口,获取服务端的目标地址;将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立的TCP连接向所述客户端传输所述服务端的数据,可以避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被所述处理器执行时实现如上文中任一项所述的方法的步骤。举例而言,所述计算机程序被所述处理器执行时实现如下过程:监听目标TCP端口,获取服务端的目标地址;将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。如此,在远程过程调用的过程中通过使用TCP连接来代替传统的HTTP连接,可以解决HTTP/2协议的性能不高的问题,同时,通过在连接池中预先建立的TCP连接向所述客户端传输所述服务端的数据,可以避免在客户端与服务端进行数据交互时才建立TCP连接所导致的延时,提高了客户端与服务端数据交互的效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种基于远程过程调用协议的交互方法,其特征在于,所述方法包括:
在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
2.根据权利要求1所述的方法,其特征在于,在所述从连接池中选取一条已预先建立的目标TCP连接之前,所述方法还包括:
从用于服务发现的指定数据库中获取多个目标地址,其中,所述多个目标地址是基于多个服务端的TCP端口而得到的服务端地址;
基于获取的所述多个目标地址,在所述连接池中建立所述多条TCP连接。
3.根据权利要求1所述的方法,其特征在于,所述多条TCP连接为所述客户端与多个服务端之间的多条TCP连接,所述方法还包括:
向所述多条TCP连接对应的多个服务端发送心跳包,所述心跳包用于确定所述客户端与所述多个服务端之间的连接是否中断;
在所述客户端与所述多个服务端中的一个指定服务端的连接中断的情况下,从所述连接池中删除所述指定服务端对应的TCP连接。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述远程过程调用协议包括如下部分:头部、服务路径、服务方法、元数据和实际数据;所述头部包括:版本号、消息类型、心跳、压缩方式、编码方式、消息状态以及消息序号;所述目标数据的编码方式与所述头部中定义的编码方式相匹配。
5.一种基于远程过程调用协议的交互装置,其特征在于,所述装置包括:
处理模块,用于在客户端需要基于远程过程调用协议与目标服务端交互的情况下,从连接池中选取一条已预先建立的目标TCP连接,所述连接池中包括已预先建立的多条TCP连接,所述目标TCP连接为所述客户端与所述目标服务端之间的TCP连接;
发送模块,用于利用选取的所述目标TCP连接向所述目标服务端传输目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据。
6.一种客户端,其特征在于,所述客户端包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至4中任一项所述的方法中的步骤。
7.一种基于远程过程调用协议的交互方法,其特征在于,所述方法包括:
监听目标TCP端口,获取服务端的目标地址;
将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收所述客户端传输的目标数据,所述目标数据为所述客户端基于所述远程过程调用协议编码得到的数据;
基于所述远程过程调用协议,对接收到的所述客户端传输的所述目标数据进行解析,得到函数名;
在所述远程过程调用协议的服务方法中找到与所述函数名相匹配的目标函数;
执行所述目标函数,得到目标结果;
将所述目标结果按照所述远程过程调用协议中定义的编码方式进行编码,得到携带所述目标结果的响应消息;
向所述客户端返回所述响应消息。
9.一种基于远程过程调用协议的交互装置,其特征在于,所述装置包括:
获取模块,用于监听目标TCP端口,获取服务端的目标地址;
注册模块,用于将所述目标地址注册到用于服务发现的指定数据库中,所述目标地址用于在连接池中预先建立客户端与所述服务端之间的TCP连接,所述TCP连接用于在所述客户端需要基于远程过程调用协议与所述服务端交互的情况下,向所述客户端传输所述服务端基于所述远程过程调用协议编码得到的数据。
10.一种服务端,其特征在于,所述服务端包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求7至8中任一项所述的方法中的步骤。
CN202111187032.3A 2021-10-12 2021-10-12 基于远程过程调用协议的交互方法及装置 Pending CN114090280A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111187032.3A CN114090280A (zh) 2021-10-12 2021-10-12 基于远程过程调用协议的交互方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111187032.3A CN114090280A (zh) 2021-10-12 2021-10-12 基于远程过程调用协议的交互方法及装置

Publications (1)

Publication Number Publication Date
CN114090280A true CN114090280A (zh) 2022-02-25

Family

ID=80296780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111187032.3A Pending CN114090280A (zh) 2021-10-12 2021-10-12 基于远程过程调用协议的交互方法及装置

Country Status (1)

Country Link
CN (1) CN114090280A (zh)

Similar Documents

Publication Publication Date Title
US7702917B2 (en) Data transfer using hyper-text transfer protocol (HTTP) query strings
CN112751845B (zh) 网络协议解析方法、***及装置
CN108494817A (zh) 数据传输方法、相关装置及***
JP2004527028A (ja) インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル
US11108890B2 (en) Management client and device monitoring
CN102111437A (zh) 一种基于soap扩展的web服务传输压缩方法
US11843642B1 (en) Serverless signaling in peer-to-peer session initialization
CN105183470A (zh) 一种自然语言处理***化服务平台
CN113810349B (zh) 数据传输方法、装置、计算机设备和存储介质
Krawiec et al. Survey on technologies for enabling real-time communication in the web of things
CN113765867A (zh) 一种数据传输方法、装置、设备及存储介质
Nakagawa et al. Dripcast-architecture and implementation of server-less Java programming framework for billions of IoT devices
CN114090280A (zh) 基于远程过程调用协议的交互方法及装置
US11929933B2 (en) Ephemeral data stream routing service
Dreibolz et al. High availability using reliable server pooling
US9479599B2 (en) Reroute of a web service in a web based application
Soundararajan et al. A novel client/server protocol for web-based communication over UDP on a bare machine
CN113992644A (zh) 一种基于无服务技术的物联网关***及其数据处理方法
CN114640610A (zh) 基于云原生的服务治理方法、装置及存储介质
CN115516842A (zh) 编排代理服务
CN111901689A (zh) 流媒体数据的传输方法、装置、终端设备和存储介质
CN113709264A (zh) 一种地址获取方法、设备、***及存储介质
Toman Review of Web Service Technologies: REST over SOAP
CN115834665B (zh) 一种网络通信方法和装置
CN113973086B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230316

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Applicant after: Sina Technology (China) Co.,Ltd.

Address before: 100080 7th floor, Sina headquarters scientific research building, plot n-1 and n-2, Zhongguancun Software Park Phase II (West Expansion), Dongbeiwang West Road, Haidian District, Beijing

Applicant before: Sina.com Technology (China) Co.,Ltd.