CN109862069A - 消息处理方法和装置 - Google Patents
消息处理方法和装置 Download PDFInfo
- Publication number
- CN109862069A CN109862069A CN201811524003.XA CN201811524003A CN109862069A CN 109862069 A CN109862069 A CN 109862069A CN 201811524003 A CN201811524003 A CN 201811524003A CN 109862069 A CN109862069 A CN 109862069A
- Authority
- CN
- China
- Prior art keywords
- polymerization
- message
- queue
- polymerization example
- processed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例公开了消息处理方法和装置。该方法的一具体实施方式包括:获取待处理的物料消息;将待处理的物料消息映射至已创建的目标聚合实例;响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。该实施方式能够动态自适应地调整消息聚合的速度,能够有效降低消息处理系统的负载。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及信息推送领域,尤其涉及消息处理方法和装置。
背景技术
消息推送系统可以主动向用户推送消息。消息推送系统可以获取大量用户的物料,并基于用户的物料进行用户兴趣分析,基于用户兴趣和热点信息进行推送。
目前的推送系统采用离线统一推送的方式,对多个用户分别基于用户单一的物料统一推送,在处理针对大量用户的推送任务时,系统负载较大。为了降低推送系统重复消息处理次数,降低系统间网络重读消息带来的带宽成本,以及降低多个用户分别请求的造成的系统压力,通常期望将相同物料的用户聚合后统一进行推送。目前基于物料消息聚合的方式是按照不同的用户量级设计不同的聚合策略进行聚合运算和推送,而通常用户量级是动态变化的,这种设计的难度较大,并且系统无法应对用户量级突增的聚合请求。
发明内容
本申请实施例提出了消息处理方法和装置。
第一方面,本申请实施例提供了一种消息处理方法,包括:获取待处理的物料消息;将待处理的物料消息映射至已创建的目标聚合实例;响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述将待处理的物料消息映射至已创建的目标聚合实例,包括:对待处理的物料消息的标识进行哈希运算;基于待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将待处理的物料消息映射至目标聚合实例。
在一些实施例中,上述响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合,包括:基于目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额;响应于确定目标聚合实例的用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0,将目标聚合实例的用户令牌数减去待处理的物料消息关联的用户数量,将目标聚合实例的请求令牌数减一,并将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述方法还包括:响应于确定目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例;响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
在一些实施例中,上述目标聚合实例的最大用户令牌数小于目标聚合实例支持处理的用户数量,目标聚合实例的最大请求令牌数小于目标聚合实例支持处理的请求数量;上述方法还包括:响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
在一些实施例中,上述方法还包括:将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中;响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
在一些实施例中,上述将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中,包括:响应于确定物料聚合请求对应的聚合队列为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列中,并记录聚合队列中的第一个元素进入聚合队列的时间作为聚合队列的首元素进入时间;响应于确定物料聚合请求对应的聚合队列不为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列的队尾。
在一些实施例中,上述响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息,包括:响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差大于预设的最大聚合时间,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于预设的最大聚合时间时,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度不小于预设的最大消息聚合数,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
第二方面,本申请实施例提供了一种消息处理装置,包括:获取单元,被配置为获取待处理的物料消息;映射单元,被配置为将待处理的物料消息映射至已创建的目标聚合实例;第一发送单元,被配置为响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述映射单元进一步被配置为按照如下方式将待处理的物料消息映射至已创建的目标聚合实例:对待处理的物料消息的标识进行哈希运算;基于待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将待处理的物料消息映射至目标聚合实例。
在一些实施例中,上述第一发送单元进一步被配置为:基于目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额;响应于确定目标聚合实例的用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0,将目标聚合实例的用户令牌数减去待处理的物料消息关联的用户数量,将目标聚合实例的请求令牌数减一,并将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述装置还包括:确定单元,被配置为响应于确定目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例;第二发送单元,被配置为响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
在一些实施例中,上述目标聚合实例的最大用户令牌数小于目标聚合实例支持处理的用户数量,目标聚合实例的最大请求令牌数小于目标聚合实例支持处理的请求数量;上述装置还包括:第三发送单元,被配置为响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
在一些实施例中,上述装置还包括:添加单元,被配置为将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中;推送单元,被配置为响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
在一些实施例中,上述添加单元进一步被配置为按照如下方式将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中:响应于确定物料聚合请求对应的聚合队列为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列中,并记录聚合队列中的第一个元素进入聚合队列的时间作为聚合队列的首元素进入时间;响应于确定物料聚合请求对应的聚合队列不为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列的队尾。
在一些实施例中,上述推送单元进一步被配置为:响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差大于预设的最大聚合时间,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于预设的最大聚合时间时,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度不小于预设的最大消息聚合数,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面提供的消息处理方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现第一方面提供的消息处理方法。
本申请上述实施例的消息处理方法和装置,通过获取待处理的物料消息,将待处理的物料消息映射至已创建的目标聚合实例,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合,实现了基于令牌的聚合请求处理速度的控制,能够动态自适应地调整消息聚合的流程和速度,简化了消息处理系统的聚合策略设计,有效降低了消息处理系统的负载。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请实施例可以应用于其中的示例性系统架构图;
图2是根据本申请的消息处理方法的一个实施例的流程图;
图3是根据本申请的消息处理方法中的一种可选实现方式的原理示意图;
图4是根据本申请的消息处理方法的另一个实施例的流程图;
图5是根据本申请的消息处理方法的再一个实施例的流程图;
图6是根据本申请的消息处理方法的又一个实施例的流程图;
图7是本申请的消息处理装置的一个实施例的结构示意图;
图8是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的消息处理方法或消息处理装置的示例性系统架构。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104、以及服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户110可以使用终端设备101、102、103通过网络104与服务器105互,以接收或发送消息等。终端设备101、102、103上可以安装有各种内容服务类应用,例如音/视频播放应用,社交平台应用、搜索应用、知识分享类应用等。
终端设备101、102、103可以是支持互联网访问的各种电子设备,包括但不限于智能手机、平板电脑、智能手表、电子书、智能音箱等。
服务器105可以是为终端设备的内容服务类应用提供支持的服务器,服务器105可以获取各终端设备101、102、103上报的用户浏览网络产生的物料消息,对用户的物料消息进行聚合后,针对具有同一类物料消息的用户进行推送内容的决策,并将决策出的推送内容推送至终端设备101、102、103。
终端设备101、102、103可以包含用于执行物理运算的部件(例如GPU等处理器),终端设备101、102、103也可以进行消息处理,对物料消息进行聚合。这时,上述系统架构中可以不包含网络104和服务器105。
本申请实施例所提供的消息处理方法可以由终端设备101、102、103或服务器105执行,相应地,消息处理装置可以设置于终端设备101、102、103或服务器105中。
应该理解,图1中的终端设备、网络、服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络、服务器。
继续参考图2,其示出了根据本申请的消息处理方法的一个实施例的流程200。该消息处理方法,包括以下步骤:
步骤201,获取待处理的物料消息。
在本实施例中,消息处理方法的执行主体可以获取待处理的物料消息。在这里,待处理的物料消息可以是已收集的多个用户在访问网络时过程中产生的网络访问数据,该待处理的物料消息可以包括针对某一类网络内容或具有特定属性的网络内容进行访问的用户访问数据,可以例如包括访问这些网络内容的用户的标识、用户基本属性数据、操作记录、历史访问内容等等。
在实践中,可以通过搜索引擎或内容服务器获取大量的用户数据,然后从用户访问数据中抽取出针对某一类网络内容或具有特定属性的网络内容进行访问的用户访问数据,生成待处理的物料消息。
上述执行主体可以收集用户访问数据并基于所访问的内容生成多个待处理的物料消息,每个待处理的物料消息包括针对同一内容或同一类内容进行访问的多条用户访问数据。上述执行主体也可以从其他电子设备(例如搜索引擎服务器等)获取已按照访问内容对用户访问数据分类而生成的待处理的物料消息。
步骤202,将待处理的物料消息映射至已创建的目标聚合实例。
为了对待处理的物料消息进行聚合运算,可以创建至少一个聚合实例。该聚合实例即为用于执行聚合运算的实例,各聚合实例可以分别执行不同的待处理的物料消息的聚合运算,各聚合实例可以并行运行。
在本实施例中,可以预先设置已创建的聚合实例与待处理的物料消息之间的映射方式,具体可以设置聚合实例的预设属性与待处理的物料消息的属性之间的映射关系。在这里,待处理的物料消息的属性可以在获取待处理的物料消息时一并获取,或者可以通过对待处理的消息物料进行属性特征提取得出。聚合实例的预设属性可以包括以下至少一项:标识、消息处理速度阈值、在所有聚合实例中的排序,等等。待处理的物料消息的属性可以包括以下至少一项:标识、所包含的数据量、物料来源的标识、所关联的用户数量、生成时间,等等。例如可以预先设置已创建的聚合实例的标识与待处理的物料消息的标识之间的映射关系表,或者预先设置已创建的聚合实例的消息处理速度与待处理的物料消息所包含的数据量之间的映射关系。这样,可以基于待处理的物料消息的属性,根据预设的映射关系将待处理的物料消息映射至对应的目标聚合实例。
在本实施例的一些可选的实现方式中,可以采用如下方式将待处理的物料消息映射至已创建的目标聚合实例:对待处理的物料消息的标识进行哈希运算,基于待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将待处理的物料消息映射至目标聚合实例。
具体来说,可以创建一个圆环表示哈希值为0~(232-1)的哈希值空间。对已创建的聚合实例配置标识,计算聚合实例的标识的哈希值,然后根据聚合实例的标识的哈希值将聚合实例映射在圆环的对应位置。之后,计算待处理的物料消息的标识的哈希值,将该哈希值映射至圆环上,并从该待处理的物料消息的标识的哈希值在圆环上的位置沿顺时针方向查找到第一个聚合实例,作为目标聚合实例,将该待处理的物料消息映射至目标聚合实例。
通过采用一致性哈希算法将待处理的物料消息映射至聚合实例上,能够实时地聚合相同的物料消息,且由于聚合实例散布在哈希值空间的圆环上,具有随机性,避免了多个物料消息被集中映射至一些聚合实例上,能够将待处理的物料消息均匀地映射至各聚合实例。并且,在聚合实例增加或删除时,可以将聚合实例上原有的物料消息映射至沿顺时针方向查找到的其他聚合实例上,解决了聚合实例的增加或删除引起的物料消息无法聚合给系统带来的负载问题。
请参考图3,其示出了根据本申请的消息处理方法中的一种可选实现方式的原理示意图。如图3所示,本实施例的消息处理方法的执行主体可以包括路由层和聚合层。其中路由层用于接收待处理的物料消息,并将待处理的物料消息映射至聚合层的聚合实例。聚合层包括A1、A2、A3、…、A(N-1)、AN共N个(N为正整数)个已创建的聚合实例,各聚合实例按照其标识的哈希值被映射在用于表征哈希值空间的圆环上。其中,圆环上的各个圆点表示对应的聚合实例在用于表征哈希值空间的圆环上的位置。每个聚合实例配置有令牌桶,在聚合实例接收到物料聚合请求后,令牌桶中的令牌减少相应的数量。路由层可以按照物料消息的标识(例如id)进行哈希运算,找到该物料消息的id在用于表征哈希值空间的圆环上的位置,然后从该位置处沿顺时针方向寻找,将该物料消息映射至沿顺时针方向找到的第一个聚合实例。
步骤203,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在本实施例中,可以为各聚合实例配置令牌。在待处理的物料消息被映射至目标聚合实例之后,可以判断目标聚合实例当前是否具有可用令牌配额,若是,则可以生成包含待处理的物料消息的物料聚合请求,并发送至目标聚合实例进行聚合。其中,各聚合实例的最大令牌数量可以根据其数据处理能力来设定,例如聚合实例每秒可处理的请求数量为x,则可以设置聚合实例按照每秒为x个的速度释放令牌。聚合实例接收到物料聚合请求之后,可以将当前的令牌数减去相应的请求数量。令牌数量大于0时,目标聚合实例具有可用令牌。令牌数为0时,目标聚合实例不具有可用令牌配额。
通过为聚合实例配置令牌,可以在无需考虑用户量级的情况下基于令牌来控制物料聚合请求的处理速度,避免突发的大量聚合请求导致消息聚合系统负载突增而影响处理速度。
本申请上述实施例的消息处理方法,通过获取待处理的物料消息,将待处理的物料消息映射至已创建的目标聚合实例,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合,实现了基于令牌的聚合请求处理速度的控制,能够动态自适应地调整消息聚合的流程和速度,简化了消息处理系统的聚合策略设计,有效降低了消息处理系统的负载。
继续参考图4,其示出了根据本申请的消息处理方法的另一个实施例的流程图。如图4所示,本实施例的消息处理方法的流程400,包括以下步骤:
步骤401,获取待处理的物料消息。
在本实施例中,消息处理方法的执行主体可以获取待处理的物料消息。待处理的物料消息可以是已收集的多个用户针对某一类网络内容或具有特定属性的网络内容进行访问的用户访问数据,可以例如包括访问这些网络内容的用户的标识、用户基本属性数据、操作记录、历史访问内容等等。
上述执行主体可以收集多个用户的访问数据并将其按照所访问的内容进行聚类,每一个类簇作为一条待处理的物料消息。上述执行主体也可以从其他电子设备接收已按照访问内容进行分类而生成的待处理的物料消息。
步骤402,将待处理的物料消息映射至已创建的目标聚合实例。
在本实施例中,可以预先设置已创建的聚合实例与待处理的物料消息之间的映射方式,具体可以设置聚合实例的预设属性与待处理的物料消息的属性之间的映射关系。然后提取待处理的物料消息的属性信息,根据待处理的物料消息的属性信息将其映射至具有对应的预设属性的目标聚合实例。
上述步骤401、步骤402分别与前述实施例的步骤201、步骤202一致,步骤401、步骤402的具体实现方式可以分别参考步骤201、步骤202的描述,此处不再赘述。
步骤403,基于目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额。
在本实施例中,可以为每个聚合实例配置最大用户令牌数和最大请求令牌数。在这里,最大用户令牌数用于指示该聚合实例单位时间(例如一秒钟内)可处理的物料消息所关联的最大用户数量,最大请求令牌数用于指示该聚合实例单位时间可处理的最大请求数。可以根据预先获取的聚合实例的处理能力配置对应的最大用户令牌数和最大请求令牌数。
聚合实例在运行过程中可以接收物料聚合请求,在确定当前的用户令牌数和请求令牌数能够满足物料聚合请求的需求时,将相应数量的用户令牌和请求令牌分配给该聚合请求,对该聚合请求中的物料消息进行聚合处理。在本实施例中,可以根据待处理的物料消息所关联的用户数量判断目标聚合实例当前时刻是否具有能满足该用户数量所对应的聚合请求的用户令牌,并判断目标聚合实例当前时刻的请求令牌数是否大于0。若目标聚合实例当前时刻具有能满足待处理的物料消息所关联的用户数量的用户令牌,且目标聚合实例当前时刻的请求令牌数大于0,则确定目标聚合实例具有可用令牌配额。
步骤404,响应于确定目标聚合实例的用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0,将目标聚合实例的用户令牌数减去待处理的物料消息关联的用户数量,将目标聚合实例的请求令牌数减一,并将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
如果步骤403中确定目标聚合实例具有可用令牌配额,即确定目标聚合实例的用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0,则可以为包含待处理的物料消息的物料聚合请求分配相应的用户令牌和请求令牌,同时在目标聚合实例的用户令牌中扣除为包含待处理的物料消息的物料聚合请求分配的用户令牌,对目标聚合实例的请求令牌数减一。
通过设置用户令牌数和请求令牌数来控制聚合实例的聚合请求处理速度,能够有效控制单个物料消息关联的用户数量造成的系统负载压力,以及多条物料消息并发请求时造成的系统压力。
在本实施例的一些可选的实现方式中,上述消息处理方法的流程400还可以包括:
步骤405,响应于确定目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例。
如果步骤403的判断结果为目标聚合实例不具有可用令牌配额,即目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0,可以确定当前时刻目标聚合实例不能满足待处理的物料消息的聚合处理的需求。这时,可以进一步判断已创建的聚合实例中是否存在具有可用令牌配额的聚合实例,即判断除了目标聚合实例之外的其他聚合实例是否具有足够的用户令牌和请求令牌来对待处理的物料消息进行聚合。
具体地,在确定目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0时,对其他的每个聚合实例,判断该聚合实例是否满足可用用户令牌数大于待处理的物料消息关联的用户数量且可用请求令牌数大于0,若该聚合实例不满足可用用户令牌数大于待处理的物料消息关联的用户数量且可用请求令牌数大于0,则继续对下一个聚合实例进行相同的判断。由此确定出是否存在具有可用令牌配额的聚合实例。
步骤406,响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
若步骤405的判断结果为已创建的聚合实例中存在具有可用令牌配额的聚合实例,则可以采用一致性哈希算法,在表征哈希值空间的圆环上沿顺时针方向找到目标聚合实例的下一个聚合实例,作为新的目标聚合实例。并基于新的目标聚合实例执行步骤403、步骤404、步骤405以及步骤406。在新的目标聚合实例满足可用用户令牌数大于待处理的物料消息关联的用户数量且可用请求令牌数大于0时,将包含待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合,否则继续查找出下一个目标聚合实例。
通过在当前的目标聚合实例不具有可用令牌配额时采用一致性哈希算法查找其他聚合实例是否具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至具有可用令牌配额的聚合实例进行聚合,能够自适应地调配系统资源,提升资源利用率的同时保证物料消息的聚合效率。
进一步可选地,上述目标聚合实例的最大用户令牌数小于目标聚合实例支持处理的用户数量,目标聚合实例的最大请求令牌数小于目标聚合实例支持处理的请求数量。假设所有已创建的聚合实例每秒能够处理的用户数和请求数分别为p+α和q+β,已创建的聚合实例的数量为m,则平均每个聚合实例支持处理的用户数量为(p+α)/m,平均每个聚合实例支持处理的请求数量为(q+β)/m。可以设置目标聚合实例的最大用户令牌数为p/m,目标聚合实例的最大请求令牌数为q/m。其中,p,q,α,β,m均为正整数。这时,上述消息处理方法的流程400还可以包括:
步骤407,响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
当所有已创建的聚合实例都没有可用令牌配额时,也即当所有的聚合实例都不满足用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0时,可以随机选择一个聚合实例,将包含待处理的物料消息的物料聚合请求发送至选择的聚合实例进行聚合。
由于在配置聚合实例的最大用户令牌数和最大请求令牌数时预留了缓冲值α和β,即在消息聚合系统中预留了未被分配至聚合实例的资源。因此本在所有的聚合实例都不具有可用令牌配额时,系统资源未被用尽,可以利用系统中预留的资源对待处理的物料消息进行聚合。从而进一步提升系统的稳定性,保证物料消息的聚合效率。
继续参考图5,其示出了根据本申请的消息处理方法的另一个实施例的流程图。如图5所示,本实施例的消息处理方法的流程500,包括以下步骤:
步骤501,获取待处理的物料消息。
在本实施例中,消息处理方法的执行主体可以获取待处理的物料消息。待处理的物料消息可以是已收集的多个用户针对某一类网络内容或具有特定属性的网络内容进行访问的用户访问数据,可以例如包括访问这些网络内容的用户的标识、用户基本属性数据、操作记录、历史访问内容等等。
步骤502,将待处理的物料消息映射至已创建的目标聚合实例。
在本实施例中,可以预先设置已创建的聚合实例与待处理的物料消息之间的映射方式,具体可以设置聚合实例的预设属性与待处理的物料消息的属性之间的映射关系。然后提取待处理的物料消息的属性信息,根据待处理的物料消息的属性信息将其映射至具有对应的预设属性的目标聚合实例。
步骤503,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在本实施例中,各聚合实例具有预先配置的令牌。可以判断目标聚合实例当前是否具有可用的令牌配额,若是,则将上述物料聚合请求发送至目标聚合实例进行聚合。
上述步骤501、步骤502、步骤503分别与前述实施例的步骤201、步骤202、步骤203一致,步骤501、步骤502、步骤503的具体实现方式可以分别参考步骤201、步骤202、步骤203的描述,此处不再赘述。
在一些实施例中,可以采用上述消息处理方法流程400中的步骤403的方式来执行步骤503。这时,消息处理方法流程500还可以包括步骤404,以及可选地,消息处理方法500还可以包括步骤405、步骤406以及步骤407。
接着,在步骤504中,将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中。
上述聚合实例可以创建聚合队列,每个聚合队列可以对应一条物料消息,具有相同标识、不同时间接收到的物料消息可以被添加至同一个聚合队列。
在本实例中,可以根据物料聚合请求中的物料消息的标识找到对应的聚合队列,并将该物料消息添加至查找到的聚合队列中。
在步骤505中,响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
在将待处理的物料消息添加至对应的聚合队列之后,可以判断该聚合队列是否满足预设的推送触发条件。在这里,预设的推送触发条件可以是触发推送操作的条件,可以例如为聚合队列的长度达到预设的长度阈值,或者可以是聚合队列中的物料消息的数据量达到预设的数据量阈值。当该聚合队列满足预设的推送触发条件时,可以将该聚合队列推送至信息推送系统。信息推送系统可以根据聚合队列中的用户的物料消息分析用户的偏好,进而基于用户的偏好确定向用户推送的信息。
需要说明的是,聚合队列中的物料消息可以是对应于多个不同用户的、具有相同标识的物料消息,上述信息推送系统根据聚合队列中的物料消息确定出的推送信息可以是针对聚合队列中的物料消息所关联的所有用户的推送信息。由此实现了针对相同物料的多个用户的信息推送。
从图5可以看出,本实施例的消息处理方法通过增加的将物料消息添加至对应的聚合队列,并在聚合队列满足预设的推送触发条件时推送聚合队列中的物料消息以基于推送的物料消息进行信息推送的决策的步骤,实现了不同用户物料消息的聚合。在此过程中无需感知待处理的消息物料关联的用户的量级,能够在满足预设的推送触发条件时自动推送物料消息,避免推送的物料消息量级过大造成的系统压力。
继续参考图6,其示出了根据本申请的消息处理方法的另一个实施例的流程图。如图6所示,本实施例的消息处理方法的流程600,包括以下步骤:
步骤601,获取待处理的物料消息。
在本实施例中,消息处理方法的执行主体可以获取待处理的物料消息。待处理的物料消息可以是已收集的多个用户针对某一类网络内容或具有特定属性的网络内容进行访问的用户访问数据,可以例如包括访问这些网络内容的用户的标识、用户基本属性数据、操作记录、历史访问内容等等。
步骤602,将待处理的物料消息映射至已创建的目标聚合实例。
在本实施例中,可以预先设置已创建的聚合实例与待处理的物料消息之间的映射方式,具体可以设置聚合实例的预设属性与待处理的物料消息的属性之间的映射关系。然后提取待处理的物料消息的属性信息,根据待处理的物料消息的属性信息将其映射至具有对应的预设属性的目标聚合实例。
步骤603,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在本实施例中,各聚合实例具有预先配置的令牌。可以判断目标聚合实例当前是否具有可用的令牌配额,若是,则将上述物料聚合请求发送至目标聚合实例进行聚合。
上述步骤601、步骤602、步骤603分别与前述实施例的步骤201、步骤202、步骤203一致,步骤601、步骤602、步骤603的具体实现方式可以分别参考步骤201、步骤202、步骤203的描述,此处不再赘述。
在一些实施例中,可以采用上述消息处理方法流程400中的步骤403的方式来执行步骤603。这时,消息处理方法流程600还可以包括步骤404,以及可选地,消息处理方法600还可以包括步骤405、步骤406以及步骤407。
接着,在步骤604中,响应于确定物料聚合请求对应的聚合队列为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列中,并记录聚合队列中的第一个元素进入聚合队列的时间作为聚合队列的首元素进入时间。
在将物料聚合请求中的物料消息添加至对应的聚合队列中之前,可以首先根据物料消息的标识找到对应的聚合队列,并判断该聚合队列是否为空队列。若该聚合队列是空队列,则可以将物料聚合请求中的物料消息添加至该聚合队列中,具体可以将每个用户关联的物料消息分别作为一个元素,依次添加至物料聚合请求对应的聚合队列中。这样聚合队列中的每个元素对应一个用户的物料消息。可以记录聚合队列中的第一个元素进入聚合队列的时间作为聚合队列的首元素进入时间。
在步骤605中,响应于确定物料聚合请求对应的聚合队列不为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列的队尾。
当物料聚合请求中的物料消息对应的聚合队列不为空时,对应的聚合队列中的首元素进入时间已获取,这时,可以将各用户的物料消息分别作为队列中的一个元素添加至聚合队列中。
在本实施例中,在步骤605之后可以执行响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息的步骤,具体实现方式参考上述步骤505的描述,此处不再赘述。
在本实施例的一些可选的实现方式中,上述响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息的步骤可以按照步骤606、步骤607、步骤608的方式实现。
在步骤606中,响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列中首元素进入队列的时间的时间差大于预设的最大聚合时间,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
可以预先设定最大消息聚合数M,以及最大聚合时间T。若上述物料聚合请求对应的聚合队列的长度大于M,且当前时间与聚合队列中首元素进入时间的时间差大于T,可以确定该聚合队列满足预设的推送触发条件,将该聚合队列推送至信息推送系统以供信息推送系统进行针对该聚合队列中的用户的信息推送决策。
在步骤607中,响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于预设的最大聚合时间时,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
若上述物料聚合请求对应的聚合队列的长度不大于M,且当前时间与聚合队列中首元素进入时间的时间差不大于T,即上述聚合队列不满足预设的推送触发条件,则可以休眠一段预设时间,之后继续判断休眠预设时间后的当前时间与聚合队列中首元素进入时间的时间差是否大于T,若是,则可以对聚合队列进行推送,以供信息推送系统进行针对该聚合队列中的用户的信息推送决策。
可选地,若休眠预设时间后的当前时间与聚合队列中首元素进入时间的时间差是否不大于T,可以继续休眠并在满足当前时间与聚合队列中首元素进入时间的时间差大于T时向信息推送系统推送聚合队列。
通过上述方案,若聚合队列不满足推送触发条件,可以在休眠一段之后推送该聚合队列并释放该聚合队列,以释放系统资源。
在步骤608中,响应于确定聚合队列的长度不小于预设的最大消息聚合数,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
当聚合队列的长度大于或等于预设的最大消息聚合数M时,也可以确定聚合队列满足预设的推送触发条件,可以推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
通过上述步骤606至步骤608,可以利用最大消息聚合数以及最大聚合时间实现对聚合队列的推送控制,进而使得消息处理系统无需关注物料聚合请求的量级,可以自适应地调配和释放系统资源。
进一步参考图7,作为对上述各图所示方法的实现,本申请提供了一种消息处理装置的一个实施例,该装置实施例与图2、图4、图5和图6所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图7所示,本实施例的消息处理装置700包括:获取单元701、映射单元702以及第一发送单元703。其中,获取单元701被配置为获取待处理的物料消息;映射单元702被配置为将待处理的物料消息映射至已创建的目标聚合实例;第一发送单元703被配置为响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述映射单元702可以进一步被配置为按照如下方式将待处理的物料消息映射至已创建的目标聚合实例:对待处理的物料消息的标识进行哈希运算;基于待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将待处理的物料消息映射至目标聚合实例。
在一些实施例中,上述第一发送单元703可以进一步被配置为:基于目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额;响应于确定目标聚合实例的用户令牌数大于待处理的物料消息关联的用户数量,且目标聚合实例的请求令牌数大于0,将目标聚合实例的用户令牌数减去待处理的物料消息关联的用户数量,将目标聚合实例的请求令牌数减一,并将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
在一些实施例中,上述装置700还可以包括:确定单元,被配置为响应于确定目标聚合实例的用户令牌数不大于待处理的物料消息关联的用户数量,或目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例;第二发送单元,被配置为响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
在一些实施例中,上述目标聚合实例的最大用户令牌数小于目标聚合实例支持处理的用户数量,目标聚合实例的最大请求令牌数小于目标聚合实例支持处理的请求数量;装置还包括:第三发送单元,被配置为响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
在一些实施例中,上述装置700还可以包括:添加单元,被配置为将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中;推送单元,被配置为响应于确定物料聚合请求对应的聚合队列满足预设的推送触发条件,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
在一些实施例中,上述添加单元可以进一步被配置为按照如下方式将物料聚合请求中的物料消息添加至物料聚合请求对应的聚合队列中:响应于确定物料聚合请求对应的聚合队列为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列中,并记录聚合队列中的第一个元素进入聚合队列的时间作为聚合队列的首元素进入时间;响应于确定物料聚合请求对应的聚合队列不为空,将物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至物料聚合请求对应的聚合队列的队尾。
在一些实施例中,上述推送单元可以进一步被配置为:响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差大于预设的最大聚合时间,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于预设的最大聚合时间时,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息;响应于确定聚合队列的长度不小于预设的最大消息聚合数,推送聚合队列以基于聚合队列中的用户的物料消息确定向用户推送的信息。
应当理解,装置700中记载的诸单元与参考图2、图4、图5、图6描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于装置700及其中包含的单元,在此不再赘述。
本申请上述实施例的消息处理装置700,通过获取待处理的物料消息,将待处理的物料消息映射至已创建的目标聚合实例,响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合,实现了基于令牌的聚合请求处理速度的控制,能够动态自适应地调整消息聚合的流程和速度,简化了消息处理系统的聚合策略设计,有效降低了消息处理系统的负载。
下面参考图8,其示出了适于用来实现本申请实施例的电子设备的计算机系统800的结构示意图。图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、映射单元和第一发送单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取待处理的物料消息的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取待处理的物料消息;将待处理的物料消息映射至已创建的目标聚合实例;响应于确定目标聚合实例具有可用令牌配额,将包含待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (18)
1.一种消息处理方法,包括:
获取待处理的物料消息;
将待处理的物料消息映射至已创建的目标聚合实例;
响应于确定所述目标聚合实例具有可用令牌配额,将包含所述待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
2.根据权利要求1所述的方法,其中,所述将待处理的物料消息映射至已创建的目标聚合实例,包括:
对所述待处理的物料消息的标识进行哈希运算;
基于所述待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将所述待处理的物料消息映射至目标聚合实例。
3.根据权利要求1所述的方法,其中,所述响应于确定所述目标聚合实例具有可用令牌配额,将包含所述待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合,包括:
基于所述目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额;
响应于确定所述目标聚合实例的用户令牌数大于所述待处理的物料消息关联的用户数量,且所述目标聚合实例的请求令牌数大于0,将所述目标聚合实例的用户令牌数减去所述待处理的物料消息关联的用户数量,将所述目标聚合实例的请求令牌数减一,并将包含所述待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
4.根据权利要求3所述的方法,其中,所述方法还包括:
响应于确定所述目标聚合实例的用户令牌数不大于所述待处理的物料消息关联的用户数量,或所述目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例;
响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含所述待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
5.根据权利要求4所述的方法,其中,所述目标聚合实例的最大用户令牌数小于所述目标聚合实例支持处理的用户数量,所述目标聚合实例的最大请求令牌数小于所述目标聚合实例支持处理的请求数量;
所述方法还包括:
响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含所述待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
6.根据权利要求1-5任一项所述的方法,其中,所述方法还包括:
将所述物料聚合请求中的物料消息添加至所述物料聚合请求对应的聚合队列中;
响应于确定所述物料聚合请求对应的聚合队列满足预设的推送触发条件,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息。
7.根据权利要求6所述的方法,其中,所述将所述物料聚合请求中的物料消息添加至所述物料聚合请求对应的聚合队列中,包括:
响应于确定所述物料聚合请求对应的聚合队列为空,将所述物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至所述物料聚合请求对应的聚合队列中,并记录所述聚合队列中的第一个元素进入所述聚合队列的时间作为所述聚合队列的首元素进入时间;
响应于确定所述物料聚合请求对应的聚合队列不为空,将所述物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至所述物料聚合请求对应的聚合队列的队尾。
8.根据权利要求7所述的方法,其中,所述响应于确定所述物料聚合请求对应的聚合队列满足预设的推送触发条件,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息,包括:
响应于确定所述聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差大于预设的最大聚合时间,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息;
响应于确定所述聚合队列的长度小于所述预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于所述预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于所述预设的最大聚合时间时,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息;
响应于确定所述聚合队列的长度不小于所述预设的最大消息聚合数,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息。
9.一种消息处理装置,包括:
获取单元,被配置为获取待处理的物料消息;
映射单元,被配置为将待处理的物料消息映射至已创建的目标聚合实例;
第一发送单元,被配置为响应于确定所述目标聚合实例具有可用令牌配额,将包含所述待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
10.根据权利要求9所述的装置,其中,所述映射单元进一步被配置为按照如下方式将待处理的物料消息映射至已创建的目标聚合实例:
对所述待处理的物料消息的标识进行哈希运算;
基于所述待处理的物料消息的标识的哈希值,以及已创建的聚合实例的哈希值,采用一致性哈希算法将所述待处理的物料消息映射至目标聚合实例。
11.根据权利要求9所述的装置,其中,所述第一发送单元进一步被配置为:
基于所述目标聚合实例的用户令牌数和请求令牌数判断目标聚合实例是否具有可用令牌配额;
响应于确定所述目标聚合实例的用户令牌数大于所述待处理的物料消息关联的用户数量,且所述目标聚合实例的请求令牌数大于0,将所述目标聚合实例的用户令牌数减去所述待处理的物料消息关联的用户数量,将所述目标聚合实例的请求令牌数减一,并将包含所述待处理的物料消息的物料聚合请求发送至目标聚合实例进行聚合。
12.根据权利要求11所述的装置,其中,所述装置还包括:
确定单元,被配置为响应于确定所述目标聚合实例的用户令牌数不大于所述待处理的物料消息关联的用户数量,或所述目标聚合实例的请求令牌数为0,确定已创建的聚合实例中是否存在具有可用令牌配额的聚合实例;
第二发送单元,被配置为响应于确定已创建的聚合实例中存在具有可用令牌配额的聚合实例,采用一致性哈希算法查找下一个聚合实例作为新的目标聚合实例,并在新的目标聚合实例具有可用令牌配额时,将包含所述待处理的物料消息的物料聚合请求发送至新的目标聚合实例进行聚合。
13.根据权利要求12所述的装置,其中,所述目标聚合实例的最大用户令牌数小于所述目标聚合实例支持处理的用户数量,所述目标聚合实例的最大请求令牌数小于所述目标聚合实例支持处理的请求数量;
所述装置还包括:
第三发送单元,被配置为响应于确定已创建的聚合实例中不存在具有可用令牌配额的聚合实例,将包含所述待处理的物料消息的物料聚合请求发送至任意一个聚合实例进行聚合。
14.根据权利要求9-13任一项所述的装置,其中,所述装置还包括:
添加单元,被配置为将所述物料聚合请求中的物料消息添加至所述物料聚合请求对应的聚合队列中;
推送单元,被配置为响应于确定所述物料聚合请求对应的聚合队列满足预设的推送触发条件,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息。
15.根据权利要求14所述的装置,其中,所述添加单元进一步被配置为按照如下方式将所述物料聚合请求中的物料消息添加至所述物料聚合请求对应的聚合队列中:
响应于确定所述物料聚合请求对应的聚合队列为空,将所述物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至所述物料聚合请求对应的聚合队列中,并记录所述聚合队列中的第一个元素进入所述聚合队列的时间作为所述聚合队列的首元素进入时间;
响应于确定所述物料聚合请求对应的聚合队列不为空,将所述物料聚合请求中每个用户关联的物料消息分别作为一个元素依次添加至所述物料聚合请求对应的聚合队列的队尾。
16.根据权利要求15所述的装置,其中,所述推送单元进一步被配置为:
响应于确定所述聚合队列的长度小于预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差大于预设的最大聚合时间,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息;
响应于确定所述聚合队列的长度小于所述预设的最大消息聚合数,且当前时间与聚合队列的首元素进入时间的时间差不大于所述预设的最大聚合时间,休眠预设时间以在休眠预设时间之后的时间与聚合队列中首元素进入队列的时间的时间差大于所述预设的最大聚合时间时,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息;
响应于确定所述聚合队列的长度不小于所述预设的最大消息聚合数,推送所述聚合队列以基于所述聚合队列中的用户的物料消息确定向用户推送的信息。
17.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811524003.XA CN109862069B (zh) | 2018-12-13 | 2018-12-13 | 消息处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811524003.XA CN109862069B (zh) | 2018-12-13 | 2018-12-13 | 消息处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109862069A true CN109862069A (zh) | 2019-06-07 |
CN109862069B CN109862069B (zh) | 2020-06-09 |
Family
ID=66891043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811524003.XA Active CN109862069B (zh) | 2018-12-13 | 2018-12-13 | 消息处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109862069B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021012957A1 (zh) * | 2019-07-19 | 2021-01-28 | 中国建设银行股份有限公司 | 消息聚合方法及装置 |
CN113067778A (zh) * | 2021-06-04 | 2021-07-02 | 新华三半导体技术有限公司 | 一种流量管理方法及流量管理芯片 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
CN103747097A (zh) * | 2014-01-22 | 2014-04-23 | 电子科技大学 | 移动终端http请求聚合压缩的系统及方法 |
CN103763208A (zh) * | 2014-01-29 | 2014-04-30 | 华为技术有限公司 | 数据流量限制方法及装置 |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
CN104063487A (zh) * | 2014-07-03 | 2014-09-24 | 浙江大学 | 基于关系型数据库及k-d树索引的文件数据管理方法 |
CN106155803A (zh) * | 2015-04-07 | 2016-11-23 | 北大方正集团有限公司 | 一种基于信号量的线程池共享方法及系统 |
US20170070586A1 (en) * | 2015-09-09 | 2017-03-09 | Matthew Hargraves | Presenting aggregated media data to a user |
CN108093123A (zh) * | 2017-10-30 | 2018-05-29 | 努比亚技术有限公司 | 一种消息通知处理方法、终端及计算机可读存储介质 |
CN108108419A (zh) * | 2017-12-15 | 2018-06-01 | 百度在线网络技术(北京)有限公司 | 一种信息推荐方法、装置、设备和介质 |
CN108363655A (zh) * | 2018-02-11 | 2018-08-03 | 百度在线网络技术(北京)有限公司 | 用户行为特征分析方法及装置 |
CN108509286A (zh) * | 2018-03-27 | 2018-09-07 | 中国银联股份有限公司 | 一种消息分类的处理方法及装置 |
-
2018
- 2018-12-13 CN CN201811524003.XA patent/CN109862069B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102387076A (zh) * | 2011-10-19 | 2012-03-21 | 烽火通信科技股份有限公司 | 一种结合整形的分级式队列调度方法 |
CN103747097A (zh) * | 2014-01-22 | 2014-04-23 | 电子科技大学 | 移动终端http请求聚合压缩的系统及方法 |
CN103763208A (zh) * | 2014-01-29 | 2014-04-30 | 华为技术有限公司 | 数据流量限制方法及装置 |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
CN104063487A (zh) * | 2014-07-03 | 2014-09-24 | 浙江大学 | 基于关系型数据库及k-d树索引的文件数据管理方法 |
CN106155803A (zh) * | 2015-04-07 | 2016-11-23 | 北大方正集团有限公司 | 一种基于信号量的线程池共享方法及系统 |
US20170070586A1 (en) * | 2015-09-09 | 2017-03-09 | Matthew Hargraves | Presenting aggregated media data to a user |
CN108093123A (zh) * | 2017-10-30 | 2018-05-29 | 努比亚技术有限公司 | 一种消息通知处理方法、终端及计算机可读存储介质 |
CN108108419A (zh) * | 2017-12-15 | 2018-06-01 | 百度在线网络技术(北京)有限公司 | 一种信息推荐方法、装置、设备和介质 |
CN108363655A (zh) * | 2018-02-11 | 2018-08-03 | 百度在线网络技术(北京)有限公司 | 用户行为特征分析方法及装置 |
CN108509286A (zh) * | 2018-03-27 | 2018-09-07 | 中国银联股份有限公司 | 一种消息分类的处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021012957A1 (zh) * | 2019-07-19 | 2021-01-28 | 中国建设银行股份有限公司 | 消息聚合方法及装置 |
CN113067778A (zh) * | 2021-06-04 | 2021-07-02 | 新华三半导体技术有限公司 | 一种流量管理方法及流量管理芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN109862069B (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105956138B (zh) | 数据库连接的控制方法和装置 | |
CN106201661B (zh) | 用于弹性伸缩虚拟机集群的方法和装置 | |
US20180248879A1 (en) | Method and apparatus for setting access privilege, server and storage medium | |
CN109033001A (zh) | 用于分配gpu的方法和装置 | |
CN109936635A (zh) | 负载均衡方法和装置 | |
CN109743392A (zh) | 一种负载均衡方法、装置、电子设备及存储介质 | |
CN109634915A (zh) | 文件部署方法、云服务器、系统及存储介质 | |
US11314451B2 (en) | Method and apparatus for storing data | |
CN105337891B (zh) | 用于分布式缓存系统的流量控制方法和装置 | |
CN113010818A (zh) | 访问限流方法、装置、电子设备及存储介质 | |
CN109657174A (zh) | 用于更新数据的方法和装置 | |
CN110222775A (zh) | 图像处理方法、装置、电子设备及计算机可读存储介质 | |
CN112445857A (zh) | 一种基于数据库的资源配额管理方法和装置 | |
CN110427304A (zh) | 用于银行系统的运维方法、装置、电子设备以及介质 | |
CN108989369A (zh) | 对用户请求进行限流的方法及其系统 | |
CN108920238A (zh) | 操作应用的方法、电子设备和计算机可读介质 | |
CN110069911A (zh) | 访问控制方法、装置、系统、电子设备和可读存储介质 | |
CN110098997A (zh) | 用于展示信息的方法和设备 | |
CN109885593A (zh) | 用于处理信息的方法和装置 | |
CN109862069A (zh) | 消息处理方法和装置 | |
WO2023116219A1 (zh) | Cdn节点分配方法、装置、电子设备、介质及程序产品 | |
CN109165723A (zh) | 用于处理数据的方法和装置 | |
CN108959636A (zh) | 数据处理方法、装置、系统、计算机可读介质 | |
CN110020271A (zh) | 用于缓存管理的方法和系统 | |
CN110147368A (zh) | 用于服务器的数据获取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |