掌桥专利:专业的专利平台
掌桥专利
首页

用于处理用户互动数据的方法、装置及计算机可读介质

文献发布时间:2024-04-18 20:01:55


用于处理用户互动数据的方法、装置及计算机可读介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种处理用户互动数据的方法、设备及计算机可读介质。

背景技术

现有的视频网站等社交网络平台,用户可通过多种互动方式来与其他用户进行互动。例如,对其他用户上传的视频、文章等内容进行点赞、评论或转发等等。发生用户互动行为后,需要通知相应的用户与其相关的用户互动消息。然而,如果互动数据可能数量巨大,基于这些数量巨大的互动数据为用户提供互动通知和查询互动数据的功能成为挑战。

例如,在视频网站中,热门的视频稿件每天可能有亿级点赞量,千万级评论/回复量以及百万级的@,而相应的互动通知的数据全部来源于业务上游,如点赞平台、评论业务、账号侧、稿件侧等等,有的上游业务流量非常大,直接通过接口调用来推送通知可能会造成明显的性能问题。

发明内容

本申请的多个方面提供一种用于处理用户互动数据的方法、装置及计算机可读介质。

本申请的一方面,提供一种用于处理用户互动数据的方法,其中,所述方法包括:

接收来自客户端的用户互动消息;

基于所述用户互动消息的互动主体,将所述用户互动消息和已存储的对应于所述互动主体的用户互动数据进行聚合处理,得到相应的互动聚合数据;

将所述互动聚合数据对应的互动通知信息发送至相应的客户端设备;

其中,所述方法还包括:

基于所述互动聚合数据在目标存储件中进行数据写入处理,并相应地在其他存储件中进行数据更新处理,所述目标存储件和其他存储件用于存储用户互动数据。

本申请的一方面,提供一种用于查询用户互动数据的方法,其中,所述方法包括:

客户端设备响应于用户的互动查询操作,发送互动查询请求至服务端设备;

服务端设备接收来自客户端设备的互动查询请求;

服务端设备基于所述互动查询请求在所述目标存储件中进行查询,得到相应的用户互动数据;

服务端设备将所述用户互动数据对应的互动详情信息发送至所述客户端设备;

客户端设备接收所述互动详情信息。

本申请的一方面,提供一种用于处理用户互动数据的装置,其中,所述装置包括:

用于接收来自客户端的用户互动消息的装置;

用于基于所述用户互动消息的互动主体,将所述用户互动消息和已存储的对应于所述互动主体的用户互动数据进行聚合处理,得到相应的互动聚合数据的装置;

用于将所述互动聚合数据对应的互动通知信息发送至相应的客户端设备的装置;

其中,所述装置还包括:

用于基于所述互动聚合数据在目标存储件中进行数据写入处理,并相应地在其他存储件中进行数据更新处理的装置,所述目标存储件和其他存储件用于存储用户互动数据。

本申请的另一方面,提供一种电子设备,所述电子设备包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行申请实施例的方法。

本申请的另一方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现申请实施例的方法。

本申请实施例提供的方案,通过对用户互动数据进行聚合处理再进行数据存储和互动通知的推送,提升了传输效率,从而能够对大量的用户互动数据进行处理而不显著地影响设备性能;通过采用键值型存储件来存储用户互动数据,实现了用户互动数据的快速查询;通过采用多种存储结构来存储用户互动数据,如未能在键值型存储件中查询到需要的用户互动数据,则通过缓存或数据库进行查询,以保证向用户提供所需要查看的用户互动数据。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了本申请实施例提供的一种处理用户互动数据的方法的流程示意图;

图2示出了本申请实施例提供的一种用于查询用户互动数据的方法的流程示意图;

图3示出了本申请实施例提供的用于处理用户互动数据的装置的结构示意图;

图4出了根据本申请实施例的用于查询用户互动数据的服务端设备和客户端设备的结构示意图;

