内容数据分发的方法、装置及系统与流程

文档序号:19019990发布日期:2019-11-01 20:36阅读:279来源:国知局
内容数据分发的方法、装置及系统与流程

本公开涉及计算机技术领域,尤其涉及一种内容数据分发的方法、装置及系统。



背景技术:

在有社交属性的app(application,应用程序)中,往往有用户的关注操作,当你关注了某个用户的时候,你就成为了这个用户的关注者。当该用户发布了一条新的内容的时候,需要将这条新内容分发给所有关注这个用户的关注者。

相关技术当用户发布新的内容时,某一机房接收并存储用户发布的内容,并得到该内容的id,然后将该内容的id发送至kafka设备集群中,然后,kafka设备集群会将该内容的id分发到每个机房组中的一个机房中。从而,关注者可以从该机房请求这一内容。

在默认情况下,所有机房都属于同一个机房组,所以kafka设备集群只会将内容的id分发到一个机房中,从而,当关注者的终端从其它机房中请求内容时,会请求失败。



技术实现要素:

本公开提供了一种内容数据分发的方法、装置及系统,以至少解决相关技术中kafka设备集群只会将内容的id分发到一个机房,使得关注者的终端从其它机房请求内容时会请求失败的技术问题。本公开的技术方案如下:

根据本公开实施例的第一方面,提供一种内容数据分发的方法,包括:

确定当前机房的标识和所述机房所在的初始机房组的标识;

基于所述机房的标识和所述初始机房组的标识,确定更新后的机房组标识;

向kafka设备集群发送携带有所述更新后的机房组标识的id获取请求;

当接收到所述kafka设备集群发送的内容数据的id时,将所述内容数据的id存储到所述机房中。

可选的,所述基于所述机房的标识和所述初始机房组的标识,确定更新后的机房组标识,包括:

将所述机房的标识添加到所述初始机房组的标识中,得到更新后的机房组标识。

可选的,所述当接收到所述kafka设备集群发送的内容数据的id时,将所述内容数据的id存储到所述机房中,包括:

当接收到所述kafka设备集群发送的内容数据的id时,确定所述内容数据的id对应的目标账户;

获取所述目标账户的所有关注者账户,并确定在所述机房中每个关注者账户对应的缓存索引表,将所述内容数据的id存储到每个缓存索引表中。

可选的,所述将所述内容数据的id存储到每个缓存索引表中,包括:

基于所述内容数据的id的大小,确定所述内容数据的id在每个缓存索引表中的存储位置,并基于确定出的在每个缓存索引表中的存储位置,将所述内容数据的id存储到每个缓存索引表中。

可选的,所述内容数据为视频数据、音频数据或文字数据中的一种或多种。

根据本公开实施例的第二方面,提供一种内容数据分发的装置,包括:

确定模块,被配置为确定当前机房的标识和所述机房所在的初始机房组的标识;

更新模块,被配置为基于所述机房的标识和所述初始机房组的标识,确定更新后的机房组标识;

发送模块,被配置为向kafka设备集群发送携带有所述更新后的机房组标识的id获取请求;

存储模块,被配置为当接收到所述kafka设备集群发送的内容数据的id时,将所述内容数据的id存储到所述机房中。

可选的,所述更新模块,被配置为:

将所述机房的标识添加到所述初始机房组的标识中,得到更新后的机房组标识。

可选的,所述存储模块,被配置为:

当接收到所述kafka设备集群发送的内容数据的id时,确定所述内容数据的id对应的目标账户;

获取所述目标账户的所有关注者账户,并确定在所述机房中每个关注者账户对应的缓存索引表,将所述内容数据的id存储到每个缓存索引表中。

可选的,所述存储模块,被配置为:

基于所述内容数据的id的大小,确定所述内容数据的id在每个缓存索引表中的存储位置,并基于确定出的在每个缓存索引表中的存储位置,将所述内容数据的id存储到每个缓存索引表中。

可选的,所述内容数据为视频数据、音频数据或文字数据中的一种或多种。

根据本公开实施例提供的第三方面,提供一种系统,所述系统包括机房和kafka设备集群;

所述机房,被配置为确定当前机房的标识和所述机房所在的初始机房组的标识;基于所述机房的标识和所述初始机房组的标识,确定更新后的机房组标识;向kafka设备集群发送携带有所述更新后的机房组标识的id获取请求;当接收到所述kafka设备集群发送的内容数据的id时,将所述内容数据的id存储到所述机房中;

