CN114221925A - 消息推送方法、装置、电子设备及存储介质 - Google Patents

消息推送方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114221925A
CN114221925A CN202111164021.3A CN202111164021A CN114221925A CN 114221925 A CN114221925 A CN 114221925A CN 202111164021 A CN202111164021 A CN 202111164021A CN 114221925 A CN114221925 A CN 114221925A
Authority
CN
China
Prior art keywords
message
message content
push
content
time window
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.)
Pending
Application number
CN202111164021.3A
Other languages
English (en)
Inventor
杨耀华
陈彰
张振华
张德阳
马铭远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202111164021.3A priority Critical patent/CN114221925A/zh
Publication of CN114221925A publication Critical patent/CN114221925A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling

Abstract

本申请提供的一种消息推送方法、装置、电子设备及存储介质,应用于计算机技术领域,所述方法包括:将目标时间周期中所接收到的第一推送消息划分至时间窗口;将时间窗口中所包含第一推送消息的设备标识,按照第一推送消息中的消息内容进行聚合,得到消息内容相对应的设备标识集合;向延迟发送队列投递消息内容;每隔目标时间周期,从延迟发送队列中取出消息内容,以将消息内容和消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;通过调用推送端的推送服务接口,将第二推送消息分别发送至设备标识所指示的客户端。从而可以减少调用推送服务接口的次数,从而节省了消息推送所需占用的数据资源。

Description