图5示出了适用于实现本申请实施例中的方案的一种设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请一个典型的配置中,终端、服务网络的设备均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机程序指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

图1示出了本申请实施例提供的一种用于进行数据处理和传输的方法的流程示意图。所述方法至少包括步骤S101、步骤S102、步骤S103和步骤S104。

在实际场景中,该方法的执行主体可以是网络设备,或者也可以是运行于网络设备的应用程序,所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现,可以用于实现设置闹钟时的部分处理功能。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

在视频网站等社交网络的场景中,所述方法可由用于提供通知业务服务的服务器执行。其中,作为内容提供者的用户上传视频等稿件之后,其他用户可针对该稿件进行点赞、评论或转发等操作来进行互动。所述服务器在接收到这些行为对应的用户互动消息后,向内容提供者所在的客户端设备发送相应的通知,以告知有新的互动消息。

参照图1,在步骤S101中,接收来自客户端的用户互动消息。

其中,所述用户互动消息包括各种与用户互动行为相关的信息。所述用户互动行为包括但不限于用户对某个稿件进行点赞、评论或@其他用户的行为。

可选地,所述用户互动消息包括但不限于以下至少任一项信息:

1)作出互动行为的用户及该用户对应的客户端设备的标识信息;

2)用户互动行为针对的对象的标识信息;例如,被点赞、评论或转发的视频ID、评论ID、动态ID等;

3)用户互动行为针对的用户及该用户对应的客户端设备的标识信息;例如,被点赞、评论或转发的up主的用户ID及其所在的客户端设备ID等;

4)用户互动行为的时间信息。

可选地,所述方法通过消息队列来存储接收到的用户互动消息。

可选地,所述方法通过数据总线(databus)队列来存储接收到的用户互动消息,以保证存储的用户互动消息的有序性。

在步骤S102中,基于所述用户互动消息的互动主体,将所述用户互动消息和已存储的对应于所述互动主体的用户互动数据进行聚合处理,得到相应的互动聚合数据。

其中,所述互动主体为用户互动行为对应的对象。

可选地,所述互动主体包括但不限于稿件、评论、动态等。

其中,所述互动聚合数据为进行聚合处理后得到的用户互动数据。所述聚合处理用于将对应于同一互动主体的多项用户互动数据聚合为一项数据。

其中,所述聚合处理包括但不限于以下至少任一项:

1)合并处理;

2)删除处理;

3)同步处理;例如将用户消息卡片未读数进行同步调整等。

根据一个实施例,所述步骤S102包括步骤S1021至步骤S1023。

在步骤S1021中,基于所述用户互动消息的互动主体,在目标存储件中进行查询,来获取与该互动主体对应的用户互动数据。

其中,所述目标存储件为分布式的键值(Key-Value,KV)型存储组件。可基于Key来在KV型存储组件存储的数据中进行查询。所述方法可基于预定的规则来得到Key值和Value值。

例如,点赞消息为例,用户查询的点赞消息列表所用到的key主要包括用户id、业务类型、点赞时间、点赞主体聚合消息id。其中,value主要包含被点赞的主体id、消息id、点赞人id、点赞聚合消息变更时间、新收到的赞数、总赞人数、点赞人中粉丝数最高的前N个用户的用户id等信息。

在步骤S1022中,基于获取到的用户互动数据,确定是否需要对所述用户互动消息进行聚合处理。

可选地,所述方法判断用户是否存在未读取的消息,如果存在则确定需要对所述用户互动消息进行聚合处理。其中,所述未读取的消息包括新的消息和之前发送失败的消息。

以点赞消息为例,点赞消息分为最新消息和历史消息。确定是否存在新消息时,首先需要确定用户上一次已读的消息位点,以该消息位点对应的时间为基准确定是否还有最新消息未读。

在步骤S1023中,如果需要进行聚合处理,将所述用户互动消息和目标存储件中与该互动主体对应的用户互动数据进行聚合处理,生成相应的互动聚合数据。