所述kafka设备集群,被配置为接收所述机房发送的id获取请求,并向所述机房发送内容数据的id。

根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如第一方面所述的内容数据分发的方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品中的指令由服务器的处理器执行时,使得服务器能够执行如第一方面所述的内容数据分发的方法。

本公开的实施例提供的技术方案至少带来以下有益效果:

本公开实施例提供的技术方案,通过基于当前机房的标识和初始机房组的标识,确定更新后的机房组标识,并向kafka设备集群发送携带有更新后的机房组标识的id获取请求,并在当接收到kafka设备集群发送的内容数据的id时,将内容数据的id存储到所述机房中。从而,使得不同的机房属于不同的机房组,进而,kafka设备集群会将内容数据的id分发到所有机房中,使得无论关注者的终端从哪一机房请求内容数据,均不会请求失败。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是根据一示例性实施例示出的一种内容数据分发的方法的流程图。

图2是根据一示例性实施例示出的一种内容数据分发的装置的框图。

图3是根据一示例性实施例示出的一种服务器的框图。

图4是根据一示例性实施例示出的一种内容数据分发的场景示意图。

图5是根据一示例性实施例示出的一种内容数据分发的场景示意图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供的方法,可以用于内容数据的分发,可以由机房中的服务器实现。首先介绍一下本公开实施例提供的方法的应用场景,首先,用户终端发布内容数据(如一条说说),该内容数据上传至某一机房中,该机房将上传的内容数据进行存储,并确定内容数据的id。然后,该机房将该内容数据的id发送给kafka设备集群,kafka设备集群在接收到内容数据的id之后,当接收到携带有第一机房组标识的id获取请求时,将该内容数据的id发送至发送该id获取请求的机房中,并记录已向第一机房组标识对应的机房组发送过该内容数据的id,当再次接收到携带有第一机房组标识的id获取请求时,不再发送该内容数据的id,当接收到携带有第二机房组标识的id获取请求时,将该内容数据的id发送至发送该id获取请求的机房中,并记录已向第二机房组标识对应的机房组发送过该内容数据的id,从而,向每个机房组均发送且只向每个机房组发送一次内容数据的id。最后,当该用户的关注者的终端向机房请求内容数据时,机房中的服务器基于存储的内容数据的id,获取对应的内容数据,然后,将该内容数据发送至关注者的终端中。在上述场景中,发送内容数据的用户终端可以称为生产者,获取内容数据的id的服务器可以称为消费者。

本公开实施例提供的方法,可以应用于上述应用场景中,如图5所示,通过基于机房的标识和初始机房组的标识,确定更新后的机房组标识,使得每个机房发送的id获取请求,均携带有不同的机房组标识,从而使得每个机房均可以获取同一内容数据的id。

图1是根据一示例性实施例示出的一种内容数据分发的方法的流程图,如图1所示,内容数据分发的方法用于服务器中,包括以下步骤。

在步骤101中,确定当前机房的标识和机房所在的初始机房组的标识。

其中,当前机房是执行本公开实施例提供的方法的服务器所在的机房。机房的标识,可以是机房的名称,也可以是包含机房的名称的编码,还可以是任意一种可以表征机房身份的编码。初始机房组的标识可以是初始机房组的名称,还可以是初始机房组的编码,也可以是任意一种可以表征初始机房组的编码。

在实施中,基于当前服务器的标识,确定当前机房的标识,其中,当前服务器是执行本公开实施例提供的方法的服务器。可选的,服务器的标识可以是服务器的编码,通过获取服务器的编码,进一步的就可以确定服务器所在的机房。初始机房组是预先定义好的,且所有机房默认均属于同一个初始机房组。

本公开实施了提供的方法的表现形式是消费者进程,消费者即是指机房中的服务器,消费是指消费用户发布的内容数据。机房中的消费者执行消费者程序,运行消费者进程,在消费者程序中定义有消费者所属的初始机房组,由于所有消费者执行的程序均一样,所以所有的消费者默认均属于同一个初始机房组。因此,如果不对初始机房组进行任何处理操作,则所有的消费者进程中只能有一个执行成功,如图4所示。所以还要确定消费者进程所在机房的标识,首先,检测运行消费者进程的服务器的标识,然后,基于服务器的标识确定所在机房的标识。

例如,确定的机房的标识可以为机房的名称机房1,确定的初始机房组的标识可以为groupa。

在确定当前机房的标识和机房所在的初始机房组的标识之后,执行步骤102的处理。

在步骤102中,基于机房的标识和初始机房组的标识,确定更新后的机房组标识。

