掌桥专利:专业的专利平台
掌桥专利
首页

一种信息调用方法、装置、设备及存储介质、程序产品

文献发布时间:2024-04-18 19:52:40


一种信息调用方法、装置、设备及存储介质、程序产品

技术领域

本申请涉及云技术,尤其涉及一种信息调用方法、装置、设备及存储介质、程序产品。

背景技术

目前,基于云技术,已经开发了各式各样的移动应用,例如游戏、直播应用等。这些应用通常借助于远程过程调用(Remote Procedure Call,RPC)来实现,例如游戏客户端调用游戏服务端来实现游戏功能等。然而,由于相关技术中的RPC框架是基于HTTP协议实现的,从而使得信息调用支持的协议种类较少。

发明内容

本申请实施例提供一种信息调用方法、装置、设备及计算机可读存储介质、程序产品,能够扩大信息调用支持的协议的种类。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种信息调用方法,包括:

通过请求服务侧响应请求端的调用请求,确定出目标调用信息,并基于所述目标调用信息和所述调用请求对应的请求对象,生成目标协议下的调用请求数据包;所述目标协议是多种协议中的任意一种协议,所述多种协议包括自定义协议;

通过网络传输服务,将所述调用请求数据包传输至响应服务侧;

通过所述响应服务侧对所述调用请求数据包解封装,得到所述目标调用信息和所述请求对象,并依据所述目标调用信息确定出对应的目标调用服务;

通过所述目标调用服务从所述目标调用信息中解析出目标请求标识,并将所述目标请求标识和所述请求对象传输至所述响应端,以使所述响应端生成对应的响应对象,实现信息调用。

本申请实施例提供一种信息调用装置,包括:。

数据生成模块,用于通过请求服务侧响应请求端的调用请求,确定出目标调用信息,并基于所述目标调用信息和所述调用请求对应的请求对象,生成目标协议下的调用请求数据包;所述目标协议是多种协议中的任意一种协议,所述多种协议包括自定义协议;

数据传输模块,用于通过网络传输服务,将所述调用请求数据包传输至响应服务侧;

数据解封模块,用于通过所述响应服务侧对所述调用请求数据包解封装,得到所述目标调用信息和所述请求对象,并依据所述目标调用信息确定出对应的目标调用服务;通过所述目标调用服务从所述目标调用信息中解析出目标请求标识;

所述数据传输模块,还用于将所述目标请求标识和所述请求对象传输至所述响应端,以使所述响应端生成对应的响应对象,实现信息调用。

在本申请的一些实施例中,所述目标协议包括:预设协议;所述数据生成模块,还用于将所述请求对象填充至所述预设协议的协议体中;将所述目标调用信息进行序列化,得到序列化数据,并将所述序列化数据填充至所述预设协议的协议头中;利用所述协议头和所述协议体,生成所述预设协议下的所述调用请求数据包。

在本申请的一些实施例中,所述数据传输模块,用于通过所述网络传输服务,从所述调用请求数据包中识别出通讯标识字段,并依据所述通讯标识字段确定出目标通讯方式;按照所述目标通讯方式,将所述调用请求数据包传输至所述响应服务侧。

在本申请的一些实施例中,所述请求端包括:服务端,所述响应端包括:客户端,所述响应服务侧包括:所述客户端的传输层,所述目标调用信息包括:所述客户端的会话标识;所述数据生成模块,还用于基于所述会话标识和所述请求对象,生成所述目标协议下的所述调用请求数据包;其中,所述会话标识是所述服务端从会话服务中查询得到的;

所述数据传输模块,还用于通过所述网络传输服务,将所述调用请求数据包发送给网络接入服务;通过所述网络接入服务,将所述调用请求数据包转发给所述客户端的传输层。

在本申请的一些实施例中,所述数据传输模块,还用于对所述调用请求数据包进行协议映射,得到映射数据包;其中,映射数据包为客户端所使用的传输协议下的数据包;将所述映射数据包发送给所述客户端的传输层。

在本申请的一些实施例中,所述请求端包括:客户端,所述响应端包括:服务端,所述响应服务侧包括:所述服务端的传输层;所述数据传输模块,还用于通过网络接入服务,对所述调用请求数据包进行协议转换,得到转换数据包;所述转换数据包为所述服务端所使用的传输协议下的数据包;通过所述网络传输服务,接收由所述网络接入服务发送的转换数据包,并将所述转换数据包传输至所述服务端的传输层。

在本申请的一些实施例中,所述数据生成模块,还用于通过响应服务侧,确定出目标响应信息,并基于所述目标响应信息和所述响应端生成的响应对象,生成所述目标协议下的调用响应数据包;

所述数据传输模块,还用于通过所述网络传输服务,将所述调用响应数据包传输至所述请求服务侧;

所述数据解封模块,还用于通过所述请求服务侧对所述调用响应数据包进行解析,得到所述目标响应信息和响应对象;