在步骤S103中,将所述互动聚合数据对应的互动通知信息发送至相应的客户端设备。

可选地,所述方法将互动聚合数据作为互动通知信息来发送至相应的客户端设备。

可选地,所述方法对互动聚合数据进行预定的处理操作,来得到相应的互动通知信息。例如,可从互动聚合数据中提取部分数据,或者按照预定的消息格式从互动聚合数据中获取对应的数据来生成预定消息格式的互动通知信息等。接着,将所述互动通知信息发送至相应的客户端设备,以告知用户存在未读的用户互动消息。

其中,所述互动通知信息包括各种类型的通知信息,例如,push或im notify消息等。

根据一个实施例,如果互动通知信息没有成功发送至相应的客户端设备,则在目标缓存中进行存储。所述方法定期地在所述目标缓存中进行扫描,确定是否存在发送失败的互动通知信息,从而将发送失败的互动通知信息再次发送至相应的客户端设备。

继续参照图1进行说明,在步骤S104中,基于所述互动聚合数据在目标存储件中进行数据写入处理,并相应地在其他存储件中进行数据更新处理。

其中,所述目标存储件和其他存储件用于存储用户互动数据。

根据一个实施例,所述方法采用目标存储件和目标缓存来存储用户互动数据,其中,所述目标缓存为内存型存储组件,例如,本实施例的目标缓存可采用远程字典服务(Remote Dictionary Server,Redis)缓存。本实施例的方法在步骤S104中将互动聚合数据存储至目标存储件后,基于所述互动聚合数据来刷新目标缓存中的用户互动数据。

可选地,所述方法在成功将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来同步删除目标缓存中的用户互动数据。

可选地,本实施例的方法在目标缓存中存储预定时间段的用户互动数据。例如,在Redis缓存中存储最近6小时的用户互动数据。

本实施例的方法采用目标存储件和目标缓存的两级存储方案,使得数据层和其他服务层的交互接口增加间接,易于操作。

根据一个实施例,所述方法采用目标存储件、目标缓存和目标数据库来存储用户互动数据。其中,所述目标数据库为关系型数据库,例如,TiDB等。并且,所述方法在目标缓存中存储预定时间段的用户互动数据,在所述目标数据库中保存全量数据。

本实施例的方法在步骤S104中将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来刷新目标缓存中的用户互动数据并异步更新目标数据库中的用户互动数据。

可选地,所述方法在成功将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来同步删除目标缓存中的用户互动数据,并异步更新目标数据库中的用户互动数据。

本实施例的采用目标存储件、目标缓存和目标数据库的三级存储方案,相比两级存储方案,加入诸如TiDB的数据库作为后备的数据库,在目标存储件和目标缓存均无法提供所需数据时在所述数据库中获取所需要的数据。

根据一个实施例,所述方法还包括步骤S105。

在步骤S105中,响应于来自客户端设备的修改行为请求,相应地更新目标存储件中的用户互动数据,并在其他存储件中进行数据更新处理。

其中,所述修改行为请求对应于用户修改行为,所述用户修改行为包括但不限于用户删除消息卡片、更新配置等等。

具体地,如果其他存储件包括目标缓存,更新所述目标存储件的用户互动数据后,相应地基于所述修改行为请求来刷新目标缓存中的用户互动数据;如果其他存储件包括目标缓存和目标数据库,更新所述目标存储件的用户互动数据后,相应地基于所述修改行为请求来刷新目标缓存中的用户互动数据并异步更新目标数据库中的用户互动数据。

可选地,如果在所述目标存储件中更新失败,则返回自定义错误提示。如果在所述目标存储件中更新成功,则刷新所述目标缓存中的用户互动数据。如果所述方法还采用目标数据库来存储用户互动数据,则在所述目标存储件中更新成功后,异步更新所述目标数据库中的用户互动数据。

下面结合一个示例对本申请实施例的方法进行说明。