在实施中,可以基于机房的标识和初始机房组的标识,使用算法,确定更新后的机房组标识,更新后的机房组标识包括机房的标识信息和初始机房组标识的信息,从而每个机房对应的更新后的机房组具有唯一性。也可以将机房的标识与初始机房组的标识进行简单组合。本公开实施例对确定更新后的机房组标识的方法不做限定,但应使得不同的机房的机房组具有唯一性,即不同的机房所属的机房组不同。

可选的,提供一种确定更新后的机房组标识的方法,步骤102相应的处理过程可以如下所述,将机房的标识添加到初始机房组的标识中,得到更新后的机房组标识。

在实施中,可以将机房的标识添加到初始机房组的标识的末尾,也可以将机房的标识添加到初始机房组的标识的首端,还可以将机房的标识添加到初始机房组的标识的内部。本公开实施例对机房的标识添加到初始机房组的标识的位置不做限定,但应使得不同的机房的机房组具有唯一性,即不同的机房所属的机房组不同。

具体的,可以将机房的名称添加到初始机房组的名称末尾,如groupa_机房1,也可将机房的名称添加到初始机房组的名称的首端,如机房1_groupa,还可以将机房的名称添加到初始机房组的名称的内部。

具体实现时,当机房中的消费者进程启动时,确定机房的标识和初始机房组的标识之后,可以自动在初始机房组的标识后面加上机房的标识,例如,groupa_机房1和groupa_机房2等,其中,groupa为初始机房组的标识,机房1和机房2为机房的标识,从而,得到更新后的机房组的标识。

通过上述处理操作,使得相同机房的消费者进程属于同一个机房组,不同机房中的消费者进程属于不同的机房组,从而保证了每个机房都能消费到同一个内容数据,并且每个机房都只会消费一次。

在确定更新后的机房组标识之后,执行步骤103的处理。

在步骤103中,向kafka设备集群发送携带有更新后的机房组标识的id获取请求。

其中,id(identity,唯一编码)是指用户终端发送的内容数据的id,id获取请求中携带有更新后的机房组标识。kafka设备集群中可以包括多个服务器。

在实施中,确定更新后的机房组标识之后,每当达到预设的周期,机房中的服务器向kafka设备集群发送携带有更新后的机房组标识的id获取请求。当kafka设备集群接收到该id获取请求时,会检测自身是否接收到新的内容数据的id,并在检测到接收到新的内容数据的id时(新的内容数据的id,是指在此次和上次接收到携带有相同机房组标识的id获取请求之间,接收到的内容数据的id),将该内容数据的id发送至发送该id获取请求的机房中的服务器中,并记录已向更新后的机房组标识对应的机房组发送过该内容数据的id,当再次有携带有该更新后的机房组标识的id获取请求时,kafka设备集群不再发送内容数据的id。当接收携带有其余机房组标识的id获取请求时,kafka设备集群将该内容数据的id发送。

由于更新后的机房组标识包含机房的标识的信息,因此,如图5所示,不同机房的服务器发送的id获取请求中携带的机房组标识是不同的,相同机房的服务器发送的id获取请求中携带的机房组标识是相同的。因此,kafka设备集群会向每个机房都发送内容数据的id,而且只会向每个机房中发送一次。也即,相同机房的消费者进程属于同一个机房组,不同机房中的消费者进程属于不同的机房组,从而保证了每个机房都能消费到同一个内容数据,并且每个机房都只会消费一次。从而避免内容数据的id被存储两次,避免内容数据在用户终端上重复显示,影响用户的体验。

在步骤104中,当接收到kafka设备集群发送的内容数据的id时,将内容数据的id存储到机房中。

其中,内容数据为视频数据、音频数据或文字数据中的一种或多种。内容数据的表现形式可以为一条说说、一条评论、一条短视频等,内容数据的id也可以称为feedid。

在实施中,在接收到kafka设备集群发送的内容数据的id时,可以将该内容数据的id存储到机房中的存储设备中。

当用户终端向任一机房请求内容数据时,由于任一机房都存储有内容数据的id,所以任一机房都可以基于存储的内容数据的id,获取到内容数据,并将获取到的内容数据发送给用户终端,从而不管用户终端向任一机房请求内容数据,均可以获取到该内容数据,并且如果其中一个机房不可用的时候,另外一个机房也同样可以提供完整的内容数据,不会受到不可用机房的影响,使得内容数据分发的容错性较好。