所述数据传输模块,还用于将所述响应对象返回给所述请求端。

本申请实施例提供一种信息调用设备,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的信息调用方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的信息调用方法。

本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的信息调用方法。

本申请实施例具有以下有益效果:信息调用设备可以基于从包含了自定义协议的多种协议中选择出的任意一种协议,生成调用请求数据包,并将调用请求数据包传输给响应服务侧,如此,信息调用设备能够支持多种协议,乃至自定义协议实现信息调用,扩大了信息调用支持的协议的种类。

附图说明

图1是本申请实施例提供的信息调用系统的架构示意图;

图2是本申请实施例提供图1中的服务器的结构示意图;

图3是本申请实施例提供的信息调用方法的流程示意图一;

图4是本申请实施例提供的信息调用方法的流程示意图二;

图5是本申请实施例提供的预设协议的协议头的格式示意图;

图6是本申请实施例提供的不包含网络层的跨平台的RPC框架的示意图;

图7是本申请实施例提供的请求流程的示意图;

图8是本申请实施例提供的响应流程的示意图;

图9是本申请实施例提供的编解码基类的处理过程示意图;

图10是本申请实施例提供的客户端发送请求到服务端的示意图;

图11是本申请实施例提供的服务端发送请求到客户端的示意图;

图12是本申请实施例提供的多种网络通讯方式的示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、存储、处理和共享的一种托管技术。

云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标识,都需要传输到后台系统进行逻辑处理。不同程度界别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

2)远程过程调用(Remote Procedure Call,RPC)简单的理解是一个节点请求另一个节点提供服务的过程。

3)网络层,是开发系统互联通信参考(Open System Interconnection ReferenceModel,OSI)模型中的第三层,提供路由和寻址的功能,使两个终端系统能够互联且决定最佳路径,并且具有一定的拥塞控制和流量控制能力。

4)跨平台,是指软件应用既不依赖于操作系统,也不依赖于硬件环境,一个操作系统下开发的应用,在另一个操作系统下也能运行。

5)埋点,是指在正常的逻辑功能中添加统计逻辑,以采集数据,即为了查看程序执行到哪一步。

目前,基于云技术,已经开发了各式各样的移动应用,例如游戏、直播应用等。这些应用通常借助于远程过程调用(Remote Procedure Call,RPC)来实现,例如游戏客户端调用游戏服务端来实现游戏功能等。相关技术的RPC框架中,大多是面向超文本传输(HyperText Transfer Protocol,HTTP)协议设计的。然而,在实际使用中,除了客户端调用服务端之外,还存在服务端调用客户端,乃至服务端调用其他的服务端的情况,这些交互并不一定是基于HTT P协议实现的,而是基于其他协议,乃至是自定义协议实现的,利用相关技术中的RPC框架无法实现,从而使得信息调用支持的协议种类较少。

进一步的,对于游戏应用,还存在着后端调用前端的过程,而相关技术中的RPC框架,只支持由客户端调用服务端,不支持前后端任意互调,从而使得信息调用适用的场景较少。再进一步的,相关技术中的RPC框架在底层都是通过传输控制协议(TransmissionControl Protocol,TCP)/网际互连协议(Inter net Protocol,IP)进行传输的,从而使得信息调用在底层时不支持其他的传输形式。

本申请实施例提供一种信息调用方法、装置、设备和计算机可读存储介质、程序产品,能够扩大信息调用支持的协议种类。下面说明本申请实施例提供的信息调用设备的示例性应用,本申请实施例提供的信息调用设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明信息调用设备实施为服务器时的示例性应用。

参见图1,图1是本申请实施例提供的信息调用系统的架构示意图,为实现支撑一个信息调用应用,在信息调用系统100中,客户端400通过网络300连接服务器200,服务器200与服务端500相连,网络300可以是广域网或者局域网,又或者是二者的组合。

客户端400(请求端)用于响应用户在图形界面410上的操作,生成调用请求,并将调用请求发送给服务器200。

服务器200通过请求服务侧响应客户端400的调用请求,确定出目标调用信息,并基于目标调用信息和调用请求对应的请求对象,生成目标协议下的调用请求数据包;目标协议是从多种协议中的任意一种协议,多种协议包括自定义协议;通过网络传输服务,将调用请求数据包传输至响应服务侧;通过响应服务侧对调用请求数据包进行解封装,得到目标调用信息和请求对象,并依据目标调用信息确定出对应的目标调用服务;通过目标调用服务从目标调用信息中解析出目标请求标识,并将将目标请求标识和请求对象传输至服务端500(响应端),以使服务端500生成响应对象。

在一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。客户端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。

参见图2,图2是本申请实施例提供图1中的服务器的结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。服务器200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。

处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。

存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memor y)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。

在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(Wi-Fi)、和通用串行总线(USB,Universal Serial Bus)等;

呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);

