排行榜生成方法、装置、设备、系统及存储介质与流程
- 国知局
- 2024-07-11 16:15:11
本发明涉及计算机,尤其涉及一种排行榜生成方法、装置、设备、系统及存储介质。
背景技术:
1、排行榜在各种应用场景中随处可见,尤其是在游戏场景中。现有的排行榜生成方案包括:每个用户在进行影响排行的操作后,将数据a传递到后端服务器,后端服务器到数据库查询历史数据b,然后得到当前数据c=a+b。将数据c存储入库成功后,返回告知前端服务器。前端服务器确认本次操作完成后用户才能进行下一次操作。所有用户的前端页面将定时轮询调用排行榜接口,获取最新的排行数据并渲染显示以实现数据刷新,这个定时周期一般为几秒到几分钟不等,同时过程中需要分组查询所有用户数据并进行排序,从而生成排行榜。
2、因此,现有技术的不足在于:1)单次操作需要连接两次数据库,例如从数据库查询历史数据b和存储数据c到数据库;而且,为防止出现执行顺序错乱问题,只能限制用户在上一次操作完成后才能进行下一次操作;这样,会极大地影响用户单次操作的响应效率,给用户造成不好的使用体验;2)所有用户能看到的排行榜数据,都是基于前端服务器主动轮询调用后端服务排行榜接口实现数据刷新,那么两次调用的间隔已经对实时性造成了影响,同时这个过程又包含请求到达后端的时间、后端查询时间和数据返回时间,其中后端查询数据本身就耗时较长,且请求到达后端的时间也会受网络原因影响,二者导致实时性更加难以保证。
技术实现思路
1、本发明提供一种排行榜生成方法、装置、设备、系统及存储介质,可以提升用户单次操作的响应效率,使用户体验更加流畅,并且可以提升排行榜生成的实时性。
2、第一方面,本发明提供一种排行榜生成方法,应用于后端服务器,所述方法包括:
3、针对每个用户,响应于所述用户触发的影响排行的操作,在分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据,得到当前累计操作数据;所述自增为原子操作;
4、从所述分布式内存数据库中查询已经排序完成的各所述用户的所述当前累计操作数据,得到排序数据;
5、通过所述后端服务器与前端服务器之间的长连接通道向所述前端服务器推送一次服务器发送事件,所述服务器发送事件携带所述排序数据,以使所述前端服务器基于所述排序数据生成排行榜。
6、根据本发明提供的一种排行榜生成方法,所述在分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据,包括:
7、调用携带所述用户的标识和所述本次操作的操作数据的自增指令,在所述分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增所述本次操作的操作数据。
8、根据本发明提供的一种排行榜生成方法,所述从所述分布式内存数据库中查询已经排序完成的各所述用户的所述当前累计操作数据,包括:
9、在所述当前累计操作数据存储到所述分布式内存数据库的过程中,对各所述用户的所述当前累计操作数据进行排序;
10、查询已经排序完成的各所述用户的所述当前累计操作数据。
11、根据本发明提供的一种排行榜生成方法,所述在所述当前累计操作数据存储到所述分布式内存数据库的过程中,对各所述用户的所述当前累计操作数据进行排序,包括:
12、以有序集合作为所述分布式内存数据库的数据存储格式,在所述当前累计操作数据加入所述有序集合的过程中,对各所述用户的所述当前累计操作数据进行排序。
13、根据本发明提供的一种排行榜生成方法,所述有序集合的元素为用户的标识,所述有序集合的分数为用户的所述当前累计操作数据,所述有序集合的值为用户的最后一次操作的纳秒级时间戳。
14、第二方面,本发明还提供一种排行榜生成方法,应用于前端服务器,所述方法包括:
15、监听后端服务器通过所述后端服务器与所述前端服务器之间的长连接通道推送的服务器发送事件;
16、在监听到所述服务器发送事件的情况下,获取所述服务器发送事件中携带的排序数据;所述排序数据是所述后端服务器从分布式内存数据库中查询到的已经排序完成的各用户的当前累计操作数据;所述当前累计操作数据是在所述分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据得到的;所述本次操作为所述用户触发的影响排行的操作;所述自增为原子操作;
17、基于所述排序数据生成排行榜。
18、根据本发明提供的一种排行榜生成方法,还包括:
19、在所述前端服务器启动时,向所述后端服务器发送长连接请求,以建立所述后端服务器与所述前端服务器之间的长连接通道。
20、第三方面,本发明还提供一种排行榜生成装置,包括:
21、数据计算模块,用于针对每个用户,响应于所述用户触发的影响排行的操作,在分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据,得到当前累计操作数据;所述自增为原子操作;
22、数据查询模块,用于从所述分布式内存数据库中查询已经排序完成的各所述用户的所述当前累计操作数据,得到排序数据;
23、事件推送模块,用于通过后端服务器与前端服务器之间的长连接通道向所述前端服务器推送一次服务器发送事件,所述服务器发送事件携带所述排序数据,以使所述前端服务器基于所述排序数据生成排行榜。
24、第四方面,本发明还提供一种排行榜生成装置,包括:
25、事件监听模块,用于监听后端服务器通过所述后端服务器与前端服务器之间的长连接通道推送的服务器发送事件;
26、数据获取模块,用于在监听到所述服务器发送事件的情况下,获取所述服务器发送事件中携带的排序数据;所述排序数据是所述后端服务器从分布式内存数据库中查询到的已经排序完成的各用户的当前累计操作数据;所述当前累计操作数据是在所述分布式内存数据库中存储的所述用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据得到的;所述本次操作为所述用户触发的影响排行的操作;所述自增为原子操作;
27、排行榜生成模块,用于基于所述排序数据生成排行榜。
28、第五方面,本发明还提供一种后端服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面任一种所述的排行榜生成方法。
29、第六方面,本发明还提供一种前端服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第二方面任一种所述的排行榜生成方法。
30、第七方面,本发明还提供一种排行榜生成系统,包括第五方面所述的后端服务器和第六方面所述的前端服务器。
31、第八方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面任一种所述的排行榜生成方法,或实现如上述第二方面任一种所述的排行榜生成方法。
32、第九方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述第一方面任一种所述的排行榜生成方法,或实现如上述第二方面任一种所述的排行榜生成方法。
33、本发明提供的排行榜生成方法、装置、设备、系统及存储介质,首先,后端服务器针对每个用户,响应于用户触发的影响排行的操作,在分布式内存数据库中存储的用户的标识对应的历史累计操作数据的基础上自增本次操作的操作数据,得到当前累计操作数据;由于采用自增操作来代替现有的查询、计算和存储操作,使得用户的单次操作无需连接两次数据库;并且,由于自增为原子操作,是不可分割的,不会因为窗口期问题导致最终计算错误,所以用户无需等待上一次操作结束就可以连续进行操作;这样,可以提升用户单次操作的响应效率,使用户体验更加流畅;而后,从分布式内存数据库中查询已经排序完成的各用户的当前累计操作数据,得到排序数据;由于在当前累计操作数据存储到分布式内存数据库时就已经排序完成,无需分组查询所有用户数据并进行排序,可以极大地提升数据统计效率;最后,通过后端服务器与前端服务器之间的长连接通道向前端服务器推送一次服务器发送事件,服务器发送事件携带排序数据,以使前端服务器基于排序数据生成排行榜;由于通过长连接通道推送携带排序数据的服务器发送事件,这个过程仅毫秒级别,且数据传输更稳定,可以提升排行榜生成的实时性。因此,本发明可以提升用户单次操作的响应效率,使用户体验更加流畅,并且可以提升排行榜生成的实时性。
本文地址:https://www.jishuxx.com/zhuanli/20240615/78352.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表