根据本申请的第一示例,所述方法由视频网站的服务端设备执行,该服务端设备对应的服务架构包括业务网关层、互动通知服务层、互动通知异步任务层和数据层。

其中,所述业务网关层用于统一鉴权、反黑灰产等统一流量筛选。

其中,所述互动通知服务层作为面对客户端流量的直接接口,提供统一的远程过程调用(Remote Procedure Call,RPC)接口,并对接收到的用户互动消息进行聚合处理。

其中,所述互动通知异步任务层主要用于用户互动数据的写入、刷新缓存、为下游其他服务提供用户互动的异步消息等功能。

其中,所述数据层包括KV型数据库(表示为taishan kv)、Redis缓存和TiDB数据库。其中,taishan kv的数据存放在SSD中。

以用户点赞行为为例,用户点赞某个视频稿件video_1后,该用户所在的客户端设备将与该点赞行为对应的用户互动消息通过发送至业务网关层。业务网关层调用RPC接口将该用户互动消息上报至互动通知服务层,互动通知服务层通过databus将与该点赞行为对应的用户行为数据发布(pub)至消息队列中。

并且,互动通知服务层基于所述用户互动消息的互动主体,即用户点赞的稿件,在taishan kv中进行查询,来获取与该稿件对应的用户互动数据。并基于获取到的用户互动数据,确定是否需要对该用户互动消息进行聚合处理。如果需要进行聚合处理,将所述用户互动消息和taishan kv中与该稿件对应的用户互动数据进行聚合处理,生成相应的互动聚合数据。

接着,互动通知异步任务层基于所述互动聚合数据,将相应的数据写入taishankv、并刷新Redis缓存。并且,互动通知异步任务层通过databus将相应的数据发送至推送平台,从而向视频稿件video_1的上传者对应的客户端设备发送相应的push或者im notify的消息,以告其由未读的用户互动消息。

对于用户删除消息卡片、更新配置等用户修改等用户修改行为。本示例的方法响应于该用户修改行为,相应地更新taishan kv中的用户互动数据,并且,本示例的方法采用报错即重试的方式保证数据一致,如果操作多次仍然失败,则返回自定义错误提示,成功则异步更新TiDB数据库,并同步删除Redis缓存。对于已读消息或未读消息等大流量接口,则全部使用Redis缓存来存储相应的数据,从而降低该大流量接口的响应时间(ResponseTime,RT)。

根据本申请实施例的方法,通过对用户互动数据进行聚合处理再进行数据存储和互动通知的推送,提升了传输效率,从而能够对大量的用户互动数据进行处理而不显著地影响设备性能;通过采用键值型存储件来存储用户互动数据,实现了用户互动数据的快速查询;通过采用多种存储结构来存储用户互动数据,如未能在键值型存储件中查询到需要的用户互动数据,则通过缓存或数据库进行查询,以保证向用户提供所需要查看的用户互动数据。

图2示出了本申请实施例提供的一种用于查询用户互动数据的方法的流程示意图。所述方法包括由客户端设备执行的步骤S201和步骤S202,和由服务端设备执行的步骤S106至步骤S108。

参照图2,在步骤S201中,客户端设备响应于用户的互动查询操作,发送互动查询请求至服务端设备。

其中,所述互动查询查询操作包括各种可用于查询用户互动数据的用户行为。例如,用于可通过点击或长按互动通知信息来查询与该互动通知对应的用户互动数据,或者用户可在查询页面中通过选择操作或输入操作来查询所需要的用户互动数据等。

在步骤S106中,服务端设备接收来自客户端设备的互动查询请求。

在步骤S107中,服务端设备基于所述互动查询请求在所述目标存储件中进行查询,得到相应的用户互动数据。

可选地,所述客户端设备基于用于点击接收到的互动通知的操作,将所述互动通知的相关信息包含于发送至服务端设备的互动查询请求。服务端设备直接基于所述互动通知在所述目标存储件中进行查询,得到该互动通知对应的用户互动数据。