输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的信息调用装置可以采用软件方式实现,图2示出了存储在存储器250中的信息调用装置255,其可以是程序和插件等形式的软件,包括以下软件模块:数据生成模块2551、数据传输模块2552和数据解封模块2553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的信息调用装置可以采用硬件方式实现,作为示例,本申请实施例提供的信息调用装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的信息调用方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Progra mmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmabl e Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。

在一些实施例中,终端或服务器可以通过运行计算机程序来实现本申请实施例提供的权限发放方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(Native)应用程序(APP,Application),即需要在操作系统中安装才能运行的程序,如信息调用APP;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意APP中的小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。

本申请实施例可以应用于云技术、人工智能、智慧交通、车载等各种场景。下面,将结合本申请实施例提供的信息调用设备的示例性应用和实施,说明本申请实施例提供的信息调用方法。

参见图3,图3是本申请实施例提供的信息调用方法的流程示意图一,将结合图3示出的步骤进行说明。

S101、通过请求服务侧响应请求端的调用请求,确定出目标调用信息,并基于目标调用信息和调用请求对应的请求对象,生成目标协议下的调用请求数据包。

本申请实施例是在请求端调用响应端以实现请求端所需要的服务的场景下实现的,例如,游戏客户端调用游戏后台的以实现登录,或者是游戏后台调用游戏客户端以更新其他游戏客户端的游戏数据等场景。信息调用设备会先通过请求服务侧,接收请求端所发送的调用请求,并响应该调用请求,确定出请求端的目标调用信息,然后将目标调用信息和调用请求所对应的请求对象,按照目标协议进行打包,得到调用请求数据包。

需要说明的是,目标协议是多种协议中的任意一种协议,多种协议包括自定义协议。也就是说,本申请实施例中,信息调用设备支持多种协议,用户可以从多种协议中任选一种作为通信协议,而不局限于HTTP协议,并且,多种协议中还可以包含自定义协议,从而还支持利用自定义协议来实现信息调用的过程。

本申请实施例中,信息调用设备对协议类进行了封装,将协议类变成一个抽闲的基类,用户可以在定义格式时实现这个基类,以实现自定义协议。

可以理解的是,目标调用信息是从请求端的调用请求中解析出来的,也可以是信息调用设备依据调用请求中的字段所生成的,本申请在此不作限定。

请求对象中封装了请求端发送的所有请求数据。目标调用信息是基于请求端所要调用的服务、函数所生成的信息,属于调用请求的上下文信息。

请求服务侧是信息调用设备中负责针对请求端的数据进行处理的各个服务的统称,请求服务侧中可以包括通过RPC生成的客户端类(这个类可以由用户实现)、基于RPC的客户端模板类、RPC客户端层、客户端传输层等。

本申请实施例中,请求端可以是客户端,也可以是服务端。

S102、通过网络传输服务,将调用请求数据包传输至响应服务侧。

信息调用设备通过请求服务侧将生成的调用请求数据包发送给网络传输服务,然后通过网络传输服务将调用请求数据包转发给响应服务侧,以便于响应服务侧进行处理。

可以理解的是,响应服务侧是信息调用设备中负责对响应端的数据进行处理的各个服务的统称,响应服务侧可以包括通过RPC生成的服务端类(可以由用户实现)、基于RPC的服务端模板类、RPC服务端层、服务端传输层等。

S103、通过响应服务侧对调用请求数据包解封装,得到目标调用信息和请求对象,并依据目标调用信息确定出对应的目标调用服务。

信息调用设备通过响应服务侧,对调用请求数据包进行解包,以从中提取出目标调用信息和请求对象,根据目标调用信息确定出请求端想要调用的目标调用服务。

可以理解的是,信息调用设备可以通过响应服务侧,从调用请求数据包中解析出目标调用服务,即上下文信息,然后依据上下文信息中所记录的想要调用的服务的名称,确定出目标调用服务,或者是依据上下文信息中请求端想要调用的函数的名称,然后依据该函数的名称所囊括的服务名称,或者查找存在该函数的服务的,确定出目标调用服务。

S104、通过目标调用服务从目标调用信息中解析出目标请求标识,并将目标请求标识和请求对象传输至响应端,以使响应端生成对应的响应对象,实现信息调用。

信息传输设备在确定出目标调用服务之后,就会利用目标调用服务继续对目标调用信息进行解包,以得到请求端的调用请求所对应的目标请求标识,即明确请求端的请求的目的,然后再将目标请求标识和请求对象发送给响应端,以便于响应端针对请求对象进行目标请求标识所对应的处理,得到响应对象。

需要说明的是,目标请求标识可以是请求端想要调用的函数的名称,也可以是请求端的标识信息(例如,特定的请求端会调用特定的函数)。

本申请实施例中,响应端可以是客户端,也可以是服务端。

