一种多会话下远程服务的数据处理方法和系统与流程

文档序号:12600636阅读:177来源:国知局
一种多会话下远程服务的数据处理方法和系统与流程
本发明涉及通信
技术领域
,具体涉及一种多会话下远程服务的数据处理方法和系统。
背景技术
:目前基于Windows(视窗)系统的多会话远程桌面服务(英文全称:RemoteDesktopServices,英文简称:RDS)或应用虚拟化已经非常普及。远程桌面服务或应用虚拟化服务中,远程相关的图像一般会经过压缩算法的处理来节省带宽,压缩的处理是服务器端的主要消耗,通常的压缩算法有:无损算法压缩如zlib,有损算法压缩如jpeg,视频类压缩算法压缩如H.264等。实践发现,由于服务器端存在多个会话,每个会话都在处理这些压缩相关的任务,不同会话中的数据可能是重复的,压缩任务在做重复的计算,导致服务器端性能比较低下。技术实现要素:本发明实施例提供一种多会话下远程服务的数据处理方法和系统,以提高服务器端的性能。本发明第一方面提供一种多会话下远程服务的数据处理方法,用于提供远程服务的服务器中运行有缓存管理装置和多个会话,第一会话是所述多个会话中的任一会话,所述多个会话都能访问所述缓存管理装置,所述缓存管理装置包括压缩数据缓存映射模块;所述方法包括:获取所述第一会话中的应用的待压缩数据;计算所述待压缩数据的校验值;根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将所述待压缩数据对应的被压 缩数据返回给所述应用。该技术方案中,用于提供远程服务的服务器上运行有包括压缩数据缓存映射模块的缓存管理装置,服务器上运行的多个会话都能访问该缓存管理装置,当某个会话需要压缩数据时,服务器先利用待压缩数据的校验值查询该压缩数据缓存映射模块,如果已经存在对应的被压缩数据就直接获取该被压缩数据,不再进行压缩处理;如果不存在对应的被压缩数据,则进行压缩处理,且得到的被压缩数据存储到压缩数据缓存映射模块中供其它会话访问,这样,对于同一数据只需要进行一次压缩即可,实现了去重计算,避免了服务器中多个会话重复进行相同的压缩计算处理,提高了服务器端的性能。在第一种可能的实现方式中,所述根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据包括:根据所述第一会话中的应用要求的压缩类型和所述待压缩数据的校验值,查询所述压缩数据缓存映射模块中是否存在所述压缩类型的、所述待压缩数据对应的被压缩数据;所述对所述待压缩数据进行压缩包括:按照所述压缩类型对所述待压缩数据进行压缩。其中,通过按照压缩类型进行查询和压缩等操作,可以实现更加精细化的处理方式,进一步满足应用的具体需求。结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述缓存管理装置为编码驱动,所述获取步骤可以由第一会话执行,其它步骤可以由编码驱动执行。结合第一方面或者第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述缓存管理装置为编码驱动,所述获取步骤和计算步骤可以由第一会话执行,其它步骤可以由编码驱动执行。结合第一方面或者第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述缓存管理装置为编码驱动,所述存储步骤可以由编码驱动执行,其它步骤可以由第一会话执行。在以上几种实现方式中,可以根据具体情境配置在会话中执行哪些操作,在缓存管理装置中执行哪些操作,从而满足更加灵活的实际需求。例如,在会话中里面计算校验值的好处在于:应用的逻辑可能已经对图片等待压缩数据进 行了校验值例如CRC值计算,正好加以利用,这样可以降低资源开销。本发明第二方面提供一种多会话下远程服务的数据处理系统,用于提供远程服务的服务器中运行有缓存管理装置和多个会话,第一会话是所述多个会话中的任一会话,所述多个会话都能访问所述缓存管理装置,所述缓存管理装置包括压缩数据缓存映射模块;所述系统包括:获取模块,用于获取所述第一会话中的应用的待压缩数据;处理模块,用于计算所述待压缩数据的校验值;根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将所述待压缩数据对应的被压缩数据返回给所述应用。在第一种可能的实现方式中,所述处理模块,还用于:根据所述第一会话中的应用要求的压缩类型和所述待压缩数据的校验值,查询所述压缩数据缓存映射模块中是否存在所述压缩类型的、所述待压缩数据对应的被压缩数据;按照所述压缩类型对对所述待压缩数据进行压缩。其中,通过按照压缩类型进行查询和压缩等操作,实现更加精细化的处理方式,进一步满足应用的需求。结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述缓存管理装置为编码驱动,所述获取模块部署在所述第一会话中,所述处理模块部署在所述编码驱动中。结合第二方面或者第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述缓存管理装置为编码驱动,所述获取模块部署在所述第一会话中;所述处理模块包括:计算单元,查询单元,编码单元,其中,计算单元可在所述第一会话中,查询单元和编码单元可部署在所述编码驱动中。结合第二方面或者第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述缓存管理装置为缓存驱动,所述获取模块部署在所述第一会话中,所述处理模块包括:计算单元,查询单元,编码单元,存储单元,其中,计算单元,查询单元和编码单元可部署在所述第一会话中,存储单元可部署在 所述编码驱动中。在以上几种实现方式中,可以根据具体情境配置在会话中配置哪些单元,执行哪些操作,在缓存管理装置中配置哪些单元,执行哪些操作,从而满足更加灵活的实际需求。例如,在会话中里面计算校验值的好处在于:应用的逻辑可能已经对图片等待压缩数据进行了校验值例如CRC值计算,正好加以利用,这样可以降低资源开销。本发明第三方面提供一种计算机设备,所述计算机设备包括处理器、存储器、总线;所述存储器用于存储程序,所述处理器与所述存储器通过所述总线连接,当所述计算机设备运行时,所述处理器执行所述存储器存储的所述程序,以使所述计算机设备执行如本发明第一方面所述的多会话下远程服务的数据处理方法。由上可见,在本发明的一些可行的实施方式中,通过多个会话共用一个缓存管理装置,各个会话中应用的压缩数据都保存在该缓存管理装置中供各个会话共享,从而,对于同一数据只需要进行一次压缩即可满足多个会话的使用,实现了去重计算,避免了服务器中多个会话重复进行相同的压缩计算处理,提高了服务器端的性能。附图说明为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是Windows多会话下远程桌面/远程应用服务实现的系统架构;图2是本发明一个实施例中服务器的系统架构图;图3是本发明一个实施例提供的一种多会话下远程服务的数据处理方法的流程示意图;图4是本发明场景例一中服务器的系统架构图;图5是本发明场景例二中服务器的系统架构图;图6是本发明场景例三中服务器的系统架构图;图7是本发明一个实施例提供的一种多会话下远程服务的数据处理系统的结构示意图;图8是本发明一个实施例提供的一种计算机设备的结构示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别不同的对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本发明实施例技术方案应用于提供远程服务的服务器,该服务器可以是基于Windows系统的服务器,也可以是基于Linux系统的服务器,或者基于其它系统的服务器。所说的远程服务包括远程桌面服务和远程应用服务,以Windows服务器为例,该服务器可以是利用RDS功能提供远程桌面服务,或者可以是利用应用虚拟化功能提供远程应用服务。远程桌面服务的技术原理是,服务器上运行多个会话,一个用户可以在客户机上远程登录到其中一个会话中,在该服务器上运行应用程序。服务器把图形用户界面传送到客户机,客户机把用户的输入传回到服务器上。在使用远程桌面服务时,可以将服务器整个桌面环境提供给用户,也可以只提供单独的应用程序和数据给用户。在用户看来,这些应用程序是无缝集成的——界面、感觉和行为都和本地程序并无二异。应用虚拟化的技术原理是,把应用程序的人机交互逻辑与计算逻辑隔离开来。在用户访问一个服务器虚拟化后的应用时,用户计算机只需要把人机交互 逻辑传送到服务器端,服务器端为用户开设独立的会话空间,应用程序的计算逻辑在这个会话空间中运行,把变化后的人机交互逻辑传送给客户端,并且在客户端相应设备展示出来,从而使用户获得如同运行本地应用程序一样的访问感受。如图1所示,简单示出了Windows多会话下远程桌面/远程应用服务实现过程中服务器(Server)端显示(Display)相关的系统架构,WindowsServer运行多个会话(Session),分别用会话1,会话2.....n表示,n为正整数。Session中可运行多个应用程序,分别用应用1、2、3等表示。为了避免服务器中多个会话重复进行相同的压缩计算处理,提高服务器端的性能,本发明实施例提供一种多会话下远程服务的数据处理方法和系统。下面通过具体实施例,分别进行详细的说明。(实施例一、)本发明第一个实施例提供一种多会话下远程服务的数据处理方法,该方法用于提供远程服务的服务器,所述远程服务包括远程桌面服务和远程应用服务中的至少一种。如图2所示,是服务器的系统架构图。服务器中运行有缓存管理装置和多个会话(Session),所述多个会话包括第一会话,所述第一会话是所述多个会话中的任一会话,所述多个会话都能访问所述缓存管理装置,所述缓存管理装置包括压缩数据缓存映射模块。压缩数据缓存映射模块存储被压缩数据,每个会话都可以调用缓存管理装置访问压缩数据缓存映射模块。其中,每一个会话可以提供给一个用户,用户可以在客户机远程登入服务器提供的会话,像操作本地应用程序一样操作服务器会话中的应用程序。需要说明的是,压缩数据缓存映射模块中存储的被压缩数据,是多个会话的应用的待压缩数据对应的被压缩数据。请参考图3,本发明实施例的多会话下远程服务的数据处理方法,可以包括:301、获取所述第一会话中的应用的待压缩数据,计算所述待压缩数据的校验值。响应于用户的远程操作,当第一会话中的某个应用需要进行数据压缩时,本发明实施例中,服务器不再是直接对待压缩数据进行压缩,而是计算该待压缩数据的校验值。该校验值作为待压缩数据的唯一性标识,用于标识该待压缩数据,以及用于标识该对待压缩数据进行压缩后得到的被压缩数据。由于存在多种压缩算法,一个被压缩数据可以有多个不同压缩类型的被压缩数据,因此,一个待压缩数据的校验值可以对应该待压缩数据的多个不同压缩类型的被压缩数据。可选的,如果第一会话中需要进行数据压缩的应用对于压缩类型有要求时,本步骤中服务器还获取所述第一会话中的所述应用要求的压缩类型,如无损算法压缩如zlib,有损算法压缩如jpeg,视频类压缩算法压缩如H.264等压缩类型。一些实施例中,所述校验值具体可以采用循环冗余校验(CyclicRedundancyCheck,CRC)值。CRC是数据通信领域中最常用的一种差错校验码。其它实施例中,也可以采用其它类型的校验值。只要能用于对待压缩数据进行唯一性标识,本文中不限制校验值的具体类型。需要说明的是,本文中待压缩数据可以是图像、视频、文本等各种格式的数据,其中,主要是图像数据。302、根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据。本发明实施例中,服务器中各个会话产生的被压缩数据都统一保存在压缩数据缓存映射模块中。当第一会话中的某个应用需要进行数据压缩时,很可能在压缩数据缓存映射模块中已经存在对应的被压缩数据(其它会话压缩的)。本步骤中,当计算得到第一会话中的应用的待压缩数据的校验值后,利用该校验值在压缩数据缓存映射模块中进行查询,以查询是否已经存在所述待压缩数据对应的被压缩数据。压缩数据缓存映射模块中一般需要保存被压缩数据以及对应的校验值,也就是说,不仅要保存所述校验值和所述被压缩数据,还要保存所述校验值和所述被压缩数据的对应关系。一些实施例中,压缩数据缓存映射模块可以以映射表的形式存在。缓存管理装置可以管理该映射表。请参考下面表1,示出了一 种映射表的示意图。表1校验值被压缩数据001数据A010数据B本步骤的查询操作例如可以由该缓存管理装置执行。由于维持各个会话之间独立性的需要,一个会话通常不被允许直接访问一个公共的存储空间例如所述映射表。但是,多个会话都可以访问该缓存管理装置,由该缓存管理装置对映射表进行访问操作。对于Windows服务器,该缓存管理装置可以由一个驱动来实现,对于Linux服务器,该缓存管理装置可以由一个驱动来实现,也可以由一个用户态进程来实现,当然还可以是其它实现方式,本文对于缓存管理装置的具体实现方式不予限定。可选的,如果第一会话中需要进行数据压缩的应用对于压缩类型有要求时,本步骤中,具体可以根据所述第一会话中的应用要求的压缩类型和所述待压缩数据的校验值,查询所述压缩数据缓存映射模块中是否存在所述压缩类型的、所述待压缩数据对应的被压缩数据。一些实施例中,缓存管理装置中可以包括多个压缩数据缓存映射模块,其中每一个压缩数据缓存映射模块用于保存一种压缩类型的被压缩数据,例如图2中所示,压缩数据缓存映射模块1和压缩数据缓存映射模块2分别用于保存不同压缩类型的被压缩数据。303、若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用。当查询结果为存在时,说明在压缩数据缓存映射模块中查询到了所述待压缩数据对应的被压缩数据,于是,可以不再对第一会话中的待压缩数据进行压缩,而是直接将查询到的所述待压缩数据对应的被压缩数据返回给第一会话中的应用。从而,就避免了会话之间重复的压缩计算。304、若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压 缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将得到的所述待压缩数据对应的被压缩数据返回给所述应用。当查询结果为不存在时,说明在压缩数据缓存映射模块中没有对应的被压缩数据,于是,服务器对第一会话中的待压缩数据进行压缩,得到的被压缩数据做两种处理,一方面,将得到的所述待压缩数据对应的被压缩数据返回给第一会话中的应用,另一方面,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,这样,后续其它会话中需要该被压缩数据时,就可以直接从压缩数据缓存映射模块中获取,而不必重复进行压缩计算。可选的,如果第一会话中需要进行数据压缩的应用对于压缩类型有要求时,本步骤中,服务器对第一会话中的待压缩数据进行压缩时,需要按照所述压缩类型对所述待压缩数据进行压缩。其中,所说的将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,具体可以为:将所述待压缩数据的校验值和所述待压缩数据的被压缩数据,以及所述校验值和所述被压缩数据的对应关系,存储到所述压缩数据缓存映射模块中。可以理解,本发明实施例上述方案例如可以在Windows服务器,Linux服务器或安卓(Android)服务器等设备具体实施。由上可见,该技术方案中,用于提供远程服务的服务器上运行有包括压缩数据缓存映射模块的缓存管理装置,服务器上运行的多个会话都能访问该缓存管理装置,当某个会话需要压缩数据时,服务器先利用待压缩数据的校验值查询该压缩数据缓存映射模块,如果已经存在对应的被压缩数据就直接获取该被压缩数据,不再进行压缩处理;如果不存在对应的被压缩数据,则进行压缩处理,且得到的被压缩数据存储到压缩数据缓存映射模块中供其它会话访问,这样,对于同一数据只需要进行一次压缩即可,实现了去重计算,避免了服务器中多个会话重复进行相同的压缩计算处理,提高了服务器端的性能。为便于更好的理解本发明实施例提供的技术方案,下面通过具体场景下的 实施方式为例对本发明实施例技术方案进行介绍。场景例一、请参考图4,以服务器为WindowsServer为例,图4示出了一种WindowsServer的多会话系统架构以及数据处理流程。WindowsServer中运行有会话1、会话2等多个会话,还运行有缓存管理装置,该缓存管理装置具体为一个编码驱动(EncodeDriver)。所述多个会话包括第一会话(例如会话1),所述第一会话是所述多个会话中的任一会话。所述多个会话都能够访问所述编码驱动,所述编码驱动包括压缩数据缓存映射模块(CompressionCacheMap),简称缓存映射模块,缓存映射模块中存储被压缩数据(Compresseddata)。可选的,该缓存映射模块可以包括一个或多个,当包括多个时,不同的缓存映射模块可用于存储不同压缩类型的被压缩数据。每个会话都可以运行一个远程显示模块(RemoteDisplayModel),远程显示模块用于实现与客户机的交互,用户在客户机进行的人机交互逻辑都被传递到会话中的远程显示模块,由远程显示模块执行对应的计算逻辑。本发明实施例方法可以由远程显示模块和编码驱动共同配合完成。其中,第一会话中的远程显示模块,获取所述第一会话中的应用的待压缩数据;所述编码驱动根据所述待压缩数据的校验值计算所述待压缩数据的校验值,查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将得到的所述待压缩数据对应的被压缩数据返回给所述应用。如图4所示,数据处理方法的具体过程如下:1、第一会话中的远程显示模块中调用接口函数,以便对被压缩数据进行压缩(一般是图像数据)。其中,接口函数例如是API(ApplicationProgrammingInterface,应用程序编程接口)。API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源 码,或理解内部工作机制的细节。例如可以通过压缩接口函数(CompressionAPI)调用所述编码驱动。2、接口函数实际调用到编码驱动中(编码驱动可以是一个能够被多会话访问的WindowsDriver)。3、在编码驱动中,待压缩数据会被计算CRC值(或其他表示唯一性的校验值),通过CRC值从压缩数据缓存映射模块中查询是否已经存在待压缩数据对应的被压缩数据。需要说明的是,CompressionCacheMap中存放了待压缩数据的CRC值以及对应的被压缩数据,由于压缩的时候可以会有多种压缩算法,所以可以采用多个CompressionCacheMap来缓存不同压缩算法得到的被压缩数据,也可以采用在一个CompressionCacheMap中一个CRC对应多个不同压缩类型的被压缩数据,实际上开发人员很容易有不同的数据结构实现。根据是否查询到对应的被压缩数据,存在两个流程分支.分支1,查询到存在对应的被压缩数据,则执行以下步骤:4、若查询结果为存在所述待压缩数据对应的被压缩数据,所述编码驱动从压缩数据缓存映射模块中获取查询到的被压缩数据。5、所述编码驱动直接将查询到的被压缩数据返回给远程显示模块调用的接口函数,通过接口函数将被压缩数据返回给第一会话中的应用。分支2,查询结果为不存在对应的被压缩数据,则执行以下步骤:4、若查询结果为不存在所述待压缩数据对应的被压缩数据,则编码驱动对所述待压缩数据进行压缩,得到被压缩数据。5、编码驱动将所述带压缩数据的校验值和得到的被压缩数据存储到所述压缩数据缓存映射模块中。其中,受资源的限制,压缩数据缓存映射模块会有一定的大小,可选的,如果其中存放的数据超过一定的上限,可以采用一定的算法比如“最近最经常使用”算法删除掉旧的数据再存放新的数据。6、编码驱动获取压缩得到的被压缩数据。7、将得到的被压缩数据返回给远程显示模块调用的接口函数,通过接口函数将被压缩数据返回给第一会话中的应用。值得说明的是,对于WindowsServer,上述的EncodeDriver目前来看用 windows内核态的driver(驱动)来做最为合适,因为驱动可以接受多个会话访问,但是实际上作为一个用户态进程也是有可能的,通过常用的共享内存、全局管道通信技术也是可以实现所述缓存管理装置。场景例二、请参考图5,以服务器为WindowsServer为例,图5示出了另一种WindowsServer的多会话系统架构以及数据处理流程。与场景例一中不同的是,本场景例中将计算校验值的步骤从编码驱动中执行,更改为在会话中执行。即:第一会话中的远程显示模块,获取所述第一会话中的应用的待压缩数据,计算所述待压缩数据的校验值;所述编码驱动根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,所述编码驱动对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将得到的所述待压缩数据对应的被压缩数据返回给所述应用。可见,本场景例中计算校验值例如CRC值的位置移动到了调用接口函数之前,也就是说校验计算在第一会话的应用逻辑里面完成,而不是在编码驱动里。至于其它操作,与场景例一完全相同,请参考场景例一中的描述,这里不再详细赘述了。本场景例在应用逻辑里面计算校验值的好处在于:应用的逻辑可能已经对图片进行了CRC值计算,正好加以利用,这样可以降低资源开销。场景例三、请参考图6,以服务器为WindowsServer为例,图6示出了又一种WindowsServer的多会话系统架构以及数据处理流程。其中,系统架构与场景例一的不同之处在于,本场景例中,缓存管理装置具体为缓存驱动(CacheDriver),其它部分都与场景例一相同,这里不再赘述。数据处理流程与场景例一的不同之处在于:计算校验值,查询被压缩数据,进行数据压缩等操作移动到了会话中进行。具体的:第一会话中的远程显示模块,获取所述第一会话中的应用的待压缩数据,计算所述待压缩数据的校验值;根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,从所述缓存驱动获取查询到的所述待压缩数据对应的被压缩数据,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据,将得到的所述待压缩数据对应的被压缩数据返回给所述应用;所述缓存驱动将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中。如图6所示,数据处理方法的具体过程如下:1、第一会话中的远程显示模块中调用接口函数例如压缩接口函数(CompressionAPI),计算待压缩数据的CRC值,以便对被压缩数据进行压缩(一般是图像数据)。2、CompressionAPI调用查询数据是否存在接口函数(CheckdataexistAPI)。3、CheckdataexistAPI调用缓存驱动。4、CheckdataexistAPI根据待压缩数据的CRC值,查询缓存驱动的压缩数据缓存映射模块中是否已经存在该CRC值对应的被压缩数据。根据是否查询到对应的被压缩数据,存在两个流程分支.分支1,查询到存在对应的被压缩数据,则执行以下步骤:5、如果查询结果为存在,CheckdataexistAPI调用GetdataAPI(获取数据接口函数)。6、GetdataAPI调用缓存驱动,从缓存驱动中获得查询到的被压缩数据。7、GetdataAPI将获得的被压缩数据返回给压缩接口函数,通过压缩接口函数将被压缩数据返回给第一会话中的应用。分支2,查询结果为不存在对应的被压缩数据,则执行以下步骤:3、若查询结果为不存在对应的被压缩数据,则CheckdataexistAPI指示远程显示模块中的数据编码(Encodedata)模块对所述待压缩数据进行压缩,得到被压缩数据。4、CheckdataexistAPI调用SetdataAPI(设置数据接口函数)。5、SetdataAPI将压缩得到的被压缩数据存储到压缩数据缓存映射模块中。6、Encodedata模块将压缩得到的被压缩数据返回给压缩接口函数,通过压缩接口函数将被压缩数据返回给第一会话中的应用。相对于场景例一,本场景例中将查询压缩数据是否存在的逻辑部分以及压缩过程的逻辑部分等,移植到了encoderdriver之外,也就说应用要做的事情更多了,但是灵活性更高,encoderdriver变成了一个cachedriver。综上,本文以几个场景例对本发明实施例方法做了进一步的说明。需要说明的是,本发明可能有多种变形的实现方案,但是整体思路就是通过类似的Cache(缓存)方式去重计算资源消耗。Cache的存储可以使纯内存,也有可能是加了SSD做二级Cache,分布式存储可能也会对Cache有很大的帮助。这种方式对单一性的业务场景应该会有很好的效果,而应用虚拟化原本就是对付这种场景的,比如视频教育(看的东西差不多),特别是在线多用户的实时远程教育,画面内容可能很多相同。(实施例二、)为了更好的实施本发明实施例的上述方案,下面还提供用于配合实施上述方案的相关装置。请参考图7,本发明实施例提供一种多会话下远程服务的数据处理系统,用于提供远程服务的服务器中运行有缓存管理装置和多个会话,第一会话是所述多个会话中的任一会话,所述多个会话都能访问所述缓存管理装置,所述缓存管理装置包括压缩数据缓存映射模块;所述系统可以包括:获取模块701,用于获取所述第一会话中的应用的待压缩数据;处理模块702,用于计算所述待压缩数据的校验值;根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;若查询结果为不存在,对所述待压缩数据进行压缩,得到 所述待压缩数据对应的被压缩数据,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将所述待压缩数据对应的被压缩数据返回给所述应用。在本发明的一些实施例中,所述处理模块702,还用于:根据所述第一会话中的应用要求的压缩类型和所述待压缩数据的校验值,查询所述压缩数据缓存映射模块中是否存在所述压缩类型的、所述待压缩数据对应的被压缩数据;按照所述压缩类型对对所述待压缩数据进行压缩。在本发明的一些实施例中,所述缓存管理装置具体为编码驱动,所述获取模块701部署在所述第一会话中;所述处理模块702部署在所述编码驱动中;其中,请参考图4,处理模块702可以包括:计算单元,用于计算所述待压缩数据的校验值;查询单元,根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;编码单元,用于若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据;所述查询单元,还用于若查询结果为不存在,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将所述待压缩数据对应的被压缩数据返回给所述应用。在本发明的一些实施例中,所述缓存管理装置具体为编码驱动,所述获取模块701部署在所述第一会话中;请参考图5,所述处理模块702可包括:计算单元,部署在所述第一会话中,用于计算所述待压缩数据的校验值;查询单元,部署在所述编码驱动中,用于根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;编码单元,部署在所述编码驱动中,用于若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应的被压缩数据;所述查询单元,还用于若查询结果为不存在,将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中,并将所述待压缩数据对应的被压缩数据返回给所述应用。在本发明的一些实施例中,所述缓存管理装置具体为缓存驱动,所述获取模块701部署在所述第一会话中;请参考图6,所述处理模块702可包括:计算单元,部署在所述第一会话中,用于计算所述待压缩数据的校验值;查询单元,部署在所述第一会话中,用于根据所述待压缩数据的校验值查询所述压缩数据缓存映射模块中是否存在所述待压缩数据对应的被压缩数据;若查询结果为存在,从所述缓存驱动获取查询到的所述待压缩数据对应的被压缩数据,将查询到的所述待压缩数据对应的被压缩数据返回给所述应用;编码单元,部署在所述第一会话中,用于若查询结果为不存在,对所述待压缩数据进行压缩,得到所述待压缩数据对应被压缩数据;存储单元,部署在所述缓存驱动中,用于将所述待压缩数据的校验值和所述待压缩数据对应的被压缩数据存储到所述压缩数据缓存映射模块中;所述查询单元,还用于若查询结果为不存在,将所述待压缩数据对应的被压缩数据返回给所述应用。可以理解,本发明实施例的数据处理系统的各个功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述方法实施例中的相关描述,此处不再赘述。由上可见,在本发明的一些可行的实施方式中,用于提供远程服务的服务器上运行有包括压缩数据缓存映射模块的缓存管理装置,多个会话都能访问该缓存管理装置,当某个会话需要压缩数据时,服务器先利用待压缩数据的校验值查询该压缩数据缓存映射模块,如果已经存在对应的被压缩数据就直接获取该被压缩数据,不再进行压缩处理;如果不存在对应的被压缩数据,则进行压缩处理,且得到的被压缩数据存储到压缩数据缓存映射模块中供其它会话访问,这样,对于同一数据只需要进行一次压缩即可,实现了去重计算,避免了服务器中多个会话重复进行相同的压缩计算处理,提高了服务器端的性能。(实施例三、)请参考图8,本发明实施例还提供一种计算机设备800,可包括:处理器801,存储器803,总线804;所述存储器803用于存储程序805,所述处理器801与所述存储器803通过所述总线804连接,当所述计算机设备800运行时,所述处理器801执行所述存储器810存储的所述程序805,以使所述计算机设备800执行如上文方法实施例所述的多会话下远程桌面或远程应用服务的数据处理方法。其中,计算机设备800,还可以包括通信接口802,所述通信接口802,用于接收和发送数据。其中,所述总线804可以是工业标准体系结构(IndustryStandardArchitecture,简称为ISA)总线或外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线中的一种或多种。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。所述存储器803用于存储可执行程序代码,程序代码包括计算机操作指令。所述存储器803可以包含高速RAM(RamdomAccessMemory)存储器。可选地,所述存储器803还可以还包括非易失性存储器(non-volatilememory)。例如所述存储器803可以包括磁盘存储器。所述处理器801可以是中央处理器(CentralProcessingUnit,简称为CPU),或者所述处理器801可以是特定集成电路(ApplicationSpecificIntegratedCircuit,简称为ASIC),或者所述处理器801可以是被配置成实施本发明实施例的一个或多个集成电路。由上可见,在本发明的一些可行的实施方式中,提供了一种计算机设备,该计算机设备可以实施上文方法实施例提供的多会话下远程桌面或远程应用服务的数据处理方法,并取得该方法实施例的技术效果。(实施例四、)本发明实施例还提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被包括一个或多个处理器的计算机设 备执行时使所述计算机设备执行如上文方法实施例提供的多会话下远程桌面或远程应用服务的数据处理方法。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上对本发明实施例所提供的多会话下远程服务的数据处理方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1