可选地,所述互动查询请求可包括用户输入的查询信息,所述查询信息包括但不限于需要查询的用户互动数据对应的互动主体或数据类型等。服务端设备基于所述查询信息在所述目标存储件中进行查询,得到与该查询信息相匹配用户互动数据。

例如,用户想要查询其上传的某个视频在点赞数据,并且该用户在查询互动数据的详情页面中,输入相应的查询信息,该查询信息包括:该用户想要查询的视频ID和想要查询的互动数据类型“点赞数据”。则该用户所在的客户端设备将该查询信息包含于互动查询请求并发送至服务端设备。服务端设备在所述目标存储件中基于该查询信息进行查询,得到相匹配的该视频ID的点赞数据。

可选地,如果在所述目标存储件中未获取到相应的用户互动数据,则服务端设备在目标缓存或目标数据库中通过基于所述互动查询请求进行查询来获取相应的用户互动数据。

在步骤S108中,服务端设备将所述用户互动数据对应的互动详情信息发送至所述客户端设备。

其中,所述互动详情信息可包括部分或全部的用户互动数据。

在步骤S202中,客户端设备接收所述互动详情信息。

根据本申实施例的方法,通过采用键值型存储件来存储用户互动数据,实现了用户互动数据的快速查询;通过采用多种存储结构来存储用户互动数据,如未能在键值型存储件中查询到需要的用户互动数据,则通过缓存或数据库进行查询,以保证向用户提供所需要查看的用户互动数据。

继续对前述第一示例进行说明,视频稿件video_1的上传者在收到来推送消息或者im notify的互动通知后,在自身所在的客户端设备中点击接收到的互动通知来查询相应的互动详情信息。客户端设备响应于该点击操作,发送相应的互动查询请求至服务端设备。服务端设备基于该互动查询请求在taishan kv中进行查询,获取到视频稿件video_1相关的对应于接收到的互动通知的用户互动数据,并将获取到的全部用户互动数据作为互动详情信息发送至该服务端设备。客户端设备接收该互动详情信息,并将该互动详情信息进行展示。

本示例的方法优先查询目标存储件taishan kv,一般可满足用户互动数据的快速查询。如果taishan kv发生抖动,其接口会瞬时不可用,如果taishan的proxy接口报错,会降级请求查询Redis缓存。Redis缓存中保存用户最近6小时的互动数据,如果查询报错或者无数据,会再次降级查询TiDB数据库,并将查询结果异步更新Redis缓存,从而保证向用户提供所需要查看的用户互动数据。

此外,本申请实施例还提供了一种用于处理用户互动数据的装置,该设备的结构如图3所示。

其中,所述装置包含于服务端设备。

所述装置包括:用于接收来自客户端的用户互动消息的装置(以下简称“消息接收装置101”);用于基于所述用户互动消息的互动主体,将所述用户互动消息和已存储的对应于所述互动主体的用户互动数据进行聚合处理,得到相应的互动聚合数据的装置(以下简称“数据聚合装置102”);用于将所述互动聚合数据存储至目标存储件的装置(以下简称“数据存储装置103”);用于将所述互动聚合数据对应的互动通知信息发送至相应的客户端设备的装置(以下简称“通知发送装置104”)。

参照图3,消息接收装置101接收来自客户端的用户互动消息。

其中,所述用户互动消息包括各种与用户互动行为相关的信息。所述用户互动行为包括但不限于用户对某个稿件进行点赞、评论或@其他用户的行为。

可选地,所述用户互动消息包括但不限于以下至少任一项信息:

1)作出互动行为的用户及该用户对应的客户端设备的标识信息;

2)用户互动行为针对的对象的标识信息;例如,被点赞、评论或转发的视频ID、评论ID、动态ID等;

3)用户互动行为针对的用户及该用户对应的客户端设备的标识信息;例如,被点赞、评论或转发的up主的用户ID及其所在的客户端设备ID等;

4)用户互动行为的时间信息。

可选地,所述装置通过消息队列来存储接收到的用户互动消息。

可选地,所述装置通过数据总线(databus)队列来存储接收到的用户互动消息,以保证存储的用户互动消息的有序性。

数据聚合装置102基于所述用户互动消息的互动主体,将所述用户互动消息和已存储的对应于所述互动主体的用户互动数据进行聚合处理,得到相应的互动聚合数据。

其中,所述互动主体为用户互动行为对应的对象。

可选地,所述互动主体包括但不限于稿件、评论、动态等。

其中,所述互动聚合数据为进行聚合处理后得到的用户互动数据。所述聚合处理用于将对应于同一互动主体的多项用户互动数据聚合为一项数据。

其中,所述聚合处理包括但不限于以下至少任一项:

1)合并处理;

2)删除处理;

3)同步处理;例如将用户消息卡片未读数进行同步调整等。

根据一个实施例,所述数据聚合装置102包括数据查询装置、聚合确定装置和聚合处理装置。

数据查询装置基于所述用户互动消息的互动主体,在目标存储件中进行查询,来获取与该互动主体对应的用户互动数据。

其中,所述目标存储件为分布式的键值(Key-Value,KV)型存储组件。可基于Key来在KV型存储组件存储的数据中进行查询。所述方法可基于预定的规则来得到Key值和Value值。

例如,点赞消息为例,用户查询的点赞消息列表所用到的key主要包括用户id、业务类型、点赞时间、点赞主体聚合消息id。其中,value主要包含被点赞的主体id、消息id、点赞人id、点赞聚合消息变更时间、新收到的赞数、总赞人数、点赞人中粉丝数最高的前N个用户的用户id等信息。

聚合确定装置基于获取到的用户互动数据,确定是否需要对所述用户互动消息进行聚合处理。

可选地,所述方法判断用户是否存在未读取的消息,如果存在则确定需要对所述用户互动消息进行聚合处理。其中,所述未读取的消息包括新的消息和之前发送失败的消息。

以点赞消息为例,点赞消息分为最新消息和历史消息。确定是否存在新消息时,首先需要确定用户上一次已读的消息位点,以该消息位点对应的时间为基准确定是否还有最新消息未读。

如果需要进行聚合处理,聚合处理装置将所述用户互动消息和目标存储件中与该互动主体对应的用户互动数据进行聚合处理,生成相应的互动聚合数据。

通知发送装置103将所述互动聚合数据对应的互动通知信息发送至相应的客户端设备。

可选地,通知发送装置103将互动聚合数据作为互动通知信息来发送至相应的客户端设备。

可选地,所述装置对互动聚合数据进行预定的处理操作,来得到相应的互动通知信息。例如,可从互动聚合数据中提取部分数据,或者按照预定的消息格式从互动聚合数据中获取对应的数据来生成预定消息格式的互动通知信息等。接着,通知发送装置103将所述互动通知信息发送至相应的客户端设备,以告知用户存在未读的用户互动消息。

其中,所述互动通知信息包括各种类型的通知信息,例如,push或im notify消息等。

根据一个实施例,如果互动通知信息没有成功发送至相应的客户端设备,则在目标缓存中进行存储。所述通知发送装置104定期地在所述目标缓存中进行扫描,确定是否存在发送失败的互动通知信息,从而将发送失败的互动通知信息再次发送至相应的客户端设备。

继续参照图3进行说明,数据存储装置104基于所述互动聚合数据在目标存储件中进行数据写入处理,并相应地在其他存储件中进行数据更新处理。其中,所述目标存储件和其他存储件用于存储用户互动数据

根据一个实施例,数据存储装置104采用目标存储件和目标缓存来存储用户互动数据,其中,所述目标缓存为内存型存储组件,例如,本实施例的目标缓存可采用Redis缓存。数据存储装置104将互动聚合数据存储至目标存储件后,基于所述互动聚合数据来刷新目标缓存中的用户互动数据。