可以理解的是,相比于相关技术中基于HTTP协议实现信息调用的过程,本申请实施例中的信息调用设备可以基于从包含了自定义协议的多种协议中选择出的任意一种协议,生成调用请求数据包,并将调用请求数据包传输给响应服务侧,如此,信息调用设备能够支持多种协议,乃至自定义协议实现信息调用,扩大了信息调用支持的协议的种类。

基于图3,参见图4,图4是本申请实施例提供的信息调用方法的流程示意图二。在本申请的一些实施例中,目标协议包括:预设协议,基于目标调用信息和所述请求对象,生成目标协议下的调用请求数据包,即S101的具体实现过程,可以包括:S1011-S1013,如下:

S1011、将请求对象填充至预设协议的协议体中。

信息调用设备可以通过请求服务侧直接将请求对象填充到预设协议的协议体中,也可以将请求对象打包为缓存数据,然后再将缓存数据填充至预设协议的协议体中,其中,缓存数据可以为对象简谱(Json)格式的,也可以为结构化数据(PB)格式的。本申请在此不作限定。

S1012、将目标调用信息进行序列化,得到序列化数据,并将序列化数据填充至预设协议的协议头中。

信息调用设备将目标调用信息进行序列化处理,将所得到的序列化数据填充到预设协议的协议头中的请求体数据字段中,从而得到填充了数据的协议头。

可以理解的是,在预设协议的协议头中,除了请求体数据字段之外,还包括了帧头(填充预设协议的必要信息,例如响应端的物理地址以及其他网络信息)、魔数(表征本次是请求还是响应)、流标识、保留字段等等。

示例性的,图5是本申请实施例提供的预设协议的协议头的格式示意图。预设协议的协议头由16字节的帧头5-1、2字节的魔数5-2、2字节的请求包头或响应包头的大小5-3、2字节的请求体或响应体的二进制数据5-4、2字节的流ID5-5和2字节的保留字段5-6组成。其中,请求体或响应体的二进制数据5-4,是由固定头5-41、请求包头或响应包头5-42和序列化数据5-43组成。

在一些实施例中,预设协议可以是自定义的协议,也可以是信息调用设备中的默认协议,例如专门为RPC设置的协议等等,本申请在此不作限定。

S1013、利用协议头和协议体,生成预设协议下的调用请求数据包。

信息调用设备在得到协议头和协议体之后,可以直接将协议头和协议体进行打包,得到预设协议下的调用数据包。

本申请实施例中,当目标协议包括预设协议时,信息调用设备可以通过将请求对象填充至协议体,将目标调用信息的序列化数据填充到协议头中,得到预设协议下的调用数据包,以便于后续传输调用数据包。

在本申请的一些实施例中,通过网络传输服务,将调用请求数据包传输至响应服务侧,即S102的具体实现过程,可以包括:S1021-S1022,如下:

S1021、通过网络传输服务,从调用请求数据包中识别出通讯标识字段,并依据通信标识字段确定出目标通讯方式。

信息调用设备在将调用请求数据包从请求服务侧发送给网络传输服务之后,会通过网络传输服务对调用请求数据包中的通讯标识字段进行识别,然后根据识别出的通信标识字段确定出调用请求数据包需要以何种方式传输到响应服务侧。

可以理解的是,请求服务侧在生成调用请求数据包时,可以通过给调用请求数据包中写入通信标识字段,来告知网络传输服务其需要通过哪种通讯方式进行发送,以便于网络传输服务能够在传输调用请求数据包时进行选路。

也就是说,本申请实施例中,网络传输服务并不依赖与某种特定的网络层来传输调用请求数据包,从而实现了网络层的可插拔,针对调用请求数据包实现了多种通信方式。

S1022、按照目标通讯方式,将调用请求数据包传输至响应服务侧。

信息调用设备通过网络传输服务确定出目标通信方式之后,就会按照目标通信方式将调用请求数据包发送给响应服务侧。

可以理解的是,目标通讯方式可以是信息调用设备预设的通讯方式,也可以是TCP/IP通讯,还可以是G6Connector、LuaNet等,本申请在此不作限定。

本申请实施例中,信息调用设备还能够通过网络传输服务识别出通讯标识字段,然后依据通讯标识字段针对调用请求数据包确定出目标通讯方式,并利用目标通讯方式将调用请求数据包传输至响应服务侧。如此,调用请求数据包的传输不依赖特定的网络层,实现了网络层可插拔和传输选路,从而能够通过多种通讯方式传输数据。

在本申请的一些实施例中,请求端包括:服务端,响应端包括:客户端,响应服务侧包括:客户端的传输层,目标调用信息包括:客户端的会话标识,此时,基于目标调用信息和请求对象,生成目标协议下的调用请求数据包,即S101的具体实现过程,可以包括:S1014,如下:

S1014、基于会话标识和请求对象,生成目标协议下的调用请求数据包。

可以理解的是,会话标识是服务端在客户端首次登录时为客户端所分配的,能够表示客户端的身份的标识。本申请实施例中,服务端会从存储了不同会话的会话服务中查询出想要调用的客户端的会话标识,即会话标识是服务端从会话服务中查询得到的,然后将会话标识和请求对象按照目标协议进行打包,得到调用请求数据包,以便于通过调用请求数据包实现服务端对客户端的调用。

此时,通过网络传输服务,将调用请求数据包传输至响应服务侧,即S102的具体实现过程可以包括:S201-S202,如下:

S201、通过网络传输服务,将调用请求数据包发送给网络接入服务。

需要说明的是,网络接入服务是针对服务端提供的统一的网络接入,以通过该统一的网络接入实现各种功能特性,例如当服务端为游戏后台服务时,就会通过网络接入端实现游戏的登录、重连、退出、加解密、解压缩、心跳等功能特性。

会话服务用于提供全局的连接会话管理能力,客户端与服务端通信的会话都会存储在会话服务中。

S202、通过网络接入服务,将调用请求数据包转发给客户端的传输层。

信息调用设备通过网络接入服务,将调用请求数据包转发给响应服务侧中的客户端的传输层,以通过客户端的传输层对调用请求数据包进行解包等操作,将最终的请求对象传输给客户端,实现对客户端的调用。

本申请实施例中,信息调用设备能够借助于会话标识,实现服务端对客户端的调用,从而能够实现客户端和服务端的任意互调,使得信息调用的适应场景得以扩大。

在本申请的一些实施例中,将调用请求数据包转发给客户端的传输层,即S202的具体实现过程,可以包括:S2021-S2022,如下:

S2021、对调用请求数据包进行协议映射,得到映射数据包。

其中,映射数据包为客户端所使用的传输协议下的数据包。

S2022、将映射数据包发送给客户端的传输层。

本申请实施例中,客户端在通讯时所使用的传输协议是有限的,只能通过一种或多种特定的传输协议才能进行通讯,而服务端所使用的传输协议则是多种多样的。为了能够成功地将调用请求数据包发送给客户端的传输层,信息调用设备会通过网络接入服务,对调用请求数据包进行协议映射,以将调用请求数据包转换到客户端所使用的传输协议下的数据包,即得到映射数据包,然后将映射数据包发送给客户端的传输层。

例如,当客户端只能通过TCP/IP协议通讯时,信息调用设备就是通过网络接入服务将调用请求数据包转换为TPC/IP协议下的映射数据包,然后再发送给客户端的传输层。

本申请实施例中,信息调用设备可以通过网络接入服务对调用请求数据包进行协议映射,以得到能够传输给客户端的映射数据包,从而保证调用请求数据包能够成功发送给客户端的传输层。

在本申请的一些实施例中,请求端包括:客户端,响应端包括:服务端,响应服务侧包括:服务端的传输层,此时,通过网络传输服务,将调用请求数据包传输至响应服务侧,即S102的具体实现过程,可以包括:S203-S204,如下:

S203、通过网络接入服务,对调用请求数据包进行协议转换,得到转换数据包。

其中,转换数据包为服务端所使用的传输协议下的数据包。

S204、通过网络传输服务,接收由网络接入服务发送的转换数据包,并将转换数据包传输至服务端的传输层。

本申请实施例中,当请求端包括客户端,响应端包括服务端时,信息调用设备通过网络传输服务将调用请求数据包发送到服务端的传输层时,也需要通过网络接入服务,将调用请求数据包转换到服务端所使用的传输协议下,得到转换数据包,然后才会通过网络传输服务继续将转换数据包发送给服务端的传输层。

本申请实施例中,信息调用设备会能够先通过网络接入服务来接收调用请求数据包,然后将调用请求数据包进行映射,以使得服务端的传输层能够得到与其所使用的传输协议相对应的转换数据包。

在本申请的一些实施例中,将目标请求标识和所述请求对象传输至响应端之后,即在S104之后,该方法还可以包括:S105-S107,如下:

S105、通过响应服务侧,确定出目标响应信息,并基于目标响应信息和响应端生成的响应对象,生成目标协议下的调用响应数据包。

信息调用设备先通过响应服务侧,针对调用请求数据包生成目标响应信息,并结合目标响应信息和响应端针对请求对象所生成的响应对象,生成目标协议下的调用响应数据包。

S106、通过网络传输服务,将调用响应数据包传输至请求服务侧。

信息调用设备通过网络传输服务,将调用响应数据包原路返回至请求服务侧。

S107、通过请求服务侧对调用响应数据包进行解析,得到目标响应信息和响应对象,并将响应对象返回给请求端。

最后,信息调用设备通过请求服务侧对调用响应数据包进行解包,取得请求标识,然后依据请求标识恢复激活下文,根据回复的请求下文从响应数据包中再解析出目标响应信息,根据模板解析出响应对象,并返回响应对象给请求端。

