一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、装置、电子设备及计算机可读介质与流程

2022-10-26 03:38:08 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,更具体地,涉及一种数据处理方法、装置、电子设备及计算机可读介质。


背景技术:

2.现代的操作系统是构建在远程过程调用(remote procedure call,rpc)机制下,通过它实现了客户端程序与服务程序的交互,进而实现了各种各样的系统级功能,如播放音乐,界面刷新等。但是,在rpc访问的数据量过大或次数过多的情况下,容易导致操作系统的性能降低。


技术实现要素:

3.本技术提出了一种数据处理方法、装置、电子设备及计算机可读介质,以改善上述缺陷。
4.第一方面,本技术实施例提供了一种数据处理方法,应用于电子设备的客户端,所述电子设备还包括服务端和共享内存,所述方法包括:获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据;在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据,所述共享内存预先存储有所述服务端存放的支持通过远程过程调用机制获取的数据;若所述共享内存中存在所述目标数据,从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
5.第二方面,本技术实施例还提供了一种数据处理方法,应用于电子设备的服务端,所述电子设备还包括客户端和共享内存,所述方法包括:获取支持通过远程过程调用机制获取的待获取数据;将所述待获取数据存储至所述共享内存,所述共享内存内的数据用于所述客户端在通过远程过程调用机制向所述服务端发送目标指令之前被查询并获取,其中,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
6.第三方面,本技术实施例还提供了一种数据处理装置,应用于电子设备的客户端,所述电子设备还包括服务端和共享内存,所述装置包括:获取单元、确定单元和读取单元,获取单元,用于获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。确定单元,用于在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据,所述共享内存预先存储有所述服务端存放的支持通过远程过程调用机制获取的数据。读取单元,用于若所述共享内存中存在所述目标数据,从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
7.第四方面,本技术实施例还提供了一种数据处理装置,应用于电子设备的服务端,所述电子设备还包括客户端和共享内存,所述装置包括:获取单元和共享单元。获取单元,
用于获取支持通过远程过程调用机制获取的待获取数据。共享单元,用于将所述待获取数据存储至所述共享内存,所述共享内存内的数据用于所述客户端在通过远程过程调用机制向所述服务端发送目标指令之前被查询并获取,其中,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
8.第五方面,本技术实施例还提供了一种电子设备,包括:客户端、服务端和共享内存,所述客户端和所述服务端均能够访问所述共享内存;所述客户端获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据;在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,所述客户端确定所述共享内存中是否存在所述目标数据,所述共享内存预先存储有所述服务端存放的支持通过远程过程调用机制获取的数据;若所述共享内存中存在所述目标数据,所述客户端从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
9.第六方面,本技术实施例还提供了一种计算机可读介质,所述可读存储介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行上述方法。
10.本技术提供的数据处理方法、装置、电子设备及计算机可读介质,客户端在获取到用于向所述服务端请求获取目标数据且属于远程过程调用机制的目标指令之后,在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据,如果共享内存中存在目标数据,则从共享内存中读取所述目标数据,而不必通过所述远程过程调用机制向所述服务端发送所述目标指令。所以,通过设置共享内存的方式,使得客户端在获取到rpc的指令之后,无需通过rpc机制就可以获取到该指令请求获取的数据,减少对rpc指令的使用,有效避免在rpc访问的数据量过大或次数过多的情况下导致操作系统的性能降低的情况发生。
11.本技术实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术实施例而了解。本技术实施例的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
12.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
13.图1示出了本技术实施例提供的客户端与服务端之间通信的示意图;
14.图2示出了本技术实施例提供的进程间通信的示意图;
15.图3示出了本技术实施例提供的rpc通信的示意图;
16.图4示出了本技术一实施例提供的数据处理方法的方法流程图;
17.图5示出了本技术一实施例提供的rpc调用的示意图;
18.图6示出了本技术另一实施例提供的数据处理方法的方法流程图;
19.图7示出了本技术另一实施例提供的rpc调用的示意图;
20.图8示出了本技术又一实施例提供的数据处理方法的方法流程图;
21.图9示出了本技术再一实施例提供的数据处理方法的方法流程图;
22.图10示出了本技术一实施例提供的数据处理装置的模块框图;
23.图11示出了本技术另一实施例提供的数据处理装置的模块框图;
24.图12示出了本技术一实施例提供的电子设备的模块框图;
25.图13示出了本技术一实施例提供的计算机可读存储介质的示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
28.现代的操作系统是构建在远程过程调用(remote procedure call,rpc)机制下,如图1所示,通过远程过程调用可以实现客户端程序与服务程序的交互,进而实现了各种各样的系统级功能,如播放音乐,界面刷新等。目前,操作系统(例如,安卓)中通过binder机制实现rpc功能,具体地,binder通信的过程中,分为两个进程client和service。client和service是相对的,其中,消息发送端是client,消息接收端是service。客户端与服务端之间的rpc访问是基于操作系统的跨进程通信(inter process communication,ipc)机制来实现的,具体地,客户端与服务端之间的ipc通信的过程如图2,客户端要通过ipc调用实现server端foo函数的调用,就需要将binder ipc数据传递给server端,传递的过程需要binder driver充当中间人,接收来自客户端的ipc数据,而后传递给server端。其中,ipc数据包含函数调用相关的内容:服务号、rpc数据和代码、binder协议三部分构成。服务号(handle):用来区分不同的服务,driver层通过handle值确定将ipc数据传递给到哪个服务中,也就是目标服务的编号。rpc数据:用来指定服务中将调用的函数(包括函数名和参数)。binder协议:用来表示ipc数据的处理方式(例如,bindre_write_read协议)。如图3所示,为rpc协议中的binder数据传递的过程。具体地,客户端要调用服务端的函数a,需要在服务端的注册阶段,服务端将函数a注册到context mananger中,其中,context mananger是服务器内的一种服务管理器。在客户端访问的时候,客户端首先将包含rpc代码(get_service)、rpc数据(请求的服务名)、handle为0的ipc数据经过binder driver传递给context manager,context manager解析后,拿到服务(即需要使用的函数)的名字,在自身持有的服务列表中进行搜索,查找相应的handle编号,然后将查到的handler编号发送给binder driver。binder driver根据传递过来的服务编号查找对应的引用数据,然后在客户端b生成引用数据,最后,客户端b将接受到的引用数据编号保存到handler中,把与服务函数相关
的rpc代码、rpc数据包含进ipc数据中,经由binder driver发送给指定的service server也就是服务a,并调用a中相关的函数。
29.虽然,通过上述的rpc机制可以方便客户端在运行的过程中,当需要函数a的结果的时候,可以直接去调用服务端的函数a以得到返回结果,但是,由于rpc对操作系统的性能消耗较大,所以,在容易导致操作系统的性能过差。具体地,rpc操作有种多样,其中最常见的一类是获取信息类。比如getpackageinfo(),getstatusinfo()等等。这类rpc操作的特点包括:只读取信息,并不与服务端发生状态更新操作;数据量比较大;频次高。虽然,客户端调动一次rpc操作的成本(系统资源消耗量)是固定的,通常与系统架构有关,但是,随着数据量的变大,操作的成本会越来越高。因此可以通过得到rpc成本为(rpc单次成本 rpc数据量)
×
频次,而rpc数据量依赖客户端的具体用法,有可能很大也有可能很小,不受系统控制,rpc频次依赖客户端的具体用法,不受系统控制。所以,rpc操作存在数量多访问次数多以及其他的不可控因素,容易导致操作系统的性能降低。且由于rpc操作的成本完全依赖与客户端的具体用法,因此对系统的影响也难以估量。不顺利的话会造成非常恶劣的后果,因为系统没法管控。
30.因为,为了避免rpc操作导致的系统性能过低,本技术实施例提供了一种数据处理方法、装置、电子设备及计算机可读介质,能够提高操作系统的性能。
31.另外,需要说明的是,前述的服务端和客户端可以分布在不同的电子设备上,例如,客户端可以是用户终端上运行的应用程序,服务端是在服务器上运行的应用程序,当然,服务端和客户端也可以分布在同一个电子设备上,即服务端和客户端均是电子设备内的应用程序,也就是说,客户端可以是一个面向用户的应用程序,服务端可以是操作系统的系统服务,即一个没有用户界面的在后台运行执行耗时操作的应用组件,例如,activitymanagerservice、packagemanagerservice等。对此,本技术实施例并不做任何限定。
32.请参阅图4,图4示出了本技术实施例提供的数据处理方法,该方法应用于前述的客户端,具体地,该方法包括:s401至s403。
33.s401:获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
34.也就是说,目标指令为远程过程调用机制下定义的指令,当客户端与服务端通过远程过程调用机制通信的时候,需要使用远程过程调用机制下定义的指令交互信息和数据。作为一种实施方式,目标指令属于远程过程调用机制的获取信息类指令,例如,该目标指令可以是getpackageinfo()、getstatusinfo()等。
35.作为一种实施方式,客户端确定当前待获取的目标数据,具体地,可以是在客户端执行目标代码的时候,生成该目标代码对应的目标指令,该目标指令用于获取目标数据,即是说,客户端当前请求通过目标指令,基于远程过程调用机制从服务端获取目标数据。而本技术实施例,会在确定客户端当前请求发起的目标指令之后,在发起该目标指令之前,先从共享内存中确定是否存在该目标数据,从而可以减少rpc的调用。
36.s402:在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据。
37.如图5所示,作为一种实施方式,可以在电子设备内预先配置一个共享内存,客户
端和服务端都可以访问该共享内存,于本技术实施例中,服务端可以预先将支持通过远程过程调用机制获取的数据存储在共享内存中。例如,远程过程调用机制的获取信息类指令可以包括第一指令、第二指令和第三指令,客户端可以通过第一指令从服务端获取第一数据,客户端可以通过第二指令从服务端获取第二数据,客户端还可以通过第三指令从服务端获取第三数据,其中,第一数据、第二数据和第三数据可以是不同类型的数据,也可以是不同的进程对应的数据。也就是说,服务端支持客户端通过远程过程调用机制获取前述的各个数据,而每种数据的获取指令是不同的,客户端发送该远程过程调用机制下的指令就可以发起一个rpc调用,并且通过该rpc调用获取该指定对应的数据。
38.示例性地,共享内存是操作系统提供的进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段物理内存连接到他们自己的地址空间中,所有的进程都可以访问共享内存中的地址。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。在操作系统中,每个进程都有属于自己的进程控制块和地址空间,并且都有一个与之对应的页表,该页表负责将进程的虚拟地址与物理地址进行映射,通过内存管理单元进行管理。两个不同的虚拟地址通过页表映射到物理空间的同一区域,它们所指向的这块区域即共享内存。
39.作为一种方式,该共享内存可以设置在客户端侧,即操作系统为客户端分配一块物理内存(可以命名为客户端内存),以便客户端在该物理内存中操作数据(读取或写入),服务端通过页表将服务端的虚拟地址映射到该物理地址,从而该客户端内存作为服务端和客户端的共享内存,也就是说,将客户端的物理地址共享出来作为服务端和客户端的共享内存。示例性地,客户端内存中的部分内存作为该共享内存,客户端内存中的其他部分的内存可以用于作为该客户端的非rpc调用相关的进程的运行内存也可以作为存储非rpc调用相关的进程对应的数据。服务端除了可以访问共享内存之外,还可以设置属于服务端的物理内存,可以命名为服务端内存,该服务端内存可以用于作为服务端各项进程的运行内存,而服务端的支持通过远程过程调用机制获取的数据可以存放至共享内存,也可以同时存放在该共享内存和服务端内存。也就是说,服务端和客户端均对应有物理内存空间,只是客户端的物理内存空间的部分内存空间被开放作为服务端和客户端之间的共享内存。
40.作为另一种实施方式,该共享内存可以设置在服务端侧,即操作系统为服务端分配一块物理内存(可以命名为服务端内存),以便服务端在该物理内存中操作数据(读取或写入),客户端通过页表将客户端的虚拟地址映射到该物理地址,从而该服务端内存作为服务端和客户端的共享内存,也就是说,将服务端的物理地址共享出来作为服务端和客户端的共享内存。从而更加方便服务端在共享内存中存放支持通过远程过程调用机制获取的数据。示例性地,服务端内存中的部分内存作为该共享内存,服务端内存中的其他部分的内存可以用于作为该服务端的各种进程的运行内存,服务端的支持通过远程过程调用机制获取的数据可以存放至共享内存,也可以同时存放在该共享内存和服务端内存。也就是说,服务端和客户端均对应有物理内存空间,只是服务端的物理内存空间的部分内存空间被开放作为服务端和客户端之间的共享内存。
41.作为再一种实施方式,如前所述,客户端和服务端均对应有物理内存空间,而服务
器在服务端内存和客户端内存之外的物理内存空间新开辟了一块物理内存空间作为该共享内存,服务端将支持通过远程过程调用机制获取的数据存放在共享内存,客户端和服务端双发约定可以在共享内存中获取支持通过远程过程调用机制获取的数据。
42.于本技术实施例中,上述的三种共享内存的设置方式都可以,在此不做限定。示例性地,可以选择在服务端侧设置共享内从,以使得服务端对支持通过远程过程调用机制获取的数据(以下命名为待选数据)在共享内存中的存储和维护更加高效。
43.需要说明的是,共享内存中存储的每个待选数据均对应有标识,该标识可以是该待选数据对应的获取指令,该获取指令属于远程过程调用机制的操作指令,也就是说,服务端将远程过程调用机制的多个指令可以获取的待选数据与该指令对应存储在共享内存中,在客户端确定了目标指令,并且在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,在共享内存中查找与目标指令对应的待选数据作为目标数据。示例性地,客户端需要执行某个操作,该操作需要用的数据为网络连接状态,该网络连接状态需用客户端通过远程过程调用机制的b指令从服务端获取,则在客户端确定网络连接状态对应的b指令之后,从共享内存中找到与b指令对应的数据,作为当前的网络连接状态。
44.当然,还可以是共享内存中存放的待选数据的标识为该待选数据的数据名称,例如,前述的网络连接状态对应一个参数,该参数的不同数值对应网络连接的不同状态,则该参数就可以是该网络连接状态的数据名称,假设该网络连接状态需用客户端通过远程过程调用机制的b指令从服务端获取,再假设该网络连接状态对应的参数为参数a,服务器可以确定参数a是可以通过b指令获取的,所以,服务器可以将参数a的具体内容存放在共享内存中,客户端需要获取网络连接状态的时候,先从共享内存中查找参数a,如果可以查找到参数a,读取参数a的内容以得到网络连接状态。
45.另外,该待选数据的数据标识还可以是能够获取该数据的函数名,则目标指令中包括目标函数,共享内存中存储的数据的存储方式为函数名与该函数名能够获取到的数据对应存储,例如,函数foo()的目标是用于独权网络连接状态,则共享内存中包括foo()对应的参数a,该参数a为网络连接状态的参数。所以,客户端依据目标指令中的目标函数从共享内存中查找是否存在该目标函数对应的数据,即目标数据。
46.s403:若所述共享内存中存在所述目标数据,从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
47.如图5所示,如果共享内存中存在目标数据,则客户端直接从共享内存中读取该目标数据,从而可以通过两条复制操作就可以得到服务端的目标数据,其中,两条复制操作是指,服务端将目标数据复制到共享内存中,客户端从共享内存中复制得到目标数据。而在从共享内存中获取到目标数据之后,为了避免客户端发送该目标指令的rpc调用,则可以暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。具体地,可以是客户端在从共享内存中读取到目标数据之后,将该目标指令销毁或者不响应该目标指令。
48.因此,本技术实施例中,客户端在获取到用于向所述服务端请求获取目标数据且属于远程过程调用机制的目标指令之后,在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据,如果共享内存中存在目标数据,则从共享内存中读取所述目标数据,而不必通过所述远程过程调用机制向所述服务端发送所述目标指令。所以,通过设置共享内存的方式,使得客户端在获取到rpc的指令
之后,无需通过rpc机制就可以获取到该指令请求获取的数据,减少对rpc指令的使用,有效避免在rpc访问的数据量过大或次数过多的情况下导致操作系统的性能降低的情况发生。
49.请参阅图6,图6示出了本技术实施例提供的数据处理方法,该方法应用于前述的客户端,具体地,该方法包括:s601至s604。
50.s601:获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
51.s602:在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据。
52.在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,也就是说,在向服务端发起rpc调用之前,先判断共享内存中是否存在所述目标数据,也就是说,先确定服务端是否有提前将目标数据存储在共享内存内,如果共享内存中存在所述目标数据,则执行s603,即从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。如果共享内存中存在所述目标数据,则执行s604,即通过所述远程过程调用机制向所述服务端发送所述目标指令,指示所述服务端响应所述目标指令返回所述目标数据。
53.s603:从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
54.作为一种实施方式,操作系统(例如,内存管理器)会将客户端的内存访问记录发送至服务端,该内存访问记录包括客户端本次所读取的数据的标识以及读取时间,服务端获取到该访问记录能够确定客户端在该读取时间的时候读取了该标识的数据,并且,客户端每次读取共享内存的时候,都会发送内存访问记录至服务端,因此,服务端在获取到目标数据对应的内存访问记录的时候,确定预设时间段内,目标数据是否发生未及时更新的情况,该未及时更新的情况为服务端未及时将共享内存中的目标数据更新,如果是,则服务端更新该共享内存中的目标数据并指示客户端重新获取共享内存中的目标数据,客户端重新获取共享内存中的目标数据,将重新获取的目标数据作为本次目标指令对应的目标数据,以便客户端基于该目标数据执行预设操作。该预设操作为需要使用目标数据的操作,具体地,该预设操作可以是触发客户端生成目标指令以获取目标数据的操作。示例性地,该预设时间段可以是服务端本次获取客户端的内存访问记录和上一次获取客户端的内存访问记录之间的时间长度,当然,该预设时间段也可以是服务端本次获取客户端的目标数据标识对应的内存访问记录和上一次获取客户端的目标数据标识对应的内存访问记录之间的时间长度,其中,目标数据标识为目标数据的标识,该标识可以参考前述关于数据的标识的实施例。从而能够在服务端未及时更新共享内存的时候,由服务端主动更新共享内存的目标数据并且通知该客户端去共享内存重新读取更新后的目标数据。
55.s604:通过所述远程过程调用机制向所述服务端发送所述目标指令,指示所述服务端响应所述目标指令返回所述目标数据。
56.如果共享内存中存在所述目标数据,客户端通过rpc调用的方式,将目标指令发送至服务端,服务端响应该目标指令,返回所述目标数据。具体地,客户端生成目标指令,将服务端的服务号(handle)、rpc数据和binder协议封装成目标指令,具体地,该目标指令可以是ipc数据包,该rpc数据包括目标指令对应的目标函数和参数,该目标函数用于请求调用
服务端的目标数据,driver层通过handle值确定将ipc数据传递给到服务端(即生成目标数据的服务),服务端解析该ipc数据确定客户端请求调用服务端的目标函数,服务端运行该目标函数将函数结果即目标数据返回至客户端。也就是说,在客户端无法从共享内存中得到目标数据的情况下,客户端还可以通过rpc调用服务端内的目标函数得到该目标数据。
57.作为一种实施方式,客户端在执行s604的时候,表征客户端无法从共享内存中读取得到目标数据,而可以通过远程过程调用机制向所述服务端发送所述目标指令以获取到目标数据,则表示服务端存在目标指令对应的目标是数据但是并未在共享内存中存储,所以,在一些实施例中,服务端在响应客户端发送的目标指令并返回目标数据之后,将该目标数据主动存储在共享内存,并且,实时更新该目标数据,因此,在客户端下一次通过所述远程过程调用机制向所述服务端发送所述目标指令之前,可以在共享内存中获取到目标数据。在另一些实施例中,客户端在获取到服务端返回的响应目标指令之后发送的目标数据之后,为了避免下一次还需要通过rpc由服务端获取目标数据,则可以发送更新指令至所述服务端,指示所述服务端将能够被所述目标指令调用的数据存入所述共享内存。具体地,该更新指令可以包括目标数据的标识,该目标数据的标识可以是目标函数,则服务端获取到更新指令之后,解析该更新指令确定目标函数,并且将目标函数的运行结果(即目标数据)存储在共享内存中,并且,实时更新该目标数据。
58.如图7所示,服务端对共享内存中存储的待选数据执行内容同步操作,该内容同步操作包括将服务端内能够被客户端通过远程过程调用机制调用的函数对应的待选数据存储至共享内存以及对这些待选数据的更新操作。其中,该更新操作可以参考前述的描述,此外,该更新操作还可以是服务端在检测到服务端的函数产生的数据更新之后主动将共享内存中的该函数对应的数据更新。
59.因此,在共享内存中不存在目标数据的时候,客户端可以通过远程过程调用机制向所述服务端发送所述目标指令,指示所述服务端响应所述目标指令返回所述目标数据,并且,还可以使得服务端及时更新共享内存中的目标数据或者及时将目标数据存储在共享内存中。需要说明的是,客户端向服务端发送更新指令的方式可以是不通过远程过程调用机制,可以是通过其他的方式,例如,通过客户端与服务端之间的api接口,或者sdk等。
60.请参阅图8,图8示出了本技术实施例提供的数据处理方法,该方法应用于前述的客户端,具体地,该方法包括:s801至s807。
61.s801:获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
62.s802:在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据。
63.如果共享内存中存在目标数据,则执行s803,从而可以通过在不使用rpc调用的情况下直接从共享内存中获取到rpc调用指令请求获取的数据,如果共享内存中不存在目标数据,则可以通过rpc调用指令从服务端获取该目标数据,但是为了避免服务端数据处理压力过大,则可以在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,先确定服务端是否空闲,具体地,在共享内存中不存在目标数据的情况下,执行s804。
64.s803:从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令。
65.s804:获取所述服务端的空闲资源信息。
66.服务端的空闲资源信息可以包括待处理rpc调用的数量、服务端对应的服务端内存的服务端内存使用率以及电子设备的cpu使用率的至少一种。其中,待处理rpc调用的数量可以是服务端当前已经获取的来自各个客户端通过远程过程调用机制发送的指令的数量,服务端内存使用率可以是服务端内存的已使用空间与剩余空间之间的比值,而cpu使用率也可以称为中央处理器的使用率,可以通过查看电子设备的任务管理器而获取,例如,在安卓系统下,通过adb shell top指令获取cpu的使用率。
67.需要说明的是,该空闲资源信息可以表征服务端当前数据处理的拥挤程度或者空闲程度,除了上述的待处理rpc调用的数量、服务端对应的服务端内存的服务端内存使用率以及电子设备的cpu使用率之外,其他的能够表征服务端当前数据处理的拥挤程度或者空闲程度的信息也可以作为该空闲资源信息。
68.s805:判断空闲资源信息是否满足使用条件。
69.作为一种实施方式,空闲资源信息是待处理rpc调用的数量,则判断空闲资源信息是否满足使用条件的实施方式,判断待处理rpc调用的数量是否小于第一数值,如果小于第一数值,则判定空闲资源信息满足使用条件,如果待处理rpc调用的数量大于或等于第一数值,则判定空闲资源信息不满足使用条件。其中,第一数值可以根据实际使用需求而设定,具体地,待处理rpc调用的数量大于或等于第一数值,表征服务端当前需要处理的rpc调用较多,即服务端的rpc调用的处理任务冗余,反之,如果待处理rpc调用的数量小于第一数值,表征服务端的rpc调用的处理任务。
70.作为另一种实施方式,空闲资源信息是服务端对应的服务端内存的服务端内存使用率,则判断空闲资源信息是否满足使用条件的实施方式,判断服务端内存使用率是否小于第二数值,如果服务端内存使用率小于第二数值,则判定空闲资源信息满足使用条件,如果服务端内存使用率否大于或等于第二数值,则判定空闲资源信息不满足使用条件。其中,第二数值可以根据实际使用需求而设定,具体地,服务端内存使用率大于或等于第二数值,表征服务端内存中的已使用空间较大和/或剩余内存空间较小,服务端可能不具备足够的内存空间来处理更多的rpc调用,反之,服务端内存使用率小于第二数值,表征服务端内存中的已使用空间较小和/或剩余内存空间较大,服务端可能具备足够的内存空间来处理更多的rpc调用。
71.作为又一种实施方式,空闲资源信息是电子设备的cpu使用率,由于电子设备内的客户端执行的操作(例如,运行进程等)以及服务端执行的操作都需要基于cpu完成,所以,电子设备的cpu使用率能够表征服务端的数据处理能力,具体地,该数据处理能力可以是数据处理速度,因为,在cpu使用率较高的情况下,服务端在处理rpc调用的时候可能会卡顿。则判断空闲资源信息是否满足使用条件的实施方式,判断cpu使用率是否小于第三数值,如果cpu使用率小于第三数值,判定空闲资源信息满足使用条件,如果cpu使用率大于或等于第三数值,则判定空闲资源信息不满足使用条件。其中,第三数值可以根据实际使用需求而设定,具体地,cpu使用率大于或等于第三数值,表征电子设备的cpu的数据处理量比较大,可能无法用于处理服务端的更多的rpc调用,反之,cpu使用率小于第三数值,表征电子设备的cpu的数据处理量比较小,可用于处理服务端的更多的rpc调用。
72.s806:通过所述远程过程调用机制向所述服务端发送所述目标指令。
73.s807:发送更新指令至所述服务端。
74.如果空闲资源信息满足使用条件,则执行s806,即通过所述远程过程调用机制向所述服务端发送所述目标指令,即服务端不会因为处理该目标指令而导致数据处理的负荷过重。如果空闲资源信息不满足使用条件,则执行s807,发送更新指令至所述服务端,指示所述服务端将能够被所述目标指令调用的数据存入所述共享内存。其中,更新指令的发送以及服务端的更新操作可以参考前述实施例。然后,客户端再次在共享内存中查找是否存在目标数据,即再次执行前述的确定所述共享内存中是否存在所述目标数据的操作以及后续操作。在一些实施例中,客户端可以在执行s807发送更新指令之后,间隔指定时间段之后,再次执行前述的确定所述共享内存中是否存在所述目标数据的操作以及后续操作,也就是说,客户端在间隔指定时间段之后,再次从共享内存中查找目标数据并且获取目标数据,其中,该指定时间段可以是根据实际使用而设定,该指定时间段大于或等于服务端将目标数据更新至共享内存的消耗时间。在另一些实施例中,服务端在将能够被所述目标指令调用的数据存入所述共享内存发送确认指令至客户端,该确认指令用于指示客户端该目标数据已经被存储共享内存,客户端在接收到确认指令之后,再次执行前述的确定所述共享内存中是否存在所述目标数据的操作以及后续操作。需要说明的是,上述的更新指令和确认指令的发送,均不是通过远程过程调用机制发送端的。
75.作为另一种实施方式,除了采用上述的在服务端的空闲资源信息不满足使用条件的情况下,客户端发送更新指令至服务端,以使服务端将目标数据存储在共享内存,以便客户端从共享内存中读取到目标数据,还可以是,服务端的空闲资源信息不满足使用条件的情况下,服务端调整前述的空闲资源信息,以使服务端的空闲资源信息满足使用条件。
76.具体地,若空闲资源信息为待处理rpc调用的数量,则服务端调整前述的空闲资源信息的实施方式可以是,服务端将当前所有的待处理rpc调用中的至少部分rpc调用暂停处理,例如,服务端当前需要处理的rpc调用一共有10个,分别为指令1、指令2、指令3、、、、指令10,如果将指令1、指令2和指令3暂停处理,则指令1、指令2和指令3就不属于待处理rpc调用,则此时的待处理rpc调用的数量就变为7个。
77.作为一种实施方式,确定当前待处理rpc调用的数量即为初始数量,服务端确定每个rpc调用对应的客户端,作为备选客户端,确定每个备选客户端的优先级,基于该备选客户端的优先级,基于每个备选客户端的优先级将所有的备选客户端排序,即将所有备选客户端的优先级由大到小的顺序排序,以得到客户端序列,将该序列中的最靠后的n个备选客户端作为暂停客户端,将暂停客户端对应的rpc调用暂停处理,即将暂停客户端对应的rpc调用设置为暂停处理的状态,从而再次统计得到的待处理rpc调用的数量为初始数量减去所有暂停客户端对应的rpc调用的数量,其中,处于暂停状态的rpc调用需要等到该初始数量对应的所有rpc调用中暂停状态的rpc调用之外的rpc调用处理完毕之后再处理。
78.作为另一种实施方式,还可以是在待处理rpc调用的数量大于第一数值的时候,确定目标客户端的优先级,其中,该目标客户端可以是发送目标指令的客户端,判断该目标客户端的优先级是否大于指定优先级,若大于指定优先级,服务端确定每个rpc调用对应的客户端,作为备选客户端,确定每个备选客户端的优先级,从所有备选客户端中查找优先级低于或等于指定优先级的客户端,作为暂停客户端,将暂停客户端对应的rpc调用暂停处理,即将暂停客户端对应的rpc调用设置为暂停处理的状态,从而再次统计得到的待处理rpc调
用的数量为初始数量减去所有暂停客户端对应的rpc调用的数量,其中,处于暂停状态的rpc调用需要等到该初始数量对应的所有rpc调用中暂停状态的rpc调用之外的rpc调用处理完毕之后再处理。
79.然后,在服务端将当前所有的待处理rpc调用中的至少部分rpc调用暂停处理,指示客户端通过所述远程过程调用机制向所述服务端发送所述目标指令,从而可以在服务端的待处理rpc的数量被降低的情况下,可以通过远程过程调用机制发送目标指令以获取目标数据,且能够降低服务端的数据处理压力。
80.请参阅图9,图9示出了本技术实施例提供的数据处理方法,该方法应用于前述的服务端,具体地,该方法包括:s901至s902。
81.s901:获取支持通过远程过程调用机制获取的待获取数据。
82.s902:将所述待获取数据存储至所述共享内存,所述共享内存内的数据用于所述客户端在通过远程过程调用机制向所述服务端发送目标指令之前被查询并获取。
83.其中,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
84.作为一种实施方式,将所述待获取数据存储至所述共享内存之后,若检测到所述服务端内的指定指令对应的数据发生变化,在所述共享内存中将所述指定指令对应的数据更新,其中,所述指定指令属于所述远程过程调用机制的操作指令。
85.需要说明的是,上述步骤未详细描述的部分,可以参考前述实施例,在此不再赘述。
86.请参阅图10,其示出了本技术实施例提供的一种数据处理装置1000的结构框图,该装置应用于电子设备的客户端,所述电子设备还包括服务端和共享内存,具体地,该装置可以包括:获取单元1001、确定单元1002和读取单元1003。
87.获取单元1001,用于获取目标指令,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
88.确定单元1002,用于在通过所述远程过程调用机制向所述服务端发送所述目标指令之前,确定所述共享内存中是否存在所述目标数据,所述共享内存预先存储有所述服务端存放的支持通过远程过程调用机制获取的数据。
89.读取单元1003,用于若所述共享内存中存在所述目标数据,从所述共享内存中读取所述目标数据,并暂停通过所述远程过程调用机制向所述服务端发送所述目标指令
90.进一步的,读取单元1003还用于若所述共享内存中不存在所述目标数据,通过所述远程过程调用机制向所述服务端发送所述目标指令,指示所述服务端响应所述目标指令返回所述目标数据。
91.进一步的,读取单元1003还用于发送更新指令至所述服务端,指示所述服务端将能够被所述目标指令调用的数据存入所述共享内存。
92.进一步的,读取单元1003还用于若所述共享内存中不存在目标数据,获取所述服务端的空闲资源信息,所述空闲资源信息用于表征所述服务端的系统资源使用率;若所述空闲资源信息满足使用条件,则通过所述远程过程调用机制向所述服务端发送所述目标指令。
93.其中,所述目标指令属于远程过程调用机制的获取信息类指令。
94.请参阅图11,其示出了本技术实施例提供的一种数据处理装置1100的结构框图,该装置应用于电子设备的客户端,所述电子设备还包括服务端和共享内存,具体地,该装置可以包括:获取单元1101和共享单元1102。
95.获取单元1101,用于获取支持通过远程过程调用机制获取的待获取数据。
96.共享单元1102,用于将所述待获取数据存储至所述共享内存,所述共享内存内的数据用于所述客户端在通过远程过程调用机制向所述服务端发送目标指令之前被查询并获取,其中,所述目标指令属于远程过程调用机制的操作指令,用于向所述服务端请求获取目标数据。
97.进一步地,共享单元1102还用于若检测到所述服务端内的指定指令对应的数据发生变化,在所述共享内存中将所述指定指令对应的数据更新,其中,所述指定指令属于所述远程过程调用机制的操作指令。
98.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
99.在本技术所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
100.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
101.请参考图12,其示出了本技术实施例提供的一种电子设备的结构框图。该电子设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本技术中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序、前述的客户端、服务端和共享内存,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
102.处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
103.存储器120可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数
据(比如电话本、音视频数据、聊天记录数据)等。
104.请参考图13,其示出了本技术实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1300中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
105.计算机可读存储介质1300可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质1300包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1300具有执行上述方法中的任何方法步骤的程序代码1310的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1310可以例如以适当形式进行压缩。
106.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献