可选的,为了使得发布内容数据的目标账户的所有关注者都可以获得内容数据,步骤104相应的处理过程可以如下所述,当接收到kafka设备集群发送的内容数据的id时,确定内容数据的id对应的目标账户。获取目标账户的所有关注者账户,并确定在机房中每个关注者账户对应的缓存索引表,将内容数据的id存储到每个缓存索引表中。

其中,缓存索引表用于存放内容数据的id,不同类型的内容数据可以对应有不同的缓存索引表。关注者账户也可以成为粉丝账户。缓存索引表还可以称为feedcache索引。

在实施中,在接收到kafka设备集群发送的内容数据的id后,基于内容数据的id在数据库中查找内容数据的id对应的目标账户,从而确定发布内容数据的目标账户,然后,在根据目标账户的关注关系,确定关注目标账户的所有关注者账户。在每个机房中,每个关注者账户均对应有一个缓存索引表,在缓存索引表中存储有该关注者账户关注的所有账户发布的内容数据的id。在确定所有关注者账户之后,将内容数据的id存储到每个关注者账户中对应的缓存索引表中,从而使每个关注者账户对应的关注者都可以获取该内容数据。

可选的,为了使得关注者获取到的内容数据按一定的顺序显示,步骤104相应的处理过程可以如下所述,基于内容数据的id的大小,确定内容数据的id在每个缓存索引表中的存储位置,并基于确定出的在每个缓存索引表中的存储位置,将内容数据的id存储到每个缓存索引表中。

其中,内容数据的id中包含内容数据的发布时间信息,所以内容数据的id越大说明内容数据发布的越晚。

在实施中,基于内容数据的id的大小,也即内容数据发布的时间的早晚,确定内容数据的id在每个缓存索引表中的存储位置,内容数据的id越大则说明内容数据发布的时间越晚,也即该内容数据越新,则应将内容数据的id按照大小顺序,由上之下存储在缓存索引表中,具体实现时,按照内容数据的id大小降序排列存储,可以通过redis的sortedset来实现,即内容数据的id越大,在缓存索引表中存储位置越往上。从而,保证关注者的终端显示各内容数据时,内容数据按照时间顺序显示,时间越新的内容数据显示的越靠上。

可选的,内容数据的id还可以按照id的大小升序排列存储,从而保证关注者的终端显示各内容数据时,内容数据按照时间顺序显示,时间越早的内容数据显示的越靠上。

本公开实施例提供的技术方案,通过基于当前机房的标识和初始机房组的标识,确定更新后的机房组标识,并向kafka设备集群发送携带有更新后的机房组标识的id获取请求,并在当接收到kafka设备集群发送的内容数据的id时,将内容数据的id存储到所述机房中。从而,使得不同的机房属于不同的机房组,进而,kafka设备集群会将内容数据的id分发到所有机房中,如图5所示,使得无论关注者的终端从哪一机房请求内容数据,均不会请求失败。

图2是根据一示例性实施例示出的一种内容数据分发的装置框图。参照图2,该装置包括确定模块201,更新模块202、发送模块203和存储模块204。

确定模块201,被配置为确定当前机房的标识和机房所在的初始机房组的标识;

更新模块202,被配置为基于机房的标识和初始机房组的标识,确定更新后的机房组标识;

发送模块203,被配置为向kafka设备集群发送携带有更新后的机房组标识的id获取请求;

存储模块204,被配置为当接收到kafka设备集群发送的内容数据的id时,将内容数据的id存储到机房中。

可选的,更新模块202,被配置为:

将机房的标识添加到初始机房组的标识中,得到更新后的机房组标识。

可选的,存储模块204,被配置为:

当接收到kafka设备集群发送的内容数据的id时,确定内容数据的id对应的目标账户;

获取目标账户的所有关注者账户,并确定在机房中每个关注者账户对应的缓存索引表,将内容数据的id存储到每个缓存索引表中。

可选的,存储模块204,被配置为:

基于内容数据的id的大小,确定内容数据的id在每个缓存索引表中的存储位置,并基于确定出的在每个缓存索引表中的存储位置,将内容数据的id存储到每个缓存索引表中。

可选的,内容数据为视频数据、音频数据或文字数据中的一种或多种。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图3是根据一示例性实施例示出的一种服务器300的框图,该服务器300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)301和一个或一个以上的存储器302。其中,所述存储器302中存储有至少一条指令,所述至少一条指令由所述处理器301加载并执行以实现上述实施例所述的内容数据分发的方法。

在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器302,上述指令可由服务器300的处理器301执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由服务器300的处理器301执行,以完成上述内容数据分发的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1