可以理解的是,响应对象中包含了响应端针对请求对象所生成的各种数据。

本申请实施例中,信息调用设备还能够对响应端所生成的响应对象返回给请求端,以使得请求端能够得到响应对象。

在本申请的一些实施例中,在通过信息调用设备实现请求端和服务端的通讯之前,还需要先定义请求端与服务端的交流个数,即定义序列化的数据格式。同时,还需要定义服务实例格式、定义数据访问类等等。

下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。

本申请实施例是基于在不包含网络层的跨平台的RPC框架实现信息调用的过程,其中,服务端可以用于微服务框架、游戏框架中,客户端可以用于游戏前端框架中。

首先,需要定义调用过程:

1、客户端与服务端如何交流是在.proto文件中定义的。message定义了交流的数据格式,即定义了要序列化的数据格式,扩展名为.proto;协议缓存(Pr otocol buffer)以消息的形式格式化,每个消息都是一个小的逻辑信息。代码如下:

2、定义服务实例格式server.service,例如,helloworld.Greeter,定义数据访问类。这些类为每个字段提供了简单的访问器,所以Greeter就是提供数据访问的类,用户继承该类,实现被调函数SayHello。代码如下:

3、客户端发送rpc请求,创建ClientContext,填充必要的Context信息,然后再去填充自定义protocol后调用发送接口完成发送。

4、在数据访问类Greeter,也就是RCPService桩(通过RPC生成的server类,用户实现这个类,以及被调的函数)的构造函数,从而将被调函数SayHel lo添加到RPCService中,这样客户端的请求传输到服务端的传输层时,才能找到被调函数,所有的想要被调的函数,都会加载到RPCService。

图6是本申请实施例提供的不包含网络层的跨平台的RPC框架的示意图,参见图6,不包含网络层的跨平台的RPC框架6-1中,包括了RPC接口6-11、RPCClient桩(通过RPC生成的Client类,用户来实现这个类,即写自己的实现)6-12、自定义过滤器6-13(User Filter,用户自定义的Filter,这样可以使得用户在任何地方上报、打印数据)、RCPService桩6-14、轻量RPC(RPC Li te)6-15、Lua库(Lua Lib)6-16、RPCCllient6-17、过滤器6-18、RPCService6-19、协议(Protocol)6-110、客户端传输层(Client Transport)6-111、服务端传输层(Server Transport)6-112、网络传输层(Net Transport)6-113、选路器(NetAdaptor)6-114。

图7是本申请实施例提供的请求流程的示意图。结合图7,对请求流程进行说明:

S71-S73中,RPCClient桩调用来自RPCClientImpl的模板方法,填充必要的上下文(Context)信息(目标调用信息),例如目标服务名称,将客户端的请求对象(Request对象)打包为缓冲区填充到协议(Protocol)的协议体(Bo dy)中,然后调用RPCClient。

S74、RPCClient层将上下文信息序列化到协议的协议头,在这个过程中根据过滤器的埋点调用过滤器,例如发送请求前、发送请求后。

S75、RPCClient层调用客户端传输层同步或异步接口发送请求。

S76、客户端传输层为请求分配ID后调用协议打包生成数据包(调用请求数据包),并通过网络传输层发送。

S77、网络传输层根据选路器进行选路,并发送数据包,服务端侧(响应服务侧)接收请求后将数据包递交给服务器传输层。

S78、服务器传输层解包后取得客户端调用的函数名称,根据函数名称中的RPCService名选择对应的RPCService(目标调用服务)并调用。

S79-S711、RCPService将协议中的上下文信息解包,并根据函数名称调用对应的RCPService中的桩函数,期间根据过滤器的埋点调用过滤器,生成的桩代码中包括协议中的协议体解包为请求对象。

S712、如果在RPCServiceImpl中找不到处理方式,转到基类。最终,会通过RPCService桩将请求对象传输给服务端。

图8是本申请实施例提供的响应流程的示意图。结合图8,对响应流程进行说明:

S81-S84,RPCService桩根据RPCServiceImpl的模板参数将响应(Respons e)对象打包到协议的协议体中,将上下文(目标响应信息)打包到协议头中。

S85、在RPCService层调用服务器传输层的发包接口。

S86、服务器传输层根据协议打包生成数据包后通过网络传输层发送。

S87、网络传输层根据请求来源信息将数据包原路返回,客户端侧(请求服务侧)收到数据包包(调用响应数据包)后将数据包递交给客户端传输层。

S88-S810、客户端传输层解包后取得请求ID,根据请求ID找到请求的向下文信息,激活下文(协议Resume、异步Promise设置结果)。

S811-S812、RPCClient根据回复的请求下文从数据包中解出上下文信息、根据模板方法从协议的协议体中解出响应对象,从接口中返回。

下面,对本申请实施例提供的不包含网络层的跨平台的RPC框架的特性进行说明。

