一种请求的处理方法及装置的制造方法_3

文档序号:9547289阅读:来源:国知局
断缓存队列中是否有未分配的数据对象的标识信息,如果缓存队列中有数据对象的标识信息;如果缓存队列中存在至少一个指示未分配的状态标识,则确定缓存队列中有未分配的数据对象的标识信息;反之,如果缓存队列中没有指示未分配的状态标识,则确定缓存队列中没有未分配的数据对象的标识信息。
[0074]在一个具体的实现过程中,服务器的处理模块可以按照缓存队列中数据对象的标识信息的顺序,从未分配的数据对象的标识信息中获取一个数据对象的标识信息。
[0075]例如,所述缓存队列可以利用Redis存储系统实现。Redis存储系统是一种基于Key-Value的存储系统,可以支持原子操作。服务器的处理模块可以利用脚本语言Lua实现,Lua是一种轻量级的脚本语言,具有体积小、速度快的特点。利用脚本语言Lua实现的处理模块可以通过调用Redis存储系统的命令,从Redis存储系统中获取一个数据对象的标识信息。
[0076]本发明实施例中,预先将等待分配的数据对象的标识信息存储在缓存队列,当接收到用户的获取请求后,每次只处理一个获取请求,并且根据缓存队列中是否有未分配的标识信息来为用户分配数据对象。由于在缓存队列中处理数据时处理效率比较高,因此本发明实施例与现有技术中在数据库中处理获取请求的方式相比,处理速度更快,处理效率更高。同时,避免了在数据库中处理获取请求压力过大时出现的死锁、热点等异常问题,从而提高了获取请求的处理可靠性。另外,本发明实施例中,预先准备好等待分配的数据对象的标识信息,因此可以避免现有技术中的多发问题。
[0077]可选的,在本实施例的一个可能的实现方式中,如图2所示,在建立数据对象的标识信息与发送获取请求的用户之间的映射关系之后,可以进一步将该数据对象的标识信息与发送获取请求的用户之间的映射关系,保存在该数据对象的标识信息之前存储的缓存队列。
[0078]在一个具体的实现过程中,可以根据预设的周期,周期地在缓存队列中清除存储的数据对象的标识信息与发送获取请求的用户之间的映射关系。
[0079]可选的,在本实施例的一个可能的实现方式中,如图2所示,在建立并在缓存队列中存储数据对象的标识信息与发送获取请求的用户之间的映射关系之后,还可以进一步将所述数据对象的标识信息与发送获取请求的用户之间的映射关系保存在数据库。
[0080]可以理解的是,由于缓存队列一般会在设备重启之后被删除或者所占存储空间被其他存储设备使用,因此为了保证数据对象的标识信息与发送获取请求的用户之间的映射关系不被丢失,本发明实施例中,将建立的数据对象的标识信息与发送获取请求的用户之间的映射关系同时保存在性能稳定的数据库中,避免数据丢失,实现数据的可靠的、持久化的保存。
[0081]可选的,在本实施例的一个可能的实现方式中,如图2所示,在数据库中保存所述数据对象的标识信息与发送获取请求的用户之间的映射关系之后,就可以确定该用户获取该数据对象成功,即该数据对象已经确切的被分配给了该用户,则服务器可以向用户所使用的客户端推送获取结果指示,以便于该客户端向用户推送获取结果指示,这里,获取结果指示用于指示所述数据对象获取成功。这样,用户能够及时获知获取数据对象的结果,提高了用户体验。
[0082]可选的,在本实施例的一个可能的实现方式中,如图2所示,在向用户推送获取请求指示之后,再生成与所述数据对象的获取结果相关的详细信息,然后,将与所述数据对象的获取结果相关的详细信息保存在所述数据库。如此,客户端可以根据数据库中保存的与所述数据对象的获取结果相关的详细信息,进行信息展现,因此数据的准确性和可靠性比较高。
[0083]优选的,与所述数据对象的获取结果相关的详细信息包括:本次获取所述数据对象的事件编号、获取所述数据对象的时间信息、发送所述获取请求的用户的地址信息以及所述数据对象的属性信息。
[0084]例如,数据对象可以为等待抢购的商品,与该商品的抢购结果相关的详细信息可以包括:订单详情、收货信息、支付信息和商品的属性信息等。
[0085]可以理解的是,由于生成并存储与数据对象的获取结果相关的详细信息需要消耗一定时间,所以,本发明实施例中,对于成功获取到数据对象的用户,可以先向用户返回获取成功的指示,再生成与数据对象的获取结果相关的详细信息,这种异步更新机制不会耽误用户第一时间获知获取结果,提高了用户体验。
[0086]本发明实施例所提供的技术方案,能够快速、高效且可靠地处理获取请求,因此可以适用于抢购、秒杀或者抢红包等应用场景。
[0087]本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。
[0088]请参考图3,其为本发明实施例所提供的请求的处理装置的功能方块图。如图所示,该装置包括:
[0089]接收模块31,用于接收至少两个获取请求;
[0090]处理模块32,用于逐一针对所述至少两个获取请求中每个所述获取请求,若确定缓存队列中有未分配的数据对象的标识信息,从未分配的数据对象的标识信息中获取一个数据对象的标识信息,建立获取的数据对象的标识信息与发送获取请求的用户之间的映射关系Ο
[0091]可选的,在本实施例的一个可能的实现方式中,所述装置还包括:
[0092]配置模块33,用于将至少一个数据对象中每个所述数据对象的标识信息保存在所述缓存队列。
[0093]可选的,在本实施例的一个可能的实现方式中,所述处理模块32,还用于:
[0094]逐一针对所述至少两个获取请求中每个所述获取请求,判断所述缓存队列中是否有未分配的数据对象的标识信息。
[0095]可选的,在本实施例的一个可能的实现方式中,所述处理模块32,还用于:
[0096]将所述数据对象的标识信息与发送获取请求的用户之间的映射关系保存在所述缓存队列。
[0097]可选的,在本实施例的一个可能的实现方式中,所述处理模块32,还用于:
[0098]将所述数据对象的标识信息与发送获取请求的用户之间的映射关系保存在数据库。
[0099]可选的,在本实施例的一个可能的实现方式中,所述装置还包括:
[0100]第一推送模块34,用于向发送所述获取请求的用户推送获取结果指示,所述获取结果指示用于指示所述数据对象获取成功。
[0101]可选的,在本实施例的一个可能的实现方式中,所述装置还包括:
[0102]生成模块35,用于生成与所述数据对象的获取结果相关的详细信息;以及,将与所述数据对象的获取结果相关的详细信息保存在所述数据库;
[0103]其中,与所述数据对象的获取结果相关的详细信息包括:本次获取所述数据对象的事件编号、获取所述数据对象的时间信息、发送所述获取请求的用户的地址信息以及所述数据对象的属性信息。
[0104]可选的,在本实施例的一个可能的实现方式中,所述装置还包括:
[0105]第二推送模块36,用于若确定所述缓存队列中没有未分配的数据对象的标识信息,向发送所述获取请求的用户推送获取结果指示,所述获取结果指示用于指示所述数据对象获取失败。
[0106]由于本实施例中的各单元能够执行图1所示的方法,本实施例未详细描述的部分,可参考对图1的相关说明。
[0107]本发明实施例的技术方案具有以下有益效果:
[0108]本发明实施例中,通过接收至少两个获取请求;从而,逐一针对所述至少两个获取请求中每个所述获取请求,若确定缓存队列中有未分配的数据对象的标识信息,从未分配的数据对象的标识信息中获取一个数据对象的标识信息,建立获取的数据对象的标识信息与发送获取请求的用户
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1