可选地,数据存储装置104在成功将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来同步删除目标缓存中的用户互动数据。

可选地,数据存储装置104在目标缓存中存储预定时间段的用户互动数据。例如,在Redis缓存中存储最近6小时的用户互动数据。

本实施例的方法采用目标存储件和目标缓存的两级存储方案,使得数据层和其他服务层的交互接口增加间接,易于操作。

根据一个实施例,数据存储装置104采用目标存储件、目标缓存和目标数据库来存储用户互动数据。其中,所述目标数据库为关系型数据库,例如,TiDB等。并且,所述方法在目标缓存中存储预定时间段的用户互动数据,在所述目标数据库中保存全量数据。

数据存储装置104将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来刷新目标缓存中的用户互动数据并异步更新目标数据库中的用户互动数据。

可选地,数据存储装置104在成功将所述互动聚合数据存储至目标存储件后,基于所述互动聚合数据来同步删除目标缓存中的用户互动数据,并异步更新目标数据库中的用户互动数据。

本实施例的采用目标存储件、目标缓存和目标数据库的三级存储方案,相比两级存储方案,加入诸如TiDB的数据库作为后备的数据库,在目标存储件和目标缓存均无法提供所需数据时在所述数据库中获取所需要的数据。

根据一个实施例,所述装置还包括修改更新装置105。

修改更新装置105响应于来自客户端设备的修改行为请求,相应地更新目标存储件中的用户互动数据,并在其他存储件中进行数据更新处理。

其中,所述修改行为请求对应于用户修改行为,所述用户修改行为包括但不限于用户删除消息卡片、更新配置等等。

具体地,如果其他存储件包括目标缓存,修改更新装置105更新所述目标存储件的用户互动数据后,相应地基于所述修改行为请求来刷新目标缓存中的用户互动数据;如果其他存储件包括目标缓存和目标数据库,修改更新装置105更新所述目标存储件的用户互动数据后,相应地基于所述修改行为请求来刷新目标缓存中的用户互动数据并异步更新目标数据库中的用户互动数据。

可选地,如果在所述目标存储件中更新失败,则修改更新装置105返回自定义错误提示。如果在所述目标存储件中更新成功,则修改更新装置105刷新所述目标缓存中的用户互动数据。如果还采用目标数据库来存储用户互动数据,则修改更新装置105在所述目标存储件中更新成功后,异步更新所述目标数据库中的用户互动数据。

根据本申请实施例的装置,通过对用户互动数据进行聚合处理再进行数据存储和互动通知的推送,提升了传输效率,从而能够对大量的用户互动数据进行处理而不显著地影响设备性能;通过采用键值型存储件来存储用户互动数据,实现了用户互动数据的快速查询;通过采用多种存储结构来存储用户互动数据,如未能在键值型存储件中查询到需要的用户互动数据,则通过缓存或数据库进行查询,以保证向用户提供所需要查看的用户互动数据。

图4出了根据本申请实施例的用于查询用户互动数据的服务端设备和客户端设备的结构示意图。

其中,所述服务端设备包括:用于接收来自客户端设备的互动查询请求的装置(以下简称“请求接收装置106”);用于基于所述互动查询请求在所述目标存储件中进行查询,得到相应的用户互动数据的装置(以下简称“数据获取装置107”);用于将所述用户互动数据对应的互动详情信息发送至所述客户端设备的装置(以下简称“数据发送装置108”)。

所述客户端设备包括:用于响应于用户的互动查询操作,发送互动查询请求至服务端设备的装置(以下简称“请求发送装置201”)和用于接收所述互动详情信息的装置(以下简称“数据接收装置202”)。

请求发送装置201响应于用户的互动查询操作,发送互动查询请求至服务端设备。