1、支持多种协议:

相关技术中的RPC框架使用的大多是HTTP协议,HTTP协议规定多,而且对于服务端调用服务端,会存在多余的协议头,从而,针对这种情况,采用插件化的思想,对协议类进行封装,即将协议类转变成一个抽象的基类,用户可以通过自己实现基类,来设计自定义协议。

自定义协议中可以只包含必须的字段,例如主调服务名称、被调服务名称、调用服务接口等。自定义协议可以在定义格式是实现。

对于不同的协议,其编解码的方式也是完全不同的,与自定义协议的思想相类似,本申请实施例抽象出一个编解码基类,不同协议的编解码只需要通过这个基类实现即可。

示例性的,图9是本申请实施例提供的编解码基类的处理过程示意图。编解码基类解析协议9-1,以针对服务端找到被调函数9-2,然后服务端执行被调函数逻辑9-3,得到返回对象9-4,再基于编码协议9-5生成返回对象。

在此过程中,序列化处理会将请求对象打包为Buffer填充到协议体中,一般是PB、Json格式,编解码负责将上下文编码之后放到协议头。在PRC请求的包头利包含有mseeage_type字段,以设置序列化类型。

2、双向互通:

本申请实施例中,引入会话服务(Session Server)和接入服务(Gate Ser ver,网络接入服务)来实现双向互通。其中,会话服务提供全局的会话管理功能,包括客户端与服务端通信的会话都会存储在会话功能上,接入服务为服务端提供统一的网络接入,接入(Gate)包括游戏的登录、重连、退出、业务上下行包、加解密、解压缩、心跳等功能特性。

客户端向服务端发送消息,以及服务端向客户端发送消息,都需要通过接入服务。这是由于:客户端只能通过TCP协议和服务端通信,而服务端内部可以自定义协议进行通讯,从而利用接入服务能够将协议进行转换,以为服务端提供统一的网络接入。

进一步的,本申请实施例是通过从会话服务中查询会话ID(会话标识)来实现双向互通的。

示例性的,图10是本申请实施例提供的客户端发送请求到服务端的示意图。首先,客户端10-1发送rpc请求时,是先发送到接入服务10-2上,这段rpc请求底层是通过TCP/IP协议实现的;接入服务10-2通过传输的数据包,明确是哪个服务,再把请求发到响应的服务端10-3上,这段rpc请求是通过其他协议实现的(将转换数据包传输至服务端的传输层);服务端10-3去会话服务10-4上查询会话ID,会话服务10-4返回查询结果给服务端10-3,若是会话ID不存在,且客户端10-1是登录操作,服务端10-4会生成新的会话ID,并存储到会话服务,并在响应客户端10-1的首次登录操作,将会话ID也发送给客户端10-1,这样下次客户端10-1再发请求时,就会携带着会话ID。

示例性的,图11是本申请实施例提供的服务端发送请求到客户端的示意图。首先,服务端11-1发送rpc请求时,会先去会话服务11-2上查询会话ID,该会话ID是客户端带过去的,会话服务11-2返回查询结果。若是服务端11-1从会话服务11-2查询到了会话结果,就会向接入服务11-3发送rpc请求(实质上就是调用请求数据包),此时的rpc请求是通过其他协议实现的。由于客户端11-4只能通过TPC/IP协议通讯,而服务端11-1可以通过多种协议通讯,所以接入服务11-3会进行映射的过程,将其他协议的rpc请求映射为TCP/IP协议的rpc请求(映射数据包),再将rpc请求发送给客户端11-4,即通过TCP/IP行驶发送给客户端11-4。

3、支持多种网络通讯方式:

本申请实施例中的不包含网络层的跨平台的RPC框架不会依赖于具体的某种网络层实现,其具体是在网络层抽闲出异步的收发接口,例如基类网络传输层(NetTransport),通过NetTransport对接网络层提供发送能力,用户只需要通过实现NetTransport基类中的sendMessage函数,然后调用自己的网络通讯接口将数据发送出现。也就是说,在本申请的rpc框架的传输层中,分为了客户端传输层和服务端传输层,但是最后在发送数据的时候,都是通过调用Net Transport基类中的sendMessage函数实现的。同时,在网络上传输的数据包中具有一个字段flag(通讯标识字段),来确定出选路的方式,当支持选路时,用户可以填写flage字段,以指定路径,从而NetTransport解析flag字段来选择合适的方式(目标通信方式)来进行发送。

示例性的,图12是本申请实施例提供的多种网络通讯方式的示意图。客户端传输层12-1和服务端传输层12-2均需要通过网络传输层12-3来实现数据的发送,而网络传输层12-3可以根据解析flag字段,确定从默认方式12-41、用于前端的G6连接12-42、TCP传输12-43和LuaNet12-44中筛选出合适的方式进行数据传输。

