CN116155877A - 远程调用方法及装置、电子设备、计算机可读存储介质 - Google Patents
远程调用方法及装置、电子设备、计算机可读存储介质 Download PDFInfo
- Publication number
- CN116155877A CN116155877A CN202211412548.8A CN202211412548A CN116155877A CN 116155877 A CN116155877 A CN 116155877A CN 202211412548 A CN202211412548 A CN 202211412548A CN 116155877 A CN116155877 A CN 116155877A
- Authority
- CN
- China
- Prior art keywords
- proxy server
- request
- parameters
- target
- remote call
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 230000004044 response Effects 0.000 claims abstract description 124
- 238000004891 communication Methods 0.000 claims abstract description 107
- 238000001514 detection method Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 18
- 239000000523 sample Substances 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开提供了一种远程调用方法及装置、电子设备、计算机可读存储介质,该方法包括:获取待发起的远程调用请求的请求参数;从至少一个代理服务端中,确定待使用的目标代理服务端;根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端;接收目标代理服务端返回的响应参数,其中,响应参数是目标代理服务端响应于远程调用请求将请求参数发送至被调用端之后,由被调用端生成并提供至目标代理服务端的,请求参数是目标代理服务端基于与被调用端之间的专用网络连接通道发送至被调用端的。根据本公开的实施例能够降低远程调用的通信耗时。
Description
技术领域
本公开涉及计算机技术领域,特别涉及远程调用方法及装置、电子设备、计算机可读存储介质。
背景技术
远程过程调用(RPC,Remote Procedure Call),是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
在相关技术中,在实现RPC方案,即实现远程调用时,通常仅关注业务开发上的便捷性。例如,通常会关注于如何通过接口描述语言(IDL,Interface DescriptionLanguage)对RPC请求的输入参数和输入参数进行统一定义,以生成不同编程语言的软件开发工具包(SDK,Software Development Kit),RPC请求的发起方,即调用端(Caller)和RPC请求的接收方,即被调用端(Callee)之间往往并不需要关注SDK底层如何进行网络通信。
相关技术中的该种RPC实现方案,即远程调用方法虽然使得Caller和Callee之间可以便捷的进行通信,但是可能存在通信耗时长的问题。
发明内容
本公开提供一种远程调用方法及装置、电子设备、计算机可读存储介质。
第一方面,本公开提供了一种远程调用方法,应用于调用端,该方法包括:
获取待发起的远程调用请求的请求参数,其中,所述远程调用请求用于传输所述请求参数至被调用端,所述调用端和所述被调用端所处的地理位置不同;
从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在所述调用端基于所述至少一个代理服务端分别与所述被调用端进行通信的情况下,所述目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与所述被调用端之间基于不同的专用网络连接通道连接;
根据所述请求参数,生成所述远程调用请求,并将所述远程调用请求发送至所述目标代理服务端;
接收所述目标代理服务端返回的响应参数,其中,所述响应参数是所述目标代理服务端响应于所述远程调用请求将所述请求参数发送至所述被调用端之后,由所述被调用端生成并提供至所述目标代理服务端的,所述请求参数是所述目标代理服务端基于与所述被调用端之间的专用网络连接通道发送至所述被调用端的。
第二方面,本公开提供了另一种远程调用方法,应用于目标代理服务端,该方法包括:
接收调用端发送的远程调用请求,其中,所述远程调用请求用于传输请求参数至被调用端,所述目标代理服务端与所述被调用端之间基于专用网络连接通道连接;
从所述远程调用请求中获取所述请求参数对应的序列化参数,并将所述序列化参数发送至所述被调用端;
在接收到所述被调用端提供的、与所述请求参数对应的响应参数的情况下,将所述响应参数提供至所述调用端。
第三方面,本公开提供了又一种远程调用方法,应用于被调用端,该方法包括:
接收目标代理服务端发送的序列化参数,其中,所述序列化参数是由所述调用端基于远程调用请求的请求参数生成的;
对所述序列化参数进行反序列化处理,获得所述请求参数,并根据所述请求参数生成响应参数;
将所述响应参数提供至所述目标代理服务端,其中,所述目标代理服务端用于将接收到的所述响应参数通过远程调用响应消息的方式提供至所述调用端,所述远程调用响应消息是由所述目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,所述序列化响应参数是由所述目标代理服务端对所述响应参数进行序列化处理后得到的。
第四方面,本公开提供了一种远程调用装置,应用于调用端,该装置包括:
获取单元,用于获取待发起的远程调用请求的请求参数,其中,所述远程调用请求用于传输所述请求参数至被调用端,所述调用端和所述被调用端所处的地理位置不同;
确定单元,用于从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在所述调用端基于所述至少一个代理服务端分别与所述被调用端进行通信的情况下,所述目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与所述被调用端之间基于不同的专用网络连接通道连接;
发送单元,用于根据所述请求参数,生成所述远程调用请求,并将所述远程调用请求发送至所述目标代理服务端;
接收单元,用于接收所述目标代理服务端返回的响应参数,其中,所述响应参数是所述目标代理服务端响应于所述远程调用请求将所述请求参数发送至所述被调用端之后,由所述被调用端生成并提供至所述目标代理服务端的,所述请求参数是所述目标代理服务端基于与所述被调用端之间的专用网络连接通道发送至所述被调用端的。
第五方面,本公开提供了另一种远程调用装置,应用于目标代理服务端,该装置包括:
第一接收单元,用于接收调用端发送的远程调用请求,其中,所述远程调用请求用于传输请求参数至被调用端,所述目标代理服务端所处的机房与所述被调用端所处的机房之间基于专用网络连接线连接;
参数发送单元,用于从所述远程调用请求中获取所述请求参数对应的序列化参数,并将所述序列化参数发送至所述被调用端;
第一参数提供单元,用于在接收到所述被调用端提供的、与所述请求参数对应的响应参数的情况下,将所述响应参数提供至所述调用端。
第六方面,本公开提供了又一种远程调用装置,应用于调用端,该装置包括:
第二接收单元,用于接收目标代理服务端发送的序列化参数,其中,所述序列化参数是由所述调用端基于远程调用请求的请求参数生成的;
参数生成单元,用于对所述序列化参数进行反序列化处理,获得所述请求参数,并根据所述请求参数生成响应参数;
第二参数提供单元,用于将所述响应参数提供至所述目标代理服务端,其中,所述目标代理服务端用于将接收到的所述响应参数通过远程调用响应消息的方式提供至所述调用端,所述远程调用响应消息是由所述目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,所述序列化响应参数是由所述目标代理服务端对所述响应参数进行序列化处理后得到的。
第七方面,本公开提供了一种电子设备,该电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面、第二方面以及第三方面的远程调用方法。
第八方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序在被处理器执行时实现上述第一方面、第二方面以及第三方面的远程调用方法。
本公开所提供的实施例,调用端,即Caller在获取到待发起的远程调用请求,即RPC请求的请求参数之后,并不直接基于RPC SDK包将该RPC调用请求发送至被调用端,即Callee,而是先从至少一个代理服务端中确定通信耗时满足第一预设条件的代理服务端作为目标代理服务端;之后,该Caller将该远程调用请求发送至目标代理服务端,并基于该目标代理服务端获得Callee提供的响应参数。
在本公开所提供的实施例中,由于每一代理服务端与Callee之间基于不同的专用网络连接通道连接,所以Caller在基于该至少一个代理服务端与Callee之间进行通信时,可以避免数据传输过程中因为经过的网络传输设备不可控从而可能导致的通信耗时长的问题;同时,因为目标代理服务端还是所有代理服务端中通信耗时满足第一预设条件的代理服务端,因此,Caller基于目标代理服务端与Callee之间进行远程调用,还可以进一步的降低通信耗时,提升通信速度。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用来提供对本公开的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。通过参考附图对详细示例实施例进行描述,以上和其他特征和优点对本领域技术人员将变得更加显而易见,在附图中:
图1为相关技术中的远程调用处理的框架示意图;
图2为本公开实施例提供的远程调用方法的实施环境的示意图。
图3为本公开实施例提供的一种远程调用方法的流程图;
图4为本公开实施例提供的用于确定目标代理服务端的流程图;
图5为本公开实施例提供的另一种远程调用方法的流程图;
图6为本公开实施例提供的又一种远程调用方法的流程图;
图7为本公开实施例提供的一种远程调用装置的框图;
图8为本公开实施例提供的另一种远程调用装置的框图;
图9为本公开实施例提供的又一种远程调用装置的框图;
图10为本公开实施例提供的一种电子设备的框图。
具体实施方式
为使本领域的技术人员更好地理解本公开的技术方案,以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
RPC远程过程调用,一般是指计算机A上的进程,调用另外一台计算机B上的进程的方法,其中,在计算机A上的进程发出远程过程调用请求之后,计算机A上面的发起该请求的调用进程被挂起,而计算机B上面的被调用进程开始执行对应响应方法,并将响应结果返回给计算机A,计算机A接收到响应结果后,其调用进程继续执行。
为便于理解,请参看图1,其为相关技术中的远程调用处理的框架示意图。如图1所示,在相关技术中,若调用端,即Caller中的调用进程(client)执行本地调用,即localcall时,通常是直接执行本地调用对应的接口函数,然后该接口函数直接调用操作***本地提供的方法进行响应并返回响应结果,即local return。
RPC远程过程调用是为了使Caller对Callee的远程调用可以具有如本地调用类似的形式,而不需要开发人员关注于两者之间的底层如何实现。如图1所示,当Caller需要远程调用Callee中的服务时,其可以先对请求参数进行序列化处理,即pack argument;之后,通过RPC SDK发送RPC请求传输该序列化后的请求参数至Callee;Callee中的被调用进程(server)响应于该RPC请求,对接收到的序列化的请求参数进行反序列化处理,即unpackargument;之后,基于业务逻辑处理获得请求参数对应的响应结果,并对响应结果进行序列化处理以及基于RPC SDK包发送响应请求至Caller;Caller接收到该响应请求之后,通过对该响应结果进行反序列化处理得到响应结果从而继续执行后续业务。
例如,针对文件读取操作,一般是基于read操作来读取文件中的数据,当read操作实际是本地调用时,该read操作对应的read函数一般是由链接器从依赖库中提取出来,接着由链接器将read函数链接到调用进程,即Caller中,在该过程中,虽然该read操作中执行了特殊的***调用,但其本身依然是通过将参数压入堆栈的常规方式调用,Caller并不需要知道read函数的底层实现和行为;而当read操作实际是一个远程过程时,即,是需要进行远程调用时,例如,是调用远程文件服务器提供的操作时,Caller中则需要引入该read的接口定义,该接口定义可以称为客户端存根(client-stub),该客户端存根的作用与进行本地读取时的read函数类型,都执行了本地函数调用,但不同的是,其底层实现不是进行操作***调用读取本地文件来提供数据,而是将参数打包成网络消息,并将此网络消息发送到Caller,由Caller进行响应;在Caller发送完调用请求之后,客户端存根会进入阻塞状态,即,进入wait状态,直到收到Callee提供的响应消息为止。
由此可知,相关技术中在实现远程调用时,往往仅关注于如何实现调用的便捷性,对于底层如何进行网络通信并不关注。然而,当Caller与Callee处于不同地理位置时,两者之间在进行远程调用的过程中,底层报文的网络传输过程往往是不可控的,例如,处于重庆的Caller发送一条消息给处于上海的Callee,中间需要经过多少网络设备往往是不可预估的,而报文经由网络设备的数量的多少往往会对通信耗时造成直接影响,相关技术中的该种远程调用方法通常可能存在通信耗时长的问题。
请参看图2,其为本公开实施例提供的远程更新方法的实施环境的示意图。如图1所示,该实施环境可以包括调用端101、代理服务端102、被调用端103以及网络104。
调用端101可以是终端设备,例如可以为智能手机、便携式电脑、台式计算机、平板电脑等;或者,调用端101也可以为服务器,例如可以为刀片服务器、机架式服务器等,也可以为虚拟服务器,例如可以为部署在云端的服务器集群,在此不做限定。在本公开实施例中,以该调用端101为终端设备为例进行说明,该调用端101可用于实现本公开实施例提供的一种远程调用方法。
代理服务端102,可以为物理服务器,例如可以为刀片服务器、机架式服务器等,代理服务端102也可以是虚拟服务器,例如可以是部署在云端的服务器集群,在此不做限定。在本公开实施例中,代理服务端102的数量为至少一个,该至少一个代理服务端可以分别处于不同地理位置的机房中,每一代理服务端与被调用端103之间基于不同的专用网络连接通道连接,该专用网络连接通道例如可以基于实体的物理连接线实现。
在本公开实施例中,在调用端101与被调用端103之间进行远程调用时,调用端101可以先从该至少一个代理服务端102中确定一个目标代理服务端,该目标代理服务端是当前时刻在代理传输调用端101和被调用端102之间的通信数据时,消耗的通信耗时满足第一预设条件,例如为通信耗时最短的代理服务端,该目标代理服务端可以用于实现本公开实施例提供的另一种远程调用方法。
被调用端103,可以为物理服务器,例如可以为刀片服务器、机架式服务器等,代理服务端102也可以是虚拟服务器,例如可以是部署在云端的服务器集群,在此不做限定;当然,在一些实施例中,被调用端103也可以为终端设备,例如可以为边缘计算场景中的边缘终端设备,在此不做限定。在本公开实施例中,被调用端103可以用于实现本公开实施例提供的又一种远程调用方法。
网络104可以是无线网络也可以是有线网络,可以是局域网也可以是广域网,其中,调用端101、代理服务端102、被调用端相互之间可以通过网络104进行通信;可以理解的是,代理服务端102与被调用端之间在通过网络104进行通信时,是基于本公开实施例所述的专用网络连接线通道的方式实现。
在本公开实施例中,调用端101可用于参与实现本公开任意实施例提供的一种远程调用方法。例如可以用于:获取待发起的远程调用请求的请求参数,其中,远程调用请求用于传输请求参数至被调用端103,调用端101和被调用端103所处的地理位置不同;从至少一个代理服务端102中,确定待使用的目标代理服务端,其中,在调用端101基于至少一个代理服务端102分别与被调用端103进行通信的情况下,目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与被调用端103之间基于不同的专用网络连接通道连接;根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端;接收目标代理服务端返回的响应参数,其中,响应参数是目标代理服务端响应于远程调用请求将请求参数发送至被调用端103之后,由被调用端103生成并提供至目标代理服务端的,请求参数是目标代理服务端基于与被调用端之间的专用网络连接通道发送至被调用端的。
代理服务端102中的目标代理服务端可用于实现本公开实施例提供的另一种远程调用方法。例如可以用于:接收调用端101发送的远程调用请求,其中,远程调用请求用于传输请求参数至被调用端103,目标代理服务端与被调用端103之间基于专用网络连接通道连接;从远程调用请求中获取请求参数对应的序列化参数,并将序列化参数发送至被调用端103;在接收到被调用端103提供的、与请求参数对应的响应参数的情况下,将响应参数提供至调用端101。
被调用端103可用于实现本公开实施例提供的又一种远程调用方法。例如可以用于:接收目标代理服务端发送的序列化参数,其中,序列化参数是由调用端101基于远程调用请求的请求参数生成的;对序列化参数进行反序列化处理,获得请求参数,并根据请求参数生成响应参数;将响应参数通过远程调用响应消息的方式提供至目标代理服务端,其中,目标代理服务端用于将接收到的响应参数提供至调用端101,远程调用响应消息是由目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,序列化响应参数是由目标代理服务端对响应参数进行序列化处理后得到的。
可以理解的是,图1所示的实施环境仅是解释性的,并且决不是为了要限制本公开、其应用或用途。例如,尽管图1仅示出一个调用端101、一个代理服务端102和一个被调用端103,但不意味着限制各自的数量,该实施环境中可以包含多个调用端器101、多个代理服务端102,以及多个被调用端103。
请参看图3,其为本公开实施例提供的一种远程调用方法的流程图。该远程调用方法应用于调用端,该调用端例如可以为图2所示的调用端101。
如图3所示,本公开实施例提供的可以应用于调用端101的该远程调用方法可以包括如下步骤S301-S304,以下予以详细说明。
步骤S301,获取待发起的远程调用请求的请求参数,其中,远程调用请求用于传输请求参数至被调用端,调用端和被调用端所处的地理位置不同。
本公开实施例中的远程调用请求,可以是调用端发起的、用于远程调用被调用端中的方法的请求,即,RPC请求,该远程调用请求至少可以用于将请求参数传输至被调用端,以触发被调用端根据请求参数,通过执行对应的业务逻辑处理得到与该请求参数对应的响应参数。
步骤S302,从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在调用端基于至少一个代理服务端分别与被调用端进行通信的情况下,目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与被调用端之间基于不同的专用网络连接通道连接。
该第一预设条件,可以是所有代理服务端中通信耗时最短的代理服务端,或者,也可以是通信耗时小于预设阈值的多个代理服务端中的任一代理服务端。
在本公开实施例中,该至少一个代理服务端可以分别处于不同地理位置中,每一代理服务端与被调用端之间基于不同的专用网络连接通道连接。
专用网络连接通道,也称网络专线,该网络专线可以对应一真实的物理连接线,或者也可以为虚拟的,即,网络专线可以是用于传输网络数据的物理专用信道,该物理专用信道用于传输调用端和调用端关联的业务的网络数据;或者,该网络专线也可以是虚拟专用信道,即,由服务商在一般的通用信道上保留一定的带宽,调用端和调用端关联的业务保留对该部分带宽的独占性。
例如,调用端,即Caller可以处于重庆的机房1中,被调用端,即Callee可以处于上海的机房2中,该至少一个代理服务端可以表示为:proxyserver1、proxyserver2、proxyserver3,proxyserver1可以处于郑州的机房3中,proxyserver2可以处于长沙的机房4中,proxyserver3可以处于沈阳的机房5中,机房3和机房2之间可以基于专用网络连接线1将proxyserver1和Callee连接,机房4和机房2之间可以基于专用网络连接线2将proxyserver2和Callee连接,机房5和机房2之间可以基于专用网络连接线3将proxyserver3和Callee连接。
在一些实施例中,目标代理服务端可以由调用端基于随机算法确定。例如,代理服务端分别为上述的proxyserver1、proxyserver2、proxyserver3,Caller在需要向Callee发起远程调用请求时,可以基于随机算法随机确定proxyserver2作为目标代理服务端。
当然,为了降低通信耗时,考虑到不同机房所处的物理距离往往会对通信耗时造成直接影响,因此,也可以根据调用端与各代理服务端之间的第一物理距离,以及各代理服务端与被调用端之间的第二物理距离,确定待使用的目标代理服务端。
例如,若Caller与proxyserver1、proxyserver2以及proxyserver3的物理距离分别为800公里、600公里以及2600公里,proxyserver1、proxyserver2以及proxyserver3与Callee的物理距离分别为800公里、900公里以及1200公里,则由于proxyserver2的物理距离和值1500为最小和值,因此,可以将proxyserver2确定为目标代理服务端。
即,针对相关技术中在实现远程调用时,往往仅关注于业务实现上的便捷性,而并不关于远程调用的底层网络通信,从而造成的处于不同地理位置的调用端和被调用端因为在通信过程中报文经过的网络设备数量不可控而可能带来的通信耗时较长的问题,在本公开实施例中,预先在不同地理位置的机房中设置至少一个代理服务端,并将该至少一个代理服务端与被调用端基于各自对应的专用网络连接通道连接,使得调用端在执行远程调用时,可以先将远程调用发送至目标代理服务端,再由目标代理服务端基于其对应的专用网络连接通道将接收到的远程调用请求中的请求参数传输至被调用端,可以使得远程调用,即RPC请求底层所经过的网络设备变的可控,从而达到降低通信耗时的效果。
步骤S303,根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端;以及,步骤S304,接收目标代理服务端返回的响应参数,其中,响应参数是目标代理服务端响应于远程调用请求将请求参数发送至被调用端之后,由被调用端生成并提供至目标代理服务端的,请求参数是目标代理服务端基于与被调用端之间的专用网络连接通道发送至被调用端的。
在经过上述步骤S303确定待使用的目标代理服务端之后,调用端即可根据请求参数生成远程调用请求,并将该远程调用请求发送至目标代理服务端;目标代理服务端在接收到该远程调用请求之后,可以基于其与被调用端之间的专用网络连接通道,即网络专线,将该远程调用请求中的请求参数发送至被调用端,被调用端则可根据该请求参数生成并提供对应的响应参数值目标代理服务端,再由该目标代理服务端将该响应参数返回至调用端,从而完成一次远程过程调用。
根据以上说明可知,本公开实施例提供的该应用于调用端的远程调用方法,由于每一代理服务端所处的机房与Callee所处的机房之间基于不同的专用网络连接通道连接,所以Caller在基于该至少一个代理服务端与Callee之间进行通信时,可以避免数据传输过程中因为经过的网络传输设备不可控从而可能导致的通信耗时长的问题;同时,因为目标代理服务端还是所有代理服务端中通信耗时满足第一预设条件,例如为通信耗时最短的代理服务端,因此,Caller基于目标代理服务端与Callee之间进行远程调用,还可以进一步的降低通信耗时,提升通信速度。
请参看图4,其为本公开实施例提供的用于确定目标代理服务端的流程图,如图4所示,在本公开实施例中,目标代理服务端也可以通过以下步骤S401-S405确定:
步骤S401,获取与至少一个代理服务端对应的至少一个服务地址信息。
服务地址信息,是用于表示代理服务端的通信地址的信息,该服务地址信息例如可以为IP地址+端口的形式,或者也可以为代理服务端的url地址。
步骤S402,根据至少一个服务地址信息,得到与至少一个代理服务端对应的至少一个代理客户端。
在本公开实施例中,代理客户端,是调度端中创建的、用于与代理服务端进行http通信的对象。代理客户端例如可以为一个HttpClient实例对象,该HttpClient实例对象可以基于CloseableHttpClient类创建,例如,可以使用CloseableHttpClient的工厂类HttpClients的方法来创建实例,即,通过HttpClients.createDefault()创建一个HttpClient实例对象作为与代理服务端对应的代理客户端。在调度端中,可以基于该代理客户端向代理服务端发送http请求,以进行http通信。
步骤S403,根据至少一个代理客户端,分别发送通信探测请求包至对应的代理服务端,以及,接收至少一个代理服务端分别提供的、与通信探测请求包对应的通信探测响应包;其中,每一代理服务端用于将接收到的通信探测请求包基于对应的专用网络连接通道传输至被调用端,并接收被调用端生成并提供的通信探测响应包。
通信探测请求包,可以是基于http协议生成的一个用于试探调度端在基于代理客户端与被调用端进行通信时,进行一次完整的通信链路所需要的通信耗时的数据包。
其中,上述所述的一次完整的通信链路可以是:1、调度端基于代理客户端发送通信探测请求包至对应的代理服务端;2、代理服务端将通信探测请求包基于专用网络连接通道发送至被调用端;3、被调用端生成通信探测请求包对应的通信探测响应包,并基于该专用网络连接通道发送至代理服务端;4、代理服务单接收通信探测响应包并返回至调度端中的代理客户端。
步骤S404,根据每一通信探测请求包的发送时间和对应通信探测响应包的接收时间,获得与至少一个代理服务端对应的至少一个探测通信时长;以及,步骤S405,将至少一个探测通信时长中,数值满足第二预设条件的探测通信时长所对应的代理服务端确定为目标代理服务端。
与上述第一预设条件相对应,该第二预设条件,可以是所有代理服务端中探测通信时长最小的代理服务端,或者,也可以是探测通信时长小于预设阈值的多个代理服务端中的任一代理服务端。
即,在本公开实施例中,考虑到因为网络波动、代理服务端资源不足甚至网络连接通道故障等原因,调度端即使基于距离较近的代理服务端与被调用端之间进行远程调用,其通信耗时也可能并不是最短的,因此,在确定目标代理服务端时,也可以先使用一个通信探测请求包作为通信链路测试报文,分别使用每一代理服务端将该通信链路测试报文代理传输至被调用端,以获取当前时刻基于每一代理服务端进行一次完整的通信链路所需要消耗的通信时长,并将探测到的探测通信时长中的最小数值所对应的代理服务端作为目标代理服务端。
例如,针对上述代理服务端,即proxyserver1、proxyserver2以及proxyserver3,调度端可以先基于HttpClients.createDefault()方法分别创建三个与proxyserver1、proxyserver2以及proxyserver3分别对应的代理客户端proxyclient1、proxyclient2以及proxyclient3;之后,Caller基于proxyclient1发送通信探测请求包至proxyserver1,记录发送时间1,在获取到proxyserver1发送的、由Caller提供的通信探测响应包的情况下,记录接收时间2;之后,再依次记录与proxyclient2和proxyserver2对应的发送时间2和接收时间2、与proxyclient3和proxyserver3对应的发送时间3和接收时间3;之后,即可得到基于<proxyclient1,proxyserver1>完成一次完整的通信链路的探测通信时长1、基于<proxyclient2,proxyserver2>完成一次完整的通信链路的探测通信时长2以及基于<proxyclient3,proxyserver3>完成一次完整的通信链路的探测通信时长3,之后选取最小数值的探测通信时长对应的代理服务端作为目标代理服务端,例如,在探测通信时长1为最小数值的情况下,则可将proxyserver1确定为目标代理服务端。
根据以上说明可知,在本公开实施例中,通过由调度端基于代理服务端对应的代理客户端发送通信探测数据包以探测基于代理服务端进行一次完整的通信链路的通信耗时,可以使得在进行远程调用时,可以保障当前时刻使用的目标代理服务端为通信耗时尽可能短的代理服务端,以进一步的降低远程调用过程中的通信耗时。
在一些实施例中,上述步骤S303中的根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端,可以为:对请求参数进行序列化处理,获得序列化参数;将序列化参数填充为预设远程调用请求接口的参数,生成远程调用请求;控制目标代理服务端对应的代理客户端将远程调用请求发送至目标代理服务端。
该预设远程调用请求接口可以是基于RPC SDK得到的用于生成远程调用请求的接口。
即,在进行一次远程调用时,通常是使用HttpClient调用RPC SDK包中的预设远程调用请求接口的方式来传输请求参数,为了降低网络消耗通常会对请求参数进行序列化处理,该序列化处理可以是基于JSON(JavaScript Object Notation)、Protocol Buffer等序列化协议中的任一种将请求参数序列化为二进制数据的处理。
需要说明的是,在本公开实施例中,在调用端待与被调用端之间进行一次远程调用时,其在确定目标代理服务端之后,也可以为目标代理服务端设置一生命周期,该生命周期表示目标代理服务端的有效时长,调用端可以在目标代理服务端处于有效时长的情况下,直接使用该目标代理服务端与被调用端之间进行远程调用,而不必重复执行上述步骤S401-S405。即,在一些实施例中,所述从至少一个代理服务端中,确定待使用的目标代理服务端,可以为:获取上一时刻的目标代理服务端,在上一时刻的目标代理服务端处于有效生命周期内的情况下,确定该上一时刻的目标代理服务端为当前的目标代理服务端。
另外,在该种实施方式中,调用端在接收到目标代理服务端提供的响应参数之后,该方法还包括:在满足第三预设条件的情况下,清除与目标代理服务端对应的代理客户端。该第三预设条件例如可以为当前的目标代理服务端是否处于有效生命周期内。
即,可以在调用端每完成一次远程调用,即,获取到请求参数对应的响应参数之后,即判断目标代理服务端是否处于有效生命周期内,若不处于,则可以直接清除该目标代理服务端对应的代理客户端,以避免资源浪费。
请参看图5,其为本公开实施例提供的另一种远程调用方法的流程图。该远程调用方法可以应用于目标代理服务端,该目标代理服务端可以是调用端从至少一个代理服务端中确定的,该代理服务端例如可以为图2所示的代理服务端102。
如图5所示,该远程调用方法可以包括如下步骤S501-S503:
步骤S501,接收调用端发送的远程调用请求,其中,远程调用请求用于传输请求参数至被调用端,目标代理服务端与被调用端之间基于专用网络连接通道连接。
步骤S502,从远程调用请求中获取请求参数对应的序列化参数,并将序列化参数发送至被调用端。
步骤S503,在接收到被调用端提供的、与请求参数对应的响应参数的情况下,将响应参数提供至调用端。
在一些实施例中,被调用端所处的服务器中设置有代理服务进程;上述步骤S502中的将序列号参数发送至被调用端,可以包括:基于专用网络连接通道与代理服务进程之间建立目标传输控制协议连接;根据目标传输控制协议连接,将序列化参数发送至代理服务进程,其中,代理服务进程用于将接收到的序列化参数以共享内存的方式提供至被调用端。
即,在一些实施例中,考虑到当目标代理服务端直接发送请求参数至被调用端时,若被调用端因为正在处理其他业务而未及时响应,则可能造成通信耗时或者会被误认为被调用端存在故障,因此,为解决该问题,每一代理服务端还可以在被调用端所处的服务器中设置一代理服务进程,该代理服务进程专门用于收发对应代理服务端的通信数据;同时,考虑到传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其相对于http通信的方式更为稳定,因此,目标代理服务端可以与其对应的代理服务进程之间保持一目标TCP连接,基于该目标TCP连接发送接收到的序列化参数以及接收被调用端提供的响应参数。
此外,在该种实施方式中,为了使得被调用端可以及时接收到该序列化参数,以对该序列化参数进行反序列化处理,即,进行解包处理得到请求参数,与被调用端处于同一服务器的该代理服务进程可以基于共享内存的方式将接收到的序列化参数共享给被调用端,以进一步降低通信耗时。
根据以上说明可知,本公开实施例提供的该种应用于目标代理服务端的方法,通过基于专用网络连接通道向被调用端传输调用端发起的远程调用请求中的请求参数,可以尽可能降低远程调用的通信耗时。
请参看图6其为本公开实施例提供的又一种远程调用方法的流程图。该远程调用方法可以应用于被调用端,该被调用端例如可以为图2所示的被调用端103。
如图6所示,该远程调用方法可以包括如下步骤S601-S603:
步骤S601,接收目标代理服务端发送的序列化参数,其中,序列化参数是由调用端基于远程调用请求的请求参数生成的。
步骤S602,对序列化参数进行反序列化处理,获得请求参数,并根据请求参数生成响应参数。
可以理解的是,被调用对在对序列化参数进行反序列化处理时,其使用的反序列化协议是与调用端进行序列化处理时所使用的序列化协议相对应的协议。例如,在调用端使用Protocol Buffer协议进行序列化处理,则被调用端也需要使用Protocol Buffer协议进行反序列化处理。
步骤S603,将响应参数提供至目标代理服务端,其中,目标代理服务端用于将接收到的响应参数通过远程调用响应消息的方式提供至调用端,远程调用响应消息是由目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,序列化响应参数是由目标代理服务端对响应参数进行序列化处理后得到的。
该预设远程调用响应请求接口可以是基于RPC SDK得到的用于生成远程调用响应请求的接口。
即,被调用端在反序列化处理得到调用端发起的远程调用请求中的请求参数之后,即可执行对应的业务逻辑处理得到响应参数。例如,在远程调用请求为read远程文件内容的请求的情况下,请求参数可以为文件1的标识,被调用端得到文件1的标识后,获取文件1的文件内容生成响应参数,并将该响应参数提供至目标代理服务端。
在一些实施例中,在目标代理服务端是基于与被调用端处于同一服务器的代理服务进行以共享内存方式与被调用端之间共享请求参数时,被调用端也可以将响应参数以共享内存方式共享给该代理服务进程,该代理服务进程可以将该响应参数基于与目标代理服务端之间保持的目标TCP连接发送至调用端。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了远程调用装置、电子设备、计算机可读存储介质,上述均可用来实现本公开提供的对应远程调用方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
图7为本公开实施例提供的一种远程调用装置的框图。
参照图7,本公开实施例提供了一种远程调用装置,可以应用于调用端,该第一远程调用装置700包括:获取单元701、确定单元702、发送单元703以及接收单元704。
该获取单元701,用于获取待发起的远程调用请求的请求参数,其中,远程调用请求用于传输请求参数至被调用端,调用端和被调用端所处的地理位置不同。
该确定单元702,用于从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在调用端基于至少一个代理服务端分别与被调用端进行通信的情况下,目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与被调用端之间基于不同的专用网络连接通道连接。
该发送单元703,用于根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端。
该接收单元704,用于接收目标代理服务端返回的响应参数,其中,响应参数是目标代理服务端响应于远程调用请求将请求参数发送至被调用端之后,由被调用端生成并提供至目标代理服务端的,请求参数是目标代理服务端基于与被调用端之间的专用网络连接通道发送至被调用端的。
在一些实施例中,该确定单元702在从至少一个代理服务端中,确定待使用的目标代理服务端时,用于:获取与至少一个代理服务端对应的至少一个服务地址信息;根据至少一个服务地址信息,得到与至少一个代理服务端对应的至少一个代理客户端;根据至少一个代理客户端,分别发送通信探测请求包至对应的代理服务端,以及,接收至少一个代理服务端分别提供的、与通信探测请求包对应的通信探测响应包;其中,每一代理服务端用于将接收到的通信探测请求包基于对应的专用网络连接通道传输至被调用端,并接收被调用端生成并提供的通信探测响应包;根据每一通信探测请求包的发送时间和对应通信探测响应包的接收时间,获得与至少一个代理服务端对应的至少一个探测通信时长;将至少一个探测通信时长中,数值满足第一预设条件的探测通信时长所对应的代理服务端确定为目标代理服务端。
在一些实施例中该发送单元703在根据请求参数,生成远程调用请求,并将远程调用请求发送至目标代理服务端时,用于:对请求参数进行序列化处理,获得序列化参数;将序列化参数填充为预设远程调用请求接口的参数,生成远程调用请求;控制目标代理服务端对应的代理客户端将远程调用请求发送至目标代理服务端。
图8为本公开实施例提供的另一种远程调用装置的框图。
参照图8,本公开实施例提供了另一种远程调用装置,可以应用于目标代理服务端,该第二远程调用装置800包括:第一接收单元801、参数发送单元802以及第一参数提供单元803。
该第一接收单元801,用于接收调用端发送的远程调用请求,其中,远程调用请求用于传输请求参数至被调用端,目标代理服务端与被调用端之间基于专用网络连接通道连接。
该参数发送单元802,用于从远程调用请求中获取请求参数对应的序列化参数,并将序列化参数发送至被调用端。
该第一参数提供单元803,用于在接收到被调用端提供的、与请求参数对应的响应参数的情况下,将响应参数提供至调用端。
在一些实施例中,被调用端所处的服务器中设置有代理服务进程;该参数发送单元802在将序列化参数发送至被调用端时,用于:基于专用网络连接通道与代理服务进程之间建立目标传输控制协议连接;根据目标传输控制协议连接,将序列化参数发送至代理服务进程,其中,代理服务进程用于将接收到的序列化参数以共享内存的方式提供至被调用端。
图9为本公开实施例提供的又一种远程调用装置的框图。
参照图9,本公开实施例提供了又一种远程调用装置,可以应用于被调用端,该第三远程调用装置900包括:第二接收单元901、参数生成单元902以及第二参数提供单元903。
该第二接收单元901,用于接收目标代理服务端发送的序列化参数,其中,序列化参数是由调用端基于远程调用请求的请求参数生成的。
该参数生成单元902,用于对序列化参数进行反序列化处理,获得请求参数,并根据请求参数生成响应参数。
该第二参数提供单元903,用于将响应参数提供至目标代理服务端,其中,目标代理服务端用于将接收到的响应参数通过远程调用响应消息的方式提供至调用端,远程调用响应消息是由目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,序列化响应参数是由目标代理服务端对响应参数进行序列化处理后得到的。
图10为本公开实施例提供的一种电子设备的框图。
参照图10,本公开实施例提供了一种电子设备,该电子设备1000包括:至少一个处理器1001;至少一个存储器1002,以及一个或多个I/O接口1003,连接在处理器1001与存储器1002之间;其中,存储器1002存储有可被至少一个处理器1001执行的一个或多个计算机程序,一个或多个计算机程序被至少一个处理器1001执行,以使至少一个处理器1001能够执行上述的远程调用方法。
本公开实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其中,计算机程序在被处理器执行时实现上述的远程调用方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述的远程调用方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读存储介质上,计算机可读存储介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。
如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读程序指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、闪存或其他存储器技术、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读程序指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里所描述的计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。
Claims (10)
1.一种远程调用方法,其特征在于,应用于调用端,所述方法包括:
获取待发起的远程调用请求的请求参数,其中,所述远程调用请求用于传输所述请求参数至被调用端,所述调用端和所述被调用端所处的地理位置不同;
从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在所述调用端基于所述至少一个代理服务端分别与所述被调用端进行通信的情况下,所述目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与所述被调用端之间基于不同的专用网络连接通道连接;
根据所述请求参数,生成所述远程调用请求,并将所述远程调用请求发送至所述目标代理服务端;
接收所述目标代理服务端返回的响应参数,其中,所述响应参数是所述目标代理服务端响应于所述远程调用请求将所述请求参数发送至所述被调用端之后,由所述被调用端生成并提供至所述目标代理服务端的,所述请求参数是所述目标代理服务端基于与所述被调用端之间的专用网络连接通道发送至所述被调用端的。
2.根据权利要求1所述的方法,其特征在于,所述从至少一个代理服务端中,确定待使用的目标代理服务端,包括:
获取与所述至少一个代理服务端对应的至少一个服务地址信息;
根据所述至少一个服务地址信息,得到与所述至少一个代理服务端对应的至少一个代理客户端;
根据所述至少一个代理客户端,分别发送通信探测请求包至对应的代理服务端,以及,接收所述至少一个代理服务端分别提供的、与所述通信探测请求包对应的通信探测响应包;其中,每一代理服务端用于将接收到的通信探测请求包基于对应的专用网络连接通道传输至所述被调用端,并接收所述被调用端生成并提供的所述通信探测响应包;
根据每一通信探测请求包的发送时间和对应通信探测响应包的接收时间,获得与所述至少一个代理服务端对应的至少一个探测通信时长;
将所述至少一个探测通信时长中,数值满足第二预设条件的探测通信时长所对应的代理服务端确定为所述目标代理服务端。
3.根据权利要求2所述的方法,其特征在于,所述根据所述请求参数,生成所述远程调用请求,并将所述远程调用请求发送至所述目标代理服务端,包括:
对所述请求参数进行序列化处理,获得序列化参数;
将所述序列化参数填充为预设远程调用请求接口的参数,生成所述远程调用请求;
控制所述目标代理服务端对应的代理客户端将所述远程调用请求发送至所述目标代理服务端。
4.根据权利要求2所述的方法,其特征在于,在接收到所述响应参数之后,还包括:
在满足第三预设条件的情况下,清除与所述目标代理服务端对应的代理客户端。
5.一种远程调用方法,其特征在于,应用于目标代理服务端,所述方法包括:
接收调用端发送的远程调用请求,其中,所述远程调用请求用于传输请求参数至被调用端,所述目标代理服务端与所述被调用端之间基于专用网络连接通道连接;
从所述远程调用请求中获取所述请求参数对应的序列化参数,并将所述序列化参数发送至所述被调用端;
在接收到所述被调用端提供的、与所述请求参数对应的响应参数的情况下,将所述响应参数提供至所述调用端。
6.根据权利要求5所述的方法,其特征在于,所述被调用端所处的服务器中设置有代理服务进程;所述将所述序列化参数发送至所述被调用端,包括:
基于所述专用网络连接通道与所述代理服务进程之间建立目标传输控制协议连接;
根据所述目标传输控制协议连接,将所述序列化参数发送至所述代理服务进程,其中,所述代理服务进程用于将接收到的序列化参数以共享内存的方式提供至所述被调用端。
7.一种远程调用方法,其特征在于,应用于被调用端,其特征在于,包括:
接收目标代理服务端发送的序列化参数,其中,所述序列化参数是由所述调用端基于远程调用请求的请求参数生成的;
对所述序列化参数进行反序列化处理,获得所述请求参数,并根据所述请求参数生成响应参数;
将所述响应参数提供至所述目标代理服务端,其中,所述目标代理服务端用于将接收到的所述响应参数通过远程调用响应消息的方式提供至所述调用端,所述远程调用响应消息是由所述目标代理服务端通过将序列化响应参数填充为预设远程调用响应请求接口的参数得到的,所述序列化响应参数是由所述目标代理服务端对所述响应参数进行序列化处理后得到的。
8.一种远程调用装置,其特征在于,应用于调用端,所述装置包括:
获取单元,用于获取待发起的远程调用请求的请求参数,其中,所述远程调用请求用于传输所述请求参数至被调用端,所述调用端和所述被调用端所处的地理位置不同;
确定单元,用于从至少一个代理服务端中,确定待使用的目标代理服务端,其中,在所述调用端基于所述至少一个代理服务端分别与所述被调用端进行通信的情况下,所述目标代理服务端为所有代理服务端中通信耗时满足第一预设条件的代理服务端,每一代理服务端与所述被调用端之间基于不同的专用网络连通道连接;
发送单元,用于根据所述请求参数,生成所述远程调用请求,并将所述远程调用请求发送至所述目标代理服务端;
接收单元,用于接收所述目标代理服务端返回的响应参数,其中,所述响应参数是所述目标代理服务端响应于所述远程调用请求将所述请求参数发送至所述被调用端之后,由所述被调用端生成并提供至所述目标代理服务端的,所述请求参数是所述目标代理服务端基于与所述被调用端之间的专用网络连接通道发送至所述被调用端的。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的一个或多个计算机程序,一个或多个所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211412548.8A CN116155877A (zh) | 2022-11-11 | 2022-11-11 | 远程调用方法及装置、电子设备、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211412548.8A CN116155877A (zh) | 2022-11-11 | 2022-11-11 | 远程调用方法及装置、电子设备、计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116155877A true CN116155877A (zh) | 2023-05-23 |
Family
ID=86337864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211412548.8A Pending CN116155877A (zh) | 2022-11-11 | 2022-11-11 | 远程调用方法及装置、电子设备、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116155877A (zh) |
-
2022
- 2022-11-11 CN CN202211412548.8A patent/CN116155877A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7203444B2 (ja) | 代替サーバ名を使用する相互トランスポート層セキュリティを選択的に提供すること | |
CN104426800B (zh) | 用于在对等通信网络中管理消息队列的***和方法 | |
US20190132276A1 (en) | Unified event processing for data/event exchanges with existing systems | |
US20130275492A1 (en) | Enabling Web Clients to Provide Web Services | |
CN106657180B (zh) | 用于云服务的信息传输方法、装置、终端设备及*** | |
CN108833251B (zh) | 用于控制网络互联的方法和装置 | |
CN113259479B (zh) | 一种数据处理方法以及设备 | |
CN115516840A (zh) | 一种信息处理方法、设备、***、介质、芯片及程序 | |
CN111431730B (zh) | 一种业务处理方法、***、计算机设备及可读介质 | |
CN109857572B (zh) | 实现远程调用的方法、装置、设备及计算机可读存储介质 | |
CN114205342A (zh) | 服务调试的路由方法、电子设备、介质及程序产品 | |
JP2020198636A (ja) | 効率的な呼処理のためのシステムおよび方法 | |
CN110545230B (zh) | 用于转发vxlan报文的方法和装置 | |
CN116055524A (zh) | 用于互联网平台与物联网设备的交互方法、处理器及装置 | |
WO2017135254A1 (ja) | 端末、中継装置選択装置、通信方法、中継装置選択方法、及びプログラム | |
CN116155877A (zh) | 远程调用方法及装置、电子设备、计算机可读存储介质 | |
CN114338574B (zh) | 一种即时通讯方法、管理节点及*** | |
US9172607B2 (en) | Transmitting of configuration items within a network | |
CN115587860A (zh) | 业务处理方法、装置、存储介质及电子设备 | |
CN109375997A (zh) | 一种处理网络资源的方法、装置、设备及可读存储介质 | |
CN112929453A (zh) | 一种共享session数据的方法和装置 | |
CN114979128A (zh) | 跨区域通信方法、装置及电子设备 | |
CN111866144A (zh) | 一种服务请求响应方法、装置、fpga设备及存储介质 | |
US12074918B2 (en) | Network-based Media Processing (NBMP) workflow management through 5G Framework for Live Uplink Streaming (FLUS) control | |
CN114172946B (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 |