消息推送方法、装置、电子设备及存储介质
技术领域
本申请属于计算机技术领域,特别是涉及一种消息推送方法、装置、电子设备及存储介质。
背景技术
随着信息技术的发展,用户可通过终端设备获取到的应用服务也越来越多,并且应用程序的客户端也可通过消息推送的方式向用户推送各种资讯来提醒用户可以通过应用程序获取哪些新的服务。
相关技术中通常是通过应用程序的服务端调用推送服务接口的方式来向客户端来推送消息,但由于消息内容的数量远小于所需推送的设备量,有很多相同的消息内容每次仅被向单一的设备的发送出去,不仅需要消耗存储资源对消息内容进行重复存储,而且需要频繁调用推送服务接口,占用了大量的数据资源。
发明内容
有鉴于此,本申请提供一种消息推送方法、装置、电子设备及存储介质,以解决相关技术中由于相同的消息内容每次仅被向单一的设备的发送出去,不仅需要消耗存储资源对消息内容进行重复存储,而且需要频繁调用推送服务接口,占用了大量的数据资源的技术问题。
本申请第一方面提供一种消息推送方法,所述方法包括:
将目标时间周期中所接收到的第一推送消息划分至时间窗口;
将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合;
向延迟发送队列投递所述消息内容;
每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;
通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
可选地,所述时间窗口至少第一时间窗口和第二时间窗口;
所述将目标时间周期中所接收到的第一推送消息划分至时间窗口,包括:
将所述目标时间周期中所接收到的第一推送消息划分至所述第一时间窗口;
在所述向延迟发送队列投递所述消息内容之后,所述方法还包括:
在所述消息内容投递所述延迟发送队列失败时,将投递失败的消息内容划分至所述第二时间窗口;
每隔所述目标时间周期,从所述第二时间窗口中取出所述消息内容,并所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
可选地,所述从所述第二时间窗口中取出所述消息内容,包括:
在所述延迟发送队列中的消息内容完成消息推送过程后,从所述第二时间窗口中取出所述消息内容。
可选地,在所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合之后,所述方法还包括:
将所述第一时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第一数据库分片中;
在所述将投递失败的消息内容划分至所述第二时间窗口之后,所述方法还包括:
将所述第二时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第二数据库分片中;
其中,所述第一数据库分片的优先级高于所述第二数据库分片。
可选地,所述第一推送消息至少包括:标题信息、内容信息、设备标识;
所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合,包括:
以所述标题信息和所述内容信息所组成的消息内容作为聚合键,将所述消息内容相同的第一推送消息中的设备标识聚合到同一设备标识集合。
可选地,在所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合之前,所述方法还包括:
生成与所述消息内容相对应的消息标识;
查询所述消息内容相对应的设备标识集合;
在未查询到所述消息内容相对应的设备标识集合的情况下,生成与所述消息内容相对应的设备标识集合。
可选地,所述向延迟发送队列投递所述消息内容,包括:
将所述消息内容相对应的消息标识添加至延迟发送队列;
所述从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息,包括:
将所述延迟发送队列中输出的消息标识作为待发送消息标识;
将所述待发送消息标识相对应的消息内容,以及所述待发送消息标识相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
依据本申请的第二方面,提供的一种消息推送装置,所述装置包括:
聚合模块,用于将目标时间周期中所接收到的第一推送消息划分至时间窗口;
投递模块,用于将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合;
向延迟发送队列投递所述消息内容;
组装模块,用于每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;
推送模块,用于通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
可选地,所述时间窗口至少第一时间窗口和第二时间窗口;
所述聚合模块,还用于
将所述目标时间周期中所接收到的第一推送消息划分至所述第一时间窗口;
所述组装模块,还用于:
在所述消息内容投递所述延迟发送队列失败时,将投递失败的消息内容划分至所述第二时间窗口;
每隔所述目标时间周期,从所述第二时间窗口中取出所述消息内容,并所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
可选地,所述组装模块,还用于:
在所述延迟发送队列中的消息内容完成消息推送过程后,从所述第二时间窗口中取出所述消息内容。
可选地,所述聚合模块,还用于:
将所述第一时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第一数据库分片中;
在所述将投递失败的消息内容划分至所述第二时间窗口之后,所述方法还包括:
将所述第二时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第二数据库分片中;
其中,所述第一数据库分片的优先级高于所述第二数据库分片。
可选地,所述第一推送消息至少包括:标题信息、内容信息、设备标识;
所述聚合模块,还用于:
以所述标题信息和所述内容信息所组成的消息内容作为聚合键,将所述消息内容相同的第一推送消息中的设备标识聚合到同一设备标识集合。
可选地,所述聚合模块,还用于:
生成与所述消息内容相对应的消息标识;
查询所述消息内容相对应的设备标识集合;
在未查询到所述消息内容相对应的设备标识集合的情况下,生成与所述消息内容相对应的设备标识集合。
可选地,所述投递模块,还用于:
将所述消息内容相对应的消息标识添加至延迟发送队列;
所述推送模块,还用于:
将所述延迟发送队列中输出的消息标识作为待发送消息标识;
将所述待发送消息标识相对应的消息内容,以及所述待发送消息标识相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
依据本申请第三方面,提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一方面所述的消息推送方法。
依据本申请第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述任一方面所述的消息推送方法。
针对相关技术,本申请具备如下优点:
本申请提供的一种消息推送方法、装置、电子设备及存储介质,通过接收服务端所推送的推送消息,将所携带推送内容相同的推送消息中的设备标识聚合到同一设备标识集合,并按照目标时间周期从设备标识集合从设备标识集合中取出设备标识与消息内容重新组装为推送消息后,统一调用推送服务接口向客户端以将推送消息发送给客户端,不仅可以减少存储推送消息所需的存储空间,而且可以减少调用推送服务接口的次数,从而节省了消息推送所需占用的数据资源。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本申请实施例提供的一种消息推送方法的步骤流程图;
图2是本申请实施例提供的另一种消息推送方法的步骤流程图;
图3是本申请实施例提供的一种消息推送装置的结构框图;
图4是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整地传达给本领域的技术人员。
图1是本申请实施例提供的一种消息推送方法的步骤流程图,所述方法包括:
步骤101,将目标时间周期中所接收到的第一推送消息划分至时间窗口。
需要说明的是,第一推送消息是服务端提供的原始消息,由于服务端需要指定消息推送的目的设备和内容,因此第一推送消息至少需要包含有所需推送的消息内容和客户端所在目的设备相对应的设备标识,当然第一推送消息中还可以包含有推送消息相对应的应用标识等等,具体可以根据实际需求设置,此处不做限定。具体的,代理端实时接收各应用服务端发送的第一推送消息,并对第一推送消息进行解析,提取第一推送消息中所携带的消息内容和设备标识。目标时间周期是将目标时间窗口中的推送消息进行聚合的时间周期,目标时间周期是代理端推送消息的延迟队列的等待时间,该目标时间周期可以是15分钟、30分钟、1小时等的固定值,也可以是动态的,即指定预期发送时间点,到了指定的时间点即刻下发,能聚合多少设备标识就发多少,故目标时间周期实际是动态值,具体可以根据实际需求设置,此处不做限定。时间窗口一种用于进行数据统计的结构体,该时间窗口会按照时间顺序从第一个推送消息往后逐个进行传递,以对推送消息进行统计。
在本申请实施例中,服务端是指用于向客户端提供应用服务数据的服务器,而消息推送(push)作为拉活和召回的重要手段,是客户端拉起的补充手段,客户端当然可以主动从业务服务端获取任何数据,为了拉活和召回,业务服务端经常借助推送服务接口来向客户端推送消息,而推送服务接口不会主动从业务服务端获取推送消息,它是作为通道只能被动地接收业务服务端的推送消息,这是因为推送服务接口的提供方通常具有客户端所部署设备系统的设备认证信息,例如设备厂商颁发的token等才可以实现精准推送。而本申请实施例提供的消息推送方法的执行主体可以是具有数据发送、数据传输的终端设备或者服务器,可选地,该执行主体可以是可以调用推送服务接口的服务器,与作为服务端的服务器不同的是,该执行主体并不是推送消息的生成方,而是通过将推送消息发送给客户端以协调服务端向客户端的消息推送过程的中间转发设备,为服务端提供消息推送的代理服务,因此后续将该执行主体的服务器成为代理端。
步骤102,将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合。
在本申请实施例中,设备标识集合是数据库中用于存储设备标识的集合,可以是列表形式以及其他集合表现形式。该数据库可选用redis(Remote Dictionary Server,远程字典服务),以通过键值的方式存储设备标识集合。
具体的,在收到第一推送消息后,代理端根据消息内容生成消息标识,然后以消息标识作为key(键)在redis数据库中,与该key相对应的value (值),即设备标识集合,然后将设备标识添加到该设备标识集合中,供后续消息推送使用。值得说明的是,本申请实施例通过并不是将服务端提供的第一推送消息整体进行存储,而是将需要将所需推送消息内容相同但是客户端不同的设备标识划分存储至同一设备标识集合,每个消息内容关联一个设备标识集合,使得推送系统只是将每条消息短时间存在工作内存区域中,待数据校验组装完成后很快就批量发到下游系统,如手机厂商推送服务系统,而下游系统是有额定每秒查询率限制的,相同的每秒查询率下,批量推送优于单设备推送,能够完成更多设备的推送,减轻了对下游系统的调用压力,从而确保了更多的海量设备能够在短时间内发送成功。
步骤103,向延迟发送队列投递所述消息内容。
在本申请实施例中,延迟发送队列是用于对推送消息进行延迟发送的消息发送队列,延迟发送队列按照添加顺序对消息标识进行输出。代理端将每隔目标时间周期将时间窗口中所统计到的第一推送消息的消息内容的相关向延迟发送队列进行投递,以使得消息内容可以被延迟推送。
步骤104,每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
在本申请实施例中,在当前目标时间周期中代理端会将服务端接收到的消息内容以及设备标识通过上述步骤101至102中的步骤进行存储,而相应的,每经过一个目标时间周期,代理端会将在已经过的上一个目标时间周期中存储至设备标识集合中的设备从设备标识集合中取出,然后将所取出的设备标识和设备标识集合所对应的消息内容进行组成,得到当前所需推送的第二推送消息。可以发现,该第二推送消息和第一推送消息中的消息内容以及设备标识是相同的,而区别在于第一推送消息是服务端提供的,而第二推送消息是代理端对第一推送消息中的消息内容和设备标识进行重新组装得到的,从而使得代理端可以在消息推送之前无需对服务端提供的第一推送消息整个进行存储,而是仅而消息体中所需的数据进行存储,从而可以减轻服务端存储推送消息所需的存储资源。
步骤105,通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
在本申请实施例中,推送服务接口可以是具有推送服务的推送端提供,该推送端通常在客户端所在终端设备中部署有推送应用程序,因此可主动将第二推送消息发送给终端设备,以使得终端设备中的推送应用程序接收第二推送消息并显示以供用户查看。
本申请实施例通过接收服务端所推送的推送消息,将所携带推送内容相同的推送消息中的设备标识聚合到同一设备标识集合,并按照目标时间周期从设备标识集合从设备标识集合中取出设备标识与消息内容重新组装为推送消息后,统一调用推送服务接口向客户端以将推送消息发送给客户端,不仅可以减少存储推送消息所需的存储空间,而且可以减少调用推送服务接口的次数,从而节省了消息推送所需占用的数据资源。
本申请实施例通过接收服务端所推送的推送消息,将所携带推送内容相同的推送消息中的设备标识聚合到同一设备标识集合,并按照目标时间周期从设备标识集合从设备标识集合中取出设备标识与消息内容重新组装为推送消息后,统一调用推送服务接口向客户端以将推送消息发送给客户端,不仅可以减少存储推送消息所需的存储空间,而且可以减少调用推送服务接口的次数,从而节省了消息推送所需占用的数据资源。
图2是本申请实施例提供的另一种消息推送方法的步骤流程图,所述方法包括:
可选地,所述时间窗口至少第一时间窗口和第二时间窗口。
在本申请实施例中,第一时间窗口和第二时间窗口的区别在于,第一时间窗口用于统计未被推送过的第一推送消息,而第二时间窗口用于统计推送失败的第二推送消息。
步骤201,将所述目标时间周期中所接收到的第一推送消息划分至所述第一时间窗口。
在本申请实施例中,代理端按照目标时间周期的第一时间窗口对未被推送过的第一推送消息进行统计。
步骤202,生成与所述消息内容相对应的消息标识。
在本申请实施例中,代理端每次接收到服务端提供的消息内容时,需要生成该消息内容的消息标识以供后续查询使用。
在本申请实施例中,代理端通过所生成消息标识在数据库中查询是否存在与该新生成消息标识相同的消息标识。若已存在,则需要对消息内容进行聚合存储,具体的推送消息的主要结构体为:消息id|消息title|消息 content|消息创建时间|消息接收设备id|其他透传信息等。其中消息id 为消息标识、消息title为消息标签、消息content为消息内容,消息接收设备id为设备标识。其中,当两个以上的多条推送消息的消息标签和消息内容相同时候,认为可以是聚合的,因此可以将消息标识为key,将消息内容为 value,将多条消息内容相对应的消息标识更新为一个消息标识后,将消息内容聚合存储至数据库,无需对相同的消息内容进行重复存储,从而减少了代理端存储消息内容所需的数据资源。
步骤203,查询所述消息内容相对应的设备标识集合。
在本申请实施例中,代理端根据消息标识遍历数据库中是否存在与该消息标识相对应的设备标识集合。
本申请实施例通过生成消息内容相对应的消息标识来对设备标识集合进行查询,相对应通过消息内容进行查询的方式,可以有效减少查询凭据的数据量,提供设备标识集合的查询效率。
步骤204,在未查询到所述消息内容相对应的设备标识集合的情况下,生成与所述消息内容相对应的设备标识集合。
在本申请实施例中,若数据库中不存在该消息内容相对应的设备标识集合,则代理端生成一个与该消息内容相对应的设备标识集合,并将携带该消息内容的第一推送消息中的设备标识添加至新生成的设备标识集合。
步骤205,以所述标题信息和所述内容信息所组成的消息内容作为聚合键,将所述消息内容相同的第一推送消息中的设备标识聚合到同一设备标识集合。
在本申请实施例中,第一推送消息的结构体可以如下:
消息id|title|content|消息创建时间|设备标识|其他透传信息等;
其中title为标题信息,content为内容信息,可以将这两个字段为聚合键值,当两个及以上多条消息的title+content一样时,设备标识被认为是可聚合,以第一条推送消息的消息标识为准,将多条第一推送消息标识更新为第一个推送消息的消息标识,并将消息标识相同的设备进行聚合。
步骤206,将所述第一时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第一数据库分片中。
在本申请实施例中,若代理端在数据库中查询到消息内容相对应的设备标识集合,则可以直接将携带该消息内容的第一推送消息中的设备标识添加至查询到的设备标识集合。
进一步的,数据库中可通过如下存储结构对消息内容和设备标识集合进行存储:
Couchbase:key|value:消息标识|消息内容;
Redis:key|value:消息标识|设备标识集合。
其中,采用Couchbase(一款非关系型JSON文档数据库)数据库来存储消息内容,以消息标识为key,以消息内容为value,并采用redis数据库来存储设备标识集合,其中消息标识为key,设备标识集合为value。
步骤207,将所述消息内容相对应的消息标识添加至延迟发送队列。
在本申请实施例中,延迟发送队列是用于对推送消息进行延迟发送的消息发送队列,延迟发送队列按照添加顺序对消息标识进行输出。
具体的,在数据库为redis时,该延迟发送队列可以采用RMQ(Rabbit MessageQueue,一种基于redis的消息队列服务)。
步骤208,每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述延迟发送队列中输出的消息标识作为待发送消息标识。
在本申请实施例中,代理端接收延迟发送队列按照排队顺序输出的消息标识,并将每个消息标识作为待发送的消息标识。
步骤209,将所述待发送消息标识相对应的消息内容,以及所述待发送消息标识相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
在本申请实施例中,代理端在接收到延迟发送队列输出的待发送的消息标识后,将该待发送消息标识相对应设备标识集合从数据库中取出,然后将设备标识集合中的设备标识和待发送的消息内容进行批量组装,得到多条第二推送消息,然后清除数据库中的该待发送的消息标识以及相对应的设备标识集合和消息内容。
步骤210,在所述消息内容投递所述延迟发送队列失败时,将投递失败的消息内容划分至所述第二时间窗口。
在本申请实施例中,对于推送消息激增的突发情况,可能由于延迟发送队列中的容量限制等意外情况,导致消息标识向延迟发送队列失败,使得消息推送失败的情况出现,本申请实施例还通过将数据库进行分片,从而将未向延迟发送队列投递过的消息标识以及相对应的消息内容和设备标识集合存储至分片得到的第一数据库分片中,而将已向延迟发送队列投递过但投递失败的消息标识以及相对应的消息标识和设备标识集合存储至第二数据库分片,从而将未被投递和投递失败的消息标识进行区分。代理端将按照目标时间周期轮流交替地将第一数据库分片,而第二数据库分片中的消息标识直接交由消息发送队列直接进行发送,从而保证在所需推送消息激增情况下,向延迟发送队列投递失败的消息标识也可以被正常推送,提高了消息推送的稳定性。
步骤211,将所述第二时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第二数据库分片中,其中,所述第一数据库分片的优先级高于所述第二数据库分片。
在本申请实施例中,在向延迟队列投递消息标识失败后,则分别将消息标识,消息内容和设备标识集合存储至第二数据库分片中,其中该第二数据库分片中可以包含三个存储区域,分别是db1,db2,db3,其中:
db1中维护两个key:slotLeft,slotRight,每个slot代表一个时间槽窗口,代表上个目标时间周期,和当前的目标时间周期,之前投递失败的消息标识存储至slotRight,(假定slotRight正好处于当前的目标时间周期)对应的消息标识集合中;
db2中消息标识为key,消息内容为value存储消息内容
db3中以消息标识为key,设备标识集合为value,存储设备列表
本申请实施例通过对将用于存储投递失败的推送消息的数据库分片划分为多个时间槽窗口来按照时间顺序轮流向延迟发送队列中进行投递,使得投递失败的推送消息根据时间顺序有序地再次被推送,避免由于所需推送消息在单一时间段过多的情况出现,提高了消息推送的稳定性。
步骤212,每隔所述目标时间周期,从所述第二时间窗口中取出所述消息内容,并所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
在本申请实施例中,该过程中的第二时间窗口对消息内容进行统计的过程与步骤102类似,区别在于第二时间窗口所统计的消息内容是已向延迟发送队列投递且投递发送失败的第一推送消息。
步骤213,通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
该步骤可参照步骤105的详细描述,此处不再赘述。
可选地,所述步骤205,可以包括:
在所述延迟发送队列中的消息内容完成消息推送过程后,从所述第二时间窗口中取出所述消息内容。
本申请实施例中,每过一个目标时间周期,定时程序启动扫描db1中上一个目标时间周期的slotRigh中的全部消息标识,根据id逐条取出db2中的消息体和db3中的设备集合,然后组装为第二推送消息进行推送,然后再开始扫描slotLeft,当然若存在更多的时间槽窗口则依序按照时间顺序轮流扫描即可。
本申请提供的一种消息推送方法,通过将各核心系统的源数据汇总到数据管理平台进行存储,从而在数据管理平台实现了对各项目任务的并行执行,避免了项目任务执行过程中源数据被从核心系统频繁调用和重复存储的情况,从而减少了执行项目任务所需的数据资源,提高了项目任务执行的效率。
本申请实施例通过接收服务端所推送的推送消息,将所携带推送内容相同的推送消息中的设备标识聚合到同一设备标识集合,并按照目标时间周期从设备标识集合从设备标识集合中取出设备标识与消息内容重新组装为推送消息后,统一调用推送服务接口向客户端以将推送消息发送给客户端,不仅可以减少存储推送消息所需的存储空间,而且可以减少调用推送服务接口的次数,从而节省了消息推送所需占用的数据资源。
图3是本申请实施例提供的一种消息推送装置30的结构示意图,应用于数据管理平台,所述装置包括:
聚合模块301,用于将目标时间周期中所接收到的第一推送消息划分至时间窗口;
投递模块302,用于将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合;
向延迟发送队列投递所述消息内容;
组装模块303,用于每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;
推送模块304,用于通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
可选地,所述时间窗口至少第一时间窗口和第二时间窗口;
所述聚合模块301,还用于
将所述目标时间周期中所接收到的第一推送消息划分至所述第一时间窗口;
所述组装模块303,还用于:
在所述消息内容投递所述延迟发送队列失败时,将投递失败的消息内容划分至所述第二时间窗口;
每隔所述目标时间周期,从所述第二时间窗口中取出所述消息内容,并所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
可选地,所述组装模块303,还用于:
在所述延迟发送队列中的消息内容完成消息推送过程后,从所述第二时间窗口中取出所述消息内容。
可选地,所述聚合模块301,还用于:
将所述第一时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第一数据库分片中;
在所述将投递失败的消息内容划分至所述第二时间窗口之后,所述方法还包括:
将所述第二时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第二数据库分片中;
其中,所述第一数据库分片的优先级高于所述第二数据库分片。
可选地,所述第一推送消息至少包括:标题信息、内容信息、设备标识;
所述聚合模块301,还用于:
以所述标题信息和所述内容信息所组成的消息内容作为聚合键,将所述消息内容相同的第一推送消息中的设备标识聚合到同一设备标识集合。
可选地,所述聚合模块301,还用于:
生成与所述消息内容相对应的消息标识;
查询所述消息内容相对应的设备标识集合;
在未查询到所述消息内容相对应的设备标识集合的情况下,生成与所述消息内容相对应的设备标识集合。
可选地,所述投递模块302,还用于:
将所述消息内容相对应的消息标识添加至延迟发送队列;
所述推送模块304,还用于:
将所述延迟发送队列中输出的消息标识作为待发送消息标识;
将所述待发送消息标识相对应的消息内容,以及所述待发送消息标识相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
本申请提供的一种消息推送装置,通过将各核心系统的源数据汇总到数据管理平台进行存储,从而在数据管理平台实现了对各项目任务的并行执行,避免了项目任务执行过程中源数据被从核心系统频繁调用和重复存储的情况,从而减少了执行项目任务所需的数据资源,提高了项目任务执行的效率。
对于上述服务器的实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种电子设备,如图4所示,包括处理器401、通信接口402、存储器403和通信总线404,其中,处理器401,通信接口 402,存储器403通过通信总线404完成相互间的通信,
存储器403,用于存放计算机程序;
处理器401,用于执行存储器403上所存放的程序时,实现上述任一消息推送方法的步骤。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路 (Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列 (Field-Programmable GateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的消息推送方法。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的消息推送方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (10)

1.一种消息推送方法,其特征在于,所述方法包括:
将目标时间周期中所接收到的第一推送消息划分至时间窗口;
将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合;
向延迟发送队列投递所述消息内容;
每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;
通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
2.根据权利要求1所述的方法,其特征在于,所述时间窗口至少第一时间窗口和第二时间窗口;
所述将目标时间周期中所接收到的第一推送消息划分至时间窗口,包括:
将所述目标时间周期中所接收到的第一推送消息划分至所述第一时间窗口;
在所述向延迟发送队列投递所述消息内容之后,所述方法还包括:
在所述消息内容投递所述延迟发送队列失败时,将投递失败的消息内容划分至所述第二时间窗口;
每隔所述目标时间周期,从所述第二时间窗口中取出所述消息内容,并所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
3.根据权利要求2所述的方法,其特征在于,所述从所述第二时间窗口中取出所述消息内容,包括:
在所述延迟发送队列中的消息内容完成消息推送过程后,从所述第二时间窗口中取出所述消息内容。
4.根据权利要求2所述的方法,其特征在于,在所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合之后,所述方法还包括:
将所述第一时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第一数据库分片中;
在所述将投递失败的消息内容划分至所述第二时间窗口之后,所述方法还包括:
将所述第二时间窗口中的消息内容、所述消息内容相对应的消息标识、所述消息内容相对应的设备标识集合存储在第二数据库分片中;
其中,所述第一数据库分片的优先级高于所述第二数据库分片。
5.根据权利要求1所述的方法,其特征在于,所述第一推送消息至少包括:标题信息、内容信息、设备标识;
所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合,包括:
以所述标题信息和所述内容信息所组成的消息内容作为聚合键,将所述消息内容相同的第一推送消息中的设备标识聚合到同一设备标识集合。
6.根据权利要求1所述的方法,其特征在于,在所述将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合之前,所述方法还包括:
生成与所述消息内容相对应的消息标识;
查询所述消息内容相对应的设备标识集合;
在未查询到所述消息内容相对应的设备标识集合的情况下,生成与所述消息内容相对应的设备标识集合。
7.根据权利要求4所述的方法,其特征在于,所述向延迟发送队列投递所述消息内容,包括:
将所述消息内容相对应的消息标识添加至延迟发送队列;
所述从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息,包括:
将所述延迟发送队列中输出的消息标识作为待发送消息标识;
将所述待发送消息标识相对应的消息内容,以及所述待发送消息标识相对应的设备标识集合中的设备标识进行组装,得到第二推送消息。
8.一种消息推送方法,其特征在于,所述方法包括:
聚合模块,用于将目标时间周期中所接收到的第一推送消息划分至时间窗口;
投递模块,用于将所述时间窗口中所包含第一推送消息的设备标识,按照所述第一推送消息中的消息内容进行聚合,得到所述消息内容相对应的设备标识集合;
向延迟发送队列投递所述消息内容;
组装模块,用于每隔所述目标时间周期,从所述延迟发送队列中取出所述消息内容,以将所述消息内容和所述消息内容相对应的设备标识集合中的设备标识进行组装,得到第二推送消息;
推送模块,用于通过调用推送端的推送服务接口,将所述第二推送消息分别发送至所述设备标识所指示的客户端。
9.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7中任一所述的消息推送方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现权利要求1至7中任一所述的消息推送方法。
CN202111164021.3A 2021-09-30 2021-09-30 消息推送方法、装置、电子设备及存储介质 Pending CN114221925A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111164021.3A CN114221925A (zh) 2021-09-30 2021-09-30 消息推送方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111164021.3A CN114221925A (zh) 2021-09-30 2021-09-30 消息推送方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114221925A true CN114221925A (zh) 2022-03-22

Family

ID=80696048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111164021.3A Pending CN114221925A (zh) 2021-09-30 2021-09-30 消息推送方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114221925A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915652A (zh) * 2022-03-30 2022-08-16 北京奇艺世纪科技有限公司 一种消息推送方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033812A1 (en) * 2003-08-08 2005-02-10 Teamon Systems, Inc. Communications system providing message aggregation features and related methods
CN105843615A (zh) * 2016-03-22 2016-08-10 北京小米移动软件有限公司 通知消息的处理方法及装置
CN108388479A (zh) * 2018-02-10 2018-08-10 深圳壹账通智能科技有限公司 延迟消息推送方法、装置、计算机设备及存储介质
CN108959319A (zh) * 2017-05-25 2018-12-07 腾讯科技(深圳)有限公司 信息推送方法和装置
WO2020019185A1 (en) * 2018-07-25 2020-01-30 Qualcomm Incorporated Universal push framework
CN112702259A (zh) * 2020-12-23 2021-04-23 北京焦点新干线信息技术有限公司 延迟消息推送方法、装置及消息中间件
CN113162956A (zh) * 2020-01-22 2021-07-23 华为技术有限公司 一种建立通信连接的方法、装置和网络设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050033812A1 (en) * 2003-08-08 2005-02-10 Teamon Systems, Inc. Communications system providing message aggregation features and related methods
CN105843615A (zh) * 2016-03-22 2016-08-10 北京小米移动软件有限公司 通知消息的处理方法及装置
CN108959319A (zh) * 2017-05-25 2018-12-07 腾讯科技(深圳)有限公司 信息推送方法和装置
CN108388479A (zh) * 2018-02-10 2018-08-10 深圳壹账通智能科技有限公司 延迟消息推送方法、装置、计算机设备及存储介质
WO2020019185A1 (en) * 2018-07-25 2020-01-30 Qualcomm Incorporated Universal push framework
CN113162956A (zh) * 2020-01-22 2021-07-23 华为技术有限公司 一种建立通信连接的方法、装置和网络设备
CN112702259A (zh) * 2020-12-23 2021-04-23 北京焦点新干线信息技术有限公司 延迟消息推送方法、装置及消息中间件

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王正元;: "基于RSS的数据库资源信息推送服务" *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915652A (zh) * 2022-03-30 2022-08-16 北京奇艺世纪科技有限公司 一种消息推送方法、装置、电子设备及存储介质
CN114915652B (zh) * 2022-03-30 2024-03-15 北京奇艺世纪科技有限公司 一种消息推送方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN111163159B (zh) 消息订阅方法、装置、服务器及计算机可读存储介质
CN110413650B (zh) 一种业务数据的处理方法、装置、设备和存储介质
CN104604189A (zh) 大型企业的高效状态发布机制
US11188443B2 (en) Method, apparatus and system for processing log data
CN109039817B (zh) 一种用于流量监控的信息处理方法、装置、设备及介质
CN112434039A (zh) 数据的存储方法、装置、存储介质以及电子装置
CN111277639A (zh) 一种保持数据一致性的方法和装置
WO2023087769A1 (zh) 基于分布式流计算引擎Flink的关键字段实时去重方法
CN114090366A (zh) 一种监控数据的方法、装置和系统
CN106156258B (zh) 一种在分布式存储系统中统计数据的方法、装置及系统
CN114221925A (zh) 消息推送方法、装置、电子设备及存储介质
CN111124717A (zh) 消息投递方法、系统及计算机存储介质
US8886913B2 (en) Apparatus and method for identifier management
CN110389976B (zh) 一种多接口数据的调度方法和装置
CN113064740A (zh) 一种消息处理方法和装置
WO2023147716A1 (zh) 一种流控计费方法、装置、系统、电子设备、介质及产品
CN107977381B (zh) 数据配置方法、索引管理方法、相关装置以及计算设备
CN112688870B (zh) 一种路由方法、路由装置及节点设备
CN110493735B (zh) 一种短信处理方法及装置
CN111756836B (zh) 一种基于事件管理模型的信息发送方法及装置
CN113742004B (zh) 一种基于flink框架的数据处理方法和装置
CN114048059A (zh) 接口的超时时间调整方法、装置、计算机设备及存储介质
CN110971535B (zh) 一种通信拥塞控制方法及装置、设备和存储介质
CN110134547B (zh) 一种基于中间件的重复数据删除方法和相关装置
CN110019671B (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