通过上述实现方式,本申请实施例可以支持多种协议,特别是自定义协议实现信息调用,支持的协议种类增多,并且服务端可以在任意时刻调用客户端,例如在规则有变化时,通知其余玩家,信息调用的场景得以扩大,同时网络通讯方式可插拔,以便于支持其他的传输形式,能够用于到不同的游戏客户端引擎、服务端和脚本框架中。

下面继续说明本申请实施例提供的信息调用装置255的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器250的信息调用装置255中的软件模块可以包括:

数据生成模块2551,用于通过请求服务侧响应请求端的调用请求,确定出目标调用信息,并基于所述目标调用信息和所述调用请求对应的请求对象,生成目标协议下的调用请求数据包;所述目标协议是多种协议中的任意一种协议,所述多种协议包括自定义协议;

数据传输模块2552,用于通过网络传输服务,将所述调用请求数据包传输至响应服务侧;

数据解封模块2553,用于通过所述响应服务侧对所述调用请求数据包解封装,得到所述目标调用信息和所述请求对象,并依据所述目标调用信息确定出对应的目标调用服务;通过所述目标调用服务从所述目标调用信息中解析出目标请求标识;

所述数据传输模块2552,还用于将所述目标请求标识和所述请求对象传输至所述响应端,以使所述响应端生成对应的响应对象,实现信息调用。

在本申请的一些实施例中,所述目标协议包括:预设协议;所述数据生成模块2551,还用于将所述请求对象填充至所述预设协议的协议体中;将所述目标调用信息进行序列化,得到序列化数据,并将所述序列化数据填充至所述预设协议的协议头中;利用所述协议头和所述协议体,生成所述预设协议下的所述调用请求数据包。

在本申请的一些实施例中,所述数据传输模块2552,用于通过所述网络传输服务,从所述调用请求数据包中识别出通讯标识字段,并依据所述通讯标识字段确定出目标通讯方式;按照所述目标通讯方式,将所述调用请求数据包传输至所述响应服务侧。

在本申请的一些实施例中,所述请求端包括:服务端,所述响应端包括:客户端,所述响应服务侧包括:所述客户端的传输层,所述目标调用信息包括:所述客户端的会话标识;所述数据生成模块2551,还用于基于所述会话标识和所述请求对象,生成所述目标协议下的所述调用请求数据包;其中,所述会话标识是所述服务端从会话服务中查询得到的;

所述数据传输模块2552,还用于通过所述网络传输服务,将所述调用请求数据包发送给网络接入服务;通过所述网络接入服务,将所述调用请求数据包转发给所述客户端的传输层。

在本申请的一些实施例中,所述数据传输模块2552,还用于对所述调用请求数据包进行协议映射,得到映射数据包;其中,映射数据包为客户端所使用的传输协议下的数据包;将所述映射数据包发送给所述客户端的传输层。

在本申请的一些实施例中,所述请求端包括:客户端,所述响应端包括:服务端,所述响应服务侧包括:所述服务端的传输层;所述数据传输模块2552,还用于通过网络接入服务,对所述调用请求数据包进行协议转换,得到转换数据包;所述转换数据包为所述服务端所使用的传输协议下的数据包;通过所述网络传输服务,接收由所述网络接入服务发送的转换数据包,并将所述转换数据包传输至所述服务端的传输层。

在本申请的一些实施例中,所述数据生成模块2551,还用于通过响应服务侧,确定出目标响应信息,并基于所述目标响应信息和所述响应端生成的响应对象,生成所述目标协议下的调用响应数据包;

所述数据传输模块2552,还用于通过所述网络传输服务,将所述调用响应数据包传输至所述请求服务侧;

所述数据解封模块2553,还用于通过所述请求服务侧对所述调用响应数据包进行解析,得到所述目标响应信息和响应对象;

所述数据传输模块2552,还用于将所述响应对象返回给所述请求端。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的信息调用方法。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的信息调用方法,例如,如图3示出的信息调用方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备(上述的信息调用设备)上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

综上所述,通过本申请实施例,可以基于从包含了自定义协议的多种协议中选择出的任意一种协议,生成调用请求数据包,并将调用请求数据包传输给响应服务侧,如此,信息调用设备能够支持多种协议,乃至自定义协议实现信息调用,提升了信息调用支持的协议的种类;能够借助于会话标识,实现服务端对客户端的调用,从而能够实现客户端和服务端的任意互调,使得信息调用的适应场景得以扩大;调用请求数据包的传输不依赖特定的网络层,实现了网络层可插拔和传输选路。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

相关技术
  • 接口调用方法、装置、计算机设备和存储介质
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 目标检测方法和装置、电子设备、存储介质、程序产品
  • 行人再识别方法和装置、电子设备、存储介质、程序产品
  • 服务调用方法、装置、电子设备、存储介质及程序产品
  • 核函数调用方法、装置、设备、存储介质和程序产品
技术分类

06120116334990