其中,所述互动查询查询操作包括各种可用于查询用户互动数据的用户行为。例如,用于可通过点击或长按互动通知信息来查询与该互动通知对应的用户互动数据,或者用户可在查询页面中通过选择操作或输入操作来查询所需要的用户互动数据等。

请求接收装置106接收来自客户端设备的互动查询请求。

数据获取装置107基于所述互动查询请求在所述目标存储件中进行查询,得到相应的用户互动数据。

可选地,所述请求发送装置201基于用于点击接收到的互动通知的操作,将所述互动通知的相关信息包含于发送至服务端设备的互动查询请求。数据获取装置107直接基于所述互动通知在所述目标存储件中进行查询,得到该互动通知对应的用户互动数据。

可选地,所述互动查询请求可包括用户输入的查询信息,所述查询信息包括但不限于需要查询的用户互动数据对应的互动主体或数据类型等。服务端设备基于所述查询信息在所述目标存储件中进行查询,得到与该查询信息相匹配用户互动数据。

例如,用户想要查询其上传的某个视频在点赞数据,并且该用户在查询互动数据的详情页面中,输入相应的查询信息,该查询信息包括:该用户想要查询的视频ID和想要查询的互动数据类型“点赞数据”。则该用户所在的客户端设备的请求发送装置201将该查询信息包含于互动查询请求并发送至服务端设备。数据获取装置107在所述目标存储件中基于该查询信息进行查询,得到相匹配的该视频ID的点赞数据。

可选地,如果在所述目标存储件中未获取到相应的用户互动数据,则数据获取装置107在目标缓存或目标数据库中通过基于所述互动查询请求进行查询来获取相应的用户互动数据。

数据发送装置108将所述用户互动数据对应的互动详情信息发送至所述客户端设备。

其中,所述互动详情信息可包括部分或全部的用户互动数据。

数据接收装置202接收所述互动详情信息。

根据本申实施例的装置,通过采用键值型存储件来存储用户互动数据,实现了用户互动数据的快速查询;通过采用多种存储结构来存储用户互动数据,如未能在键值型存储件中查询到需要的用户互动数据,则通过缓存或数据库进行查询,以保证向用户提供所需要查看的用户互动数据。

基于同一发明构思,本申请实施例中还提供了一种电子设备,所述电子设备对应的方法可以是前述实施例中的用于进行数据处理和传输的方法,并且其解决问题的原理与该方法相似。本申请实施例提供的所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述本申请的多个实施例的方法和/或技术方案。

所述电子设备可以是用户设备、或者用户设备与网络设备通过网络相集成所构成的设备,或者也可以是运行于上述设备的应用程序,所述用户设备包括但不限于计算机、手机、平板电脑、智能手表、手环等各类终端设备,所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现,可以用于实现设置闹钟时的部分处理功能。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。

图5示出了适用于实现本申请实施例中的方法和/或技术方案的一种设备的结构,该设备1200包括中央处理单元(CPU,Central Processing Unit)1201,其可以根据存储在只读存储器(ROM,Read Only Memory)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM,Random Access Memory)1203中的程序而执行各种适当的动作和处理。在RAM1203中,还存储有系统操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O,Input/Output)接口1205也连接至总线1204。

以下部件连接至I/O接口1205:包括键盘、鼠标、触摸屏、麦克风、红外传感器等的输入部分1206;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,LiquidCrystal Display)、LED显示器、OLED显示器等以及扬声器等的输出部分1207;包括硬盘、光盘、磁盘、半导体存储器等一个或多个计算机可读介质的存储部分1208;以及包括诸如LAN(局域网,Local Area Network)卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。

特别地,本申请实施例中的方法和/或实施例可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在该计算机程序被中央处理单元(CPU)1201执行时,执行本申请的方法中限定的上述功能。

本申请另一实施例还提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令可被处理器执行以实现前述本申请的任意一个或多个实施例的方法和/或技术方案。

具体来说,本实施例可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图或框图示出了按照本申请各种实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的针对硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或页面组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

技术分类

06120116566473