请求处理方法及装置制造方法及图纸

技术编号:21627694 阅读:25 留言:0更新日期:2019-07-17 10:42
本公开提供了一种请求处理方法及装置,属于计算机技术领域。该方法包括:获取终端的第一请求;基于第一请求对应的操作类型和操作路径,在第一请求符合处理条件的情况下,为第一请求分配锁,操作类型是指第一请求指示的需要执行的操作类型,操作路径是指第一请求指示的操作对象的存储路径;基于锁执行第一请求对应的操作;其中,处理条件包括第一请求对应的操作和各个第二请求对应的操作不相冲突;第二请求为第一请求分配锁时,已被服务器分配了锁的请求。本公开提高了并行处理效率。

Request processing method and device

【技术实现步骤摘要】
请求处理方法及装置
本公开涉及计算机
,特别涉及一种请求处理方法及装置。
技术介绍
在当前的客户端/服务器(Client/Server,C/S)通信架构中,终端的服务需求量越来越大,为了能够快捷地给各个终端提供服务,服务器通常需要并行处理多个终端的请求,例如,对服务器已存储的内容进行读操作或写操作。其中,写操作涉及内容的修改,读操作不涉及内容的修改。目前,为了避免在并行处理请求的过程中所处理数据被破坏,一般基于锁机制处理请求,在锁机制下,服务器会执行被分配锁的请求对应的操作,或暂时挂起未被分配锁的请求。以读写锁(read/writelock)处理请求为例,读锁用于确保请求对应的读操作正确执行,写锁用于确保对应的写操作正确执行,服务器可以从请求队列中获取一个请求A,该请求队列用于存放已接收到的客户端的请求。当请求A对应读操作时,如果当前没有为任何请求分配写锁,才可以为请求A分配读锁,并基于请求A进行读操作,例如,当前仅为请求B分配了读锁,则服务器可以并行处理请求A和请求B。当请求A对应写操作时,如果当前没有为任何请求分配锁,才可以为请求A分配写锁,并基于请求A进行写操作,直到请求A处理完成,释放请求A的写锁之后可以获取下一个请求,这是由于写操作一般涉及数据的修改,为了保证数据的一致性,在基于某一请求进行写操作的过程中,会暂停处理其他请求,则不会再为其他请求分配锁。在实现本公开的过程中,专利技术人发现现有技术至少存在以下问题:以上基于读写锁处理请求的过程中,将操作简单地划分为读写操作导致并行处理的限制性高,处理效率低。
技术实现思路
本公开实施例提供了一种请求处理方法及装置,能够解决现有技术中并行处理的限制性高,处理效率低的问题。所述技术方案如下:第一方面,提供了一种请求处理方法,所述方法包括:获取终端的第一请求;基于所述第一请求对应的操作类型和操作路径,在所述第一请求符合处理条件的情况下,为所述第一请求分配锁,所述操作类型是指所述第一请求指示的需要执行的操作类型,所述操作路径是指所述第一请求指示的操作对象的存储路径;基于所述锁执行所述第一请求对应的操作;其中,所述处理条件包括所述第一请求对应的操作和各个第二请求对应的操作不相冲突;所述第二请求为所述第一请求分配锁时,已被所述服务器分配了锁的请求。在第一方面的第一种可能实现方式中,所述基于所述第一请求对应的操作类型和操作路径,在所述第一请求符合处理条件的情况下,为所述第一请求分配锁,包括:基于所述第一请求对应的操作类型和操作路径,在冲突映射关系集合中查询所述第一请求对应的操作与所述各个第二请求中的至少一个请求对应的操作之间的冲突情况,所述冲突映射关系集合用于指示在所述服务器的文件系统的树结构中可执行的任两个操作之间的冲突情况,所述冲突映射关系集合包括多条映射规则,所述映射规则包括两个请求的操作类型、两个请求的操作路径的关系与所述两个请求的冲突情况三者之间的映射;在所述第一请求符合处理条件的情况下,为所述第一请求分配所述锁。该实现方式中,通过已配置的冲突映射关系集合,可以直接查询到第一请求对应的操作与各个第二请求对应的操作之间的冲突情况,从而可以高效地为第一请求分配锁,提高了处理效率。在第一方面的第二种可能实现方式中,所述映射规则还包括两个请求的操作类型与所述两个请求的冲突情况之间的映射,和两个请求的操作路径的关系与所述两个请求的冲突情况之间的映射中的至少一种。在第一方面的第三种可能实现方式中,多条映射规则包括下述规则中的至少一条:在所述第二操作路径包括但不等于所述第一操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于进行写操作的情况下,所述第一操作与所述第二操作不相冲突;在所述第一操作路径包括但不等于所述第二操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于对节点的属性进行写操作的情况下,所述第一操作与所述第二操作不相冲突;所述第一操作路径包括所述第二操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于对节点进行写操作的情况下,所述第一操作与所述第二操作相冲突;在所述第一操作路径和所述第二操作路径之间具有包含关系、所述第一操作类型用于对节点进行写操作以及所述第二操作类型用于对节点进行写操作的情况下,所述第一操作与所述第二操作相冲突;其中,所述第一操作路径为所述第一操作的操作路径,所述第二操作路径为所述第二操作的操作路径,所述第一操作类型为所述第一操作的操作类型,所述第二操作类型为所述第二操作的操作类型;节点是指所述服务器的文件系统的树结构中的数据或数据所在的目录;所述第一操作为所述第一请求对应的操作,所述第二操作为任一第二请求对应的操作;或者,所述第一操作为任一第二请求对应的操作,所述第二操作为所述第一请求对应的操作。该实现方式中,提供了多种用于判断操作之间是否冲突的映射规则,通过比较操作路径之间的包含关系,并分析操作类型所作用于属性或节点、用于读操作或写操作,全面地涵盖了各种请求对应的操作,使得判断冲突的结果更加准确。在第一方面的第四种可能实现方式中,多条映射规则还包括下述规则中的至少一条:在第一操作路径和第二操作路径之间不具有包含关系的情况下,第一操作与第二操作不相冲突;在第一操作类型和第二操作类型均用于进行读操作的情况下,所述第一操作与所述第二操作不相冲突;在所述第一操作类型和所述第二操作类型均用于对节点的属性进行操作的情况下,所述第一操作与所述第二操作不相冲突。在第一方面的第五种可能实现方式中,所述基于所述锁执行所述第一请求对应的操作之后,所述方法还包括:释放所述第一请求的锁;记录所述第一请求到的处理过程对应的日志;将响应结果返回给终端,所述响应结果为操作执行后响应于所述第一请求的数据。该实现方式中,既可以释放锁之后直接返回响应结果,从而为与该请求相冲突的请求预留出处理资源,使得与该请求相冲突的请求能够尽快被处理,而且能够尽快将响应结果返回给终端;也可以通过先释放锁,再记录日志,最后返回响应结果,为与该请求相冲突的请求预留出处理资源,使得与该请求相冲突的请求能够尽快被处理,而且能够保持返回给终端的响应结果与日志的一致性。在第一方面的第六种可能实现方式中,所述处理条件还包括:各个第二请求的数量不大于预设的并行度。该实现方式中,基于所配置的预设的并行度,可以灵活地限制处理请求的并行级数。在第一方面的第七种可能实现方式中,所述获取终端的第一请求之后,所述方法还包括:在所述第一请求不符合处理条件的情况下,将所述第一请求添加到请求队列;直到与所述第一请求对应的操作相冲突的操作执行完成,为所述第一请求分配锁。第二方面,提供了一种请求处理装置,所述装置包括至少一个模块,该至少一个模块用于实现如上述第一方面或第一方面中任意一种可能实现方式所提供的请求处理方法。第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行以完成如上述第一方面或第一方面中任意一种可能实现方式所提供的请求处理方法。第四方面,提供了一种服务器,所述服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可执行指令,所述处理器执行所述计算机可执行指令时实现如上述第一方面或第一方面中任意一种可能实本文档来自技高网...

【技术保护点】
1.一种请求处理方法,所述请求处理方法用于服务器,其特征在于,所述方法包括:获取终端的第一请求;基于所述第一请求对应的操作类型和操作路径,在所述第一请求符合处理条件的情况下,为所述第一请求分配锁,所述操作类型是指所述第一请求指示的需要执行的操作类型,所述操作路径是指所述第一请求指示的操作对象的存储路径;基于所述锁执行所述第一请求对应的操作;其中,所述处理条件包括所述第一请求对应的操作和各个第二请求对应的操作不相冲突;所述第二请求为所述第一请求分配锁时,已被所述服务器分配了锁的请求。

【技术特征摘要】
1.一种请求处理方法,所述请求处理方法用于服务器,其特征在于,所述方法包括:获取终端的第一请求;基于所述第一请求对应的操作类型和操作路径,在所述第一请求符合处理条件的情况下,为所述第一请求分配锁,所述操作类型是指所述第一请求指示的需要执行的操作类型,所述操作路径是指所述第一请求指示的操作对象的存储路径;基于所述锁执行所述第一请求对应的操作;其中,所述处理条件包括所述第一请求对应的操作和各个第二请求对应的操作不相冲突;所述第二请求为所述第一请求分配锁时,已被所述服务器分配了锁的请求。2.根据权利要求1所述的方法,其特征在于,所述基于所述第一请求对应的操作类型和操作路径,在所述第一请求符合处理条件的情况下,为所述第一请求分配锁,包括:基于所述第一请求对应的操作类型和操作路径,在冲突映射关系集合中查询所述第一请求对应的操作与所述各个第二请求中的至少一个请求对应的操作之间的冲突情况,所述冲突映射关系集合用于指示在所述服务器的文件系统的树结构中可执行的任两个操作之间的冲突情况,所述冲突映射关系集合包括多条映射规则,所述映射规则包括两个请求的操作类型、两个请求的操作路径的关系与所述两个请求的冲突情况三者之间的映射;在所述第一请求符合处理条件的情况下,为所述第一请求分配所述锁。3.根据权利要求2所述的方法,其特征在于,所述映射规则还包括两个请求的操作类型与所述两个请求的冲突情况之间的映射,和两个请求的操作路径的关系与所述两个请求的冲突情况之间的映射中的至少一种。4.根据权利要求2所述的方法,其特征在于,所述多条映射规则包括下述规则中的至少一条:在所述第二操作路径包括但不等于所述第一操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于进行写操作的情况下,所述第一操作与所述第二操作不相冲突;在所述第一操作路径包括但不等于所述第二操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于对节点的属性进行写操作的情况下,所述第一操作与所述第二操作不相冲突;在所述第一操作路径包括所述第二操作路径、所述第一操作类型用于进行读操作以及所述第二操作类型用于对节点进行写操作的情况下,所述第一操作与所述第二操作相冲突;在所述第一操作路径和所述第二操作路径之间具有包含关系、所述第一操作类型用于对节点进行写操作以及所述第二操作类型用于对节点进行写操作的情况下,所述第一操作与所述第二操作相冲突;其中,所述第一操作路径为所述第一操作的操作路径,所述第二操作路径为所述第二操作的操作路径,所述第一操作类型为所述第一操作的操作类型,所述第二操作类型为所述第二操作的操作类型;节点是指所述服务器的文件系统的树结构中的数据或数据所在的目录;所述第一操作为所述第一请求对应的操作、所述第二操作为任一第二请求对应的操作,或者,所述第一操作为任一第二请求对应的操作、所述第二操作为所述第一请求对应的操作。5.根据权利要求3或4所述的方法,其特征在于,所述多条映射规则还包括下述规则中的至少一条:在第一操作路径和第二操作路径之间不具有包含关系的情况下,第一操作与第二操作不相冲突;在第一操作类型和第二操作类型均用于进行读操作的情况下,所述第一操作与所述第二操作不相冲突;在所述第一操作类型和所述第二操作类型均用于对节点的属性进行操作的情况下,所述第一操作与所述第二操作不相冲突。6.根据权利要求1所述的方法,其特征在于,所述基于所述锁执行所述第一请求对应的操作之后,所述方法还包括:释放所述第一请求的锁;记录所述第一请求的处理过程对应的日志;将响应结果返回给所述终端,所述响应结果为操作执行后响应于所述第一请求的数据。7.根据权利要求1所述的方法,其特征在于,所述处理条件还包括:所述各个第二请求的数量不大于预设的并行度。8.根据权利要求1所述的方法,其特征在于,所述获取终端的第一请求之后,所述方法还包括:在所述第一请求不符合处理条件的情况下,将所述第一请求添加到请求队列;直到与所述第一请求对应的操作相冲突的操作执行完成,为所述第一请求分配锁。9.一种请求处理装置,其特征在于,所述装置包括:获取模块,用于获取终端的第一请求;分配模块,用于基于所述第一请求对应的操作类型和操...

【专利技术属性】
技术研发人员:孙桂林施浩亮毗奈耶库马尔·B
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1