CN108241616A - 消息推送方法和装置 - Google Patents

消息推送方法和装置 Download PDF

Info

Publication number
CN108241616A
CN108241616A CN201611202827.6A CN201611202827A CN108241616A CN 108241616 A CN108241616 A CN 108241616A CN 201611202827 A CN201611202827 A CN 201611202827A CN 108241616 A CN108241616 A CN 108241616A
Authority
CN
China
Prior art keywords
push
task
object data
block
message
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
Application number
CN201611202827.6A
Other languages
English (en)
Other versions
CN108241616B (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201611202827.6A priority Critical patent/CN108241616B/zh
Publication of CN108241616A publication Critical patent/CN108241616A/zh
Application granted granted Critical
Publication of CN108241616B publication Critical patent/CN108241616B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators

Abstract

本申请提供了一种消息推送方法和装置。其中,该方法包括:响应于消息推送请求,获取目标对象数据文件;从目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端;将待推送消息,推送至任务块中的每条对象数据所指示的目标终端,并记录任务块的整体推送状态。由于该方案通过将目标对象数据划分成多个任务块进行读取和推送,并以任务块为单位记录任务块整体推送状态,从而解决了现有的消息推送方法在目标对象数据量较大时,存在的对数据库操作频繁、实施过程复杂的技术问题,达到了快速、简易且进度可控地向大批量目标对象数据指示的目标终端进行消息推送的技术效果。

Description

消息推送方法和装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种消息推送方法和装置。
背景技术
目前,在进行消息等推送的领域,通过数据库来存储用户的推送记录,例如:如给A用户发送完之后,就更新数据库,表明已经给此用户发送成功,以防止重复处理。即,以单个用户作为记录推送状态的单位。
这种操作模式势必要多次访问数据库,就造成了数据库的负担。进一步的,在灾难恢复的时候,也就需要逐个用户记录确定是否需要重新进行推送,所谓的灾难恢复指的是在大量消息的发送过程当中,出现意外情况(例如:宕机、应用crash等)时,等到机器或应用恢复之后,还可以接着之前的发送进度来继续发送,不会出现消息的重发或遗漏。
当然,对于类似于银行给用户推送账单这种特别精准的用户触发需求,是需要这样逐条保证准确性的,但是对于很多场景而言,是不需要有如此高的准确性,如果仍旧采用这种推送和灾难恢复方式,所达到的系统损耗要远远超出所能达到的效益,造成了系统资源不必要的浪费。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种消息推送方法和装置,以解决现有技术中在消息推送的过程中需要频繁对数据库进行读写,而导致的系统负荷大、处理效率低的技术问题。
本申请实施例提供了一种消息推送方法,包括:
响应于消息推送请求,获取目标对象数据文件;
从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端;
将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
在一个实施方式中,在所述任务块中的对象数据还未开始推送的情况下,将所述任务块的整体推送状态记录为未推送;在所述任务块中的对象数据已推送至少一条的情况下,将所述任务块的整体推送状态记录为推送中;在所述任务块中的对象数据已推送完毕的情况下,将所述任务块的整体推送状态记录为已推送。
在一个实施方式中,在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,所述方法还包括:
检测是否需要进行灾难恢复;
如果需要,则重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
在一个实施方式中,所述预设条数是按照系统所能容忍的推送失败的目标终端的数量确定的。
在一个实施方式中,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块:
控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在一个实施方式中,系统中包括多个任务管理器,相应的,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在一个实施方式中,控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
通过任务锁的方式控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在一个实施方式中,所述获取目标数据文件包括:
获取目标用户名单列表;
根据所述目标用户名单列表,建立所述目标对象数据文件。
在一个实施方式中,所述待推送消息包括以下至少之一:短信、彩信、软件提示消息和邮件。
在一个实施方式中,所述待推送消息包括:APP推送消息。
基于相同的发明构思,本申请还提供了一种消息推送装置,包括:
第一获取单元,用于响应于消息推送请求,获取目标对象数据文件;
读取单元,用于从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端;
推送单元,用于将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
在一个实施方式中,所述推送单元具体用于:
在所述任务块中的对象数据还未开始推送的情况下,将所述任务块的整体推送状态记录为未推送;
在所述任务块中的对象数据已推送至少一条的情况下,将所述任务块的整体推送状态记录为推送中;
在所述任务块中的对象数据已推送完毕的情况下,将所述任务块的整体推送状态记录为已推送。
在一个实施方式中,所述装置还包括:
检测单元,用于在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,检测是否需要进行灾难恢复;
重发单元,用于在确定需要进行灾难恢复的情况下,重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
在一个实施方式中,所述预设条数是按照系统所能容忍的推送失败的目标终端的数量确定的。
在一个实施方式中,所述读取单元具体用于控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在一个实施方式中,所述读取单元具体用于控制多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,系统中包括多个任务管理器。
在一个实施方式中,所述读取单元具体用于通过任务锁的方式分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在一个实施方式中,所述装置还包括:
第二获取单元,用于获取目标用户名单列表;
建立单元,用于根据所述目标用户名单列表,建立所述目标对象数据文件。
在本申请实施例中,通过以任务块数据为单位对目标对象数据进行读取和推送,同时以任务块为单位的在数据库中记录、修改对应的任务块的整体推送状态,从而解决了现有的消息推送方法在目标对象数据量较大的情况下存在的对数据库操作频繁、实施过程复杂的技术问题,达到了向大批量目标对象数据所指示的目标终端快速、高效地进行消息推送的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1是根据本申请实施例的消息推送方法的处理流程图;
图2是根据本申请实施例的一个具体场景示例示意图;
图3是根据本申请实施例具体的航旅平台消息推送服务器的示意图;
图4是根据本申请实施例的消息推送装置的结构组成示意图;
图5a是根据本申请实施例的消息推送装置中的读取单元读取一个任务块的一种示意图;
图5b是根据本申请实施例的消息推送装置中的读取单元读取一个任务块的另一种示意图;
图6是根据本申请实施例的消息推送装置具体执行时的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本申请做进一步详细说明。在此,本申请的示意性实施方式及其说明用于解释本申请,但并不作为对本申请的限定。
考虑到现有的消息推送方法往往是以目标对象数据作为单位进行读取、推送和记录。具体实施时,这种方法常常需要多次访问数据库,容易造成数据库的负担。进一步的,在灾难恢复的时候,也需要逐个读取用户记录以确定是否需要重新进行推送。因此,当目标对象数据量较大时,例如待推送用户量达到百万级别以上时,通过现有的消息推送方法将待推送消息推送至目标对象数据所指示的目标终端时,常常会存在实施过程复杂和对数据库操作频繁的技术问题,进而会影响消息推送的效率。针对产生上述技术问题的根本原因,本申请考虑可以以任务块为单位,读取并向任务块中的预设条数的对象数据所指示的目标终端推送消息,同时记录、修改整个任务块的整体推送状态。这样可以避免每次单独对目标对象数据的进行读取、推送和记录,简化了操作过程,减少了对数据库的读写次数,从而可以实现快速、简易、高效地推送消息,并且可以经济、高效地实现灾难恢复。
基于上述考虑思路,本申请提供了一种消息推送方法。请参阅图1。该方法可以包括以下步骤:
步骤101:响应于消息推送请求,获取目标对象数据文件。
在本实施方式中,所述消息推送请求具体可以是将一个或多个预设消息发送至特定目标对象的请求。其中,所述目标对象具体可以是某网站的注册用户,也可以某APP的使用用户,还可以是关注某公众账号的用户等等。需要说明的是,具体可以通过将待推送的消息推送到目标终端,实现将消息推送至对应的目标对象。其中,所述目标终端具体可以是目标对象的手机,也可以是目标对象所使用的平板电脑,还可以是目标对象使用的邮箱。对应的,所述目标对象的数据文件可以是用于指示上述目标终端的数据文件,具体可以是用户的手机号码集合,也可以是用户的邮箱地址集合。例如,所述消息推送请求具体可以是将某旅行优惠活动消息推送至旅人平台上B城的所有用户。则相应的,目标对象可以是该旅人平台上注册地在B城的所有用户。对应的目标终端可以是上述用户用于接收某旅行优惠活动消息的手机。目标对象数据文件则可以是上述用户手机号码的集合。
在本实施方式中,所述响应于消息推送请求,获取目标对象的数据文件。具体可以是,接收并解析所述消息推送请求,再根据消息推送请求的消息推送对象,获取对应的目标对象数据文件。例如,消息推送请求是将某旅行优惠活动消息推送给旅人平台上B城的所有用户,则可以先解析获得该消息推送请求,再根据解析得到的消息推送请求的内容,确定该消息推送请求所请求推送的目标对象,即旅人平台上注册地为B城的所有用户,进而可以获取对应目标对象数据文件。例如,获取旅人平台上注册地为B城的所有用户的手机号码。
步骤102:从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端。
在本实施方式中,所述预设条数具体可以根据系统所能容忍的消息损失情况确定,也可以是根据系统所能容忍的推送失败的目标终端的数目确定。例如,系统可以容忍的消息损失是1000条(即,有1000个用户未被成功推送),则对应的所述预设条数不能超过1000。所述任务块可以是进行读取操作时具体的执行单位,即每次读取一个任务块的对象数据,其中,该任务块可以包括预设条数的对象数据。
在本实施方式中,所述每条对象数据指示一个目标终端。具体可以是,当对象数据是用户的手机号码时,每个手机号码指示一个目标手机,进而可以通过该手机号码将消息推送到对应的手机。当对象数据是用户的邮箱地址时,每个邮箱地址指示一个目标邮箱,进而可以通过该邮箱地址将消息推送到对应的邮箱等。
在本实施方式中,所述任务块具体可以是为由目标对象数据文件中的多条对象数据组成的一组数据。具体组合时,可以按照目标对象数据原有的排列顺序,将多条排序相近的对象数据组合为一个任务块数据。也可以按照预设的规则从目标对象数据文件中提取出多条目标对象数据作为一个任务块数据。例如有编号为1,2,3······8,9,10总共10条按照编号顺序排列的用户联系电话数据。可以将编号为1-5的5条数据组合成一个任务块数据,将编号为6-10的5条数据组合成另一个任务块数据。也可以按照预设规则,将编号为奇数的1,3,5,7,9的数据组合为一个任务块数据,将编号为偶数的2,4,6,8,10数据组合成另一个任务块数据。当然,每一个任务块数据的数据数量,即预设条数可以相同,也可以不相同。每个任务块中的对象数据数量可以根据具体情况和具体需要自行确定。对此,本身不作限定。例如,淘宝网站在向淘宝用户推送打折信息前,可以先通过任务管理器从500万个淘宝用户的手机数据中,按原有的顺序,逐次预定10000个用户手机数据作为一个任务块,进行读取,读取获得对应用户的手机号码,进而通过手机号码向用户推送打折信息。
在本实施方式中,所述从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。具体可以是,每次以任务块为读取单位,读取预设条数的对象数据。例如,目标对象数据文件是100万个用户的手机号码的集合时,可以从该手机号码的集合中每次读取一个任务块,其中,该任务块包括10000个用户的手机号码。读取完上述任务块后,再读取下一个任务块,其中,下一个任务块包括另外10000个用户的手机号码。
步骤103:将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
在本实施方式中,所述待推送消息具体可以是短信、彩信、软件提示消息或邮件等,也可以是上述任意两种或多种消息形式的组合。当然,也可以根据具体情况或实施要求选择其他的形式的消息作为所述待推送消息。对此,本申请不作限定。
在本实施方式中,所述任务块的整体推送状态可以包括:未推送、推送中和已推送。具体地,所述未推送可以是指任务块中的对象数据还未开始推送的情况;所述推送中可以是指任务块的多条对象数据中至少一条已被推送的情况;所述已推送可以是指任务块中的对象数据已经全部推送完毕的情况。
在本实施方式中,将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。其中,所述各个任务块的整体推送状态可以记录在数据库中。具体可以是,当读取任务块,且尚未将待推送消息推送至该任务块中任意一条对象数据所指示的目标终端时,将该任务块的整体推送状态记为未推送。当将待推送消息推送至该任务块中至少一条对象数据所指示的目标终端,且未将待推送消息推送至该任务块中所有的对象数据所指示的所有目标终端时,将该任务块的整体状态记为推送中。当将待推送消息推送至该任务块中所有的目标对象数据所指示的所有目标终端时,将该任务块的整体推送状态记为已推送。例如,将旅行优惠活动消息推送至航旅平台上B城的用户时,具体可以以任务块为单位,将旅行优惠活动消息推送至每个任务块中预设条数的目标对象数据所指示的目标终端,例如10000条手机号码所指示的10000个用户的手机,并且在向任务块中的目标对象推送旅行优惠活动消息的同时,记录各个任务块整体的推送状态。例如当读取获得一个包括10000条手机号码的任务块但尚未将旅行优惠活动消息推送至该任务块中任何一个用户手机时,将该任务块的整体推送状态记为未推送。当将旅行优惠活动消息推送至该任务块中至少一条手机号码所对应的用户手机,但未将旅行优惠活动消息推送至该任务块中所有的10000个用户手机时,将该任务块的整体推送状态记为推送中。当已经完成向该任务块中10000个用户手机推送旅行优惠活动消息时,将该任务块的整体推送状态记为已推送。
在一个实施方式中,在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,所述方法还可以包括:
S1:检测是否需要进行灾难恢复。
S2:如果需要,则重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
在本实施方式中,所述灾难恢复具体可以是在向大量目标对象推送消息的过程中,由于一些意外情况,例如,宕机、应用crash、突然断电等,造成推送消息的过程突然中止;意外情况消除后,继续恢复之前的消息推送,且注意避免消息重复推送的过程。具体实施时,现有的消息推送方法,考虑到采用目前现有的灾难恢复方法,虽然恢复精度很高,但由于成本过高,一般情况很少使用现有的灾难恢复方法进行灾难恢复。只有少数非常注重推送精度的消息推送会采用现有的灾难恢复方法。例如,银行给用户推送账单,要求精确的触达,这时会在该方法中采用这种成本较高的灾难恢复方法。本申请实施例考虑到现有的消息推送方法中灾难恢复的成本问题,又考虑到一般情况的消息推送,并不要求必须将消息全部精确地推送至所有用户。因此,在可以容忍一定消息损失的前提下,考虑了一种更加简易、成本低廉的灾难恢复的方法。即,在以任务块为单位,将待推送消息推送至各个任务块中的目标对象所指示的目标终端的同时,可以以任务块为单位,在数据库中记录任务块整体的推送状态。例如,未推送、推送中和已推送。当重启消息推送时,该方法可以先检测是否需要进行灾难恢复。如果需要进行灾难恢复,进而可以检测存储在数据库中各个任务块的整体推送状态。其中,整体推送状态为已推送或者推送中的任务块,可以被认为已经完成消息推送,不再重新进行消息的推送。将待推送消息向整体推送状态为未推送的任务块中目标对象所指示的目标终端进行推送。从而,可以避免向相同用户推送相同的消息,造成用户的困扰,实现快速、进度可控、成本低廉的灾难恢复。
具体实施时,例如,航旅平台在将旅行优惠活动的消息推送给航旅平台上B城的用户时,以任务块为单位,推送消息并同时记录每个任务块的整体推送状态。当由于突然宕机,导致推送过程发生中断。机器恢复正常时,先检测是否需要灾难恢复,发现之前执行的向航旅平台上B城的用户推送旅行优惠活动的消息的工作中途被中止,没有执行完,需要进行灾难恢复。再检测存储在数据库中各个任务块的整体推送状态,其中:第一任务块、第二任务块和第三任务块的整体推送状态均为已推送,第四任务块的整体推送状态为推送中,第五任务块和第六任务块的整体推送状态均为未推送。则将待推送消息分别推送至所述第五任务块和第六任务块中的手机号码所指示的各个用户的手机上。
需要说明的是,在上述实施方式中,对于整体推送状态为推送中的任务块,可以认为已经将待推送消息推送至该任务块数据中部分对象数据所指示的目标终端,但还没有向该任务块其他部分对象数据所指示的目标终端推送待推送消息。出于实施成本的考虑,在可容忍的程度下,可以根据本申请提供的消息推送方法,将整体推送状态为推送中的任务块数据统一视为已推送。在重启消息推送时,对这类对象数据不再进行重新读取和推送。当然,采用上述方法处理时,如果仅可以忍受少量待推送消息的遗漏,为了减少该方法实施可能遗漏的未推送数目标终端数目,可以减少单个任务块中目标对象数据的预设数量。如果对消息推送的结果要求比较严格,精度要求比较高,例如,要求消息推送的过程中遗漏的推送消息不能超过5条,可以以增加实施成本,降低推送效率为代价,结合本本申请提供的消息推送方法,对每个任务块中的各个目标对象数据的推送状态在数据库中分别进行记录和实时更新。
在一个实施方式中,所述预设条数可以是按照系统所能容忍的消息损失数量确定的。
在本实施方式中,在推送精度的要求不是很高的情况下,所述预设条数具体可以是根据系统所能容忍的消息损失情况来确定。例如,系统可以容忍的消息损失是1000条,则对应的所述预设条数不能超过1000。
在一个实施方式中,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块:控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在本实施方式中,所述任务管理器具体可以是独立的具有一定逻辑处理和运算能力的设备,也可以是计算机里的一个执行线程,还可以是其他具有一定执行能力的设备或结构等。
在本实施方式中,为了读取目标对象数据文件,具体实施时,可以通过控制任务管理器从目标对象数据文件中读取预设条数的目标对象数据作为一个任务块。例如,航旅平台在读取该平台B城的用户的手机号码时,具体可以控制一个任务管理器从该平台B城用户的手机号码文件中每次读取10000个用户的手机号码作为一个任务块。
在一个实施方式中系统中包括多个任务管理器,相应的,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在本实施方式中,为了充分利用计算机多核处理器的特性,可以考虑通过并发处理(包括:读取、推送和记录),提高推送效率。具体地,系统中可以包括多个任务管理器。所述多个任务管理器可以同一时间,分别从目标对象数据文件中读取预设条数的目标对象数据作为一个任务块,即同一时间读取多个任务块。进而可以将待推送消息分别推送至上述多个任务块中各个目标对象数据所指示的具体目标终端。
例如,可以设计两个任务管理器:第一任务管理器和第二任务管理器。具体实施时,可以是,第一任务管理器先从目标对象数据文件中预定预设数量的数据作为第一任务块数据进行读取。第二任务管理器可以从目标对象数据文件中除第一任务管理器预定的数据以外的数据中预定预设数量的对象数据进行读取。当然,上述所列举的设计两个任务管理器的实施方式只是为了更好地说明本申请的示意性示例。具体实施时,还可以根据实际情况,设计3个,4个甚至更多的任务管理器来读取、推送、记录目标对象数据。即,可以通过设计多个任务管理器以充分利用多核CPU和网卡宽带的优势,提高消息推送的效率。
在一个实施方式中,控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,具体可以包括:
通过任务锁的方式控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在本实施方式中,所述任务锁具体可以是一种数据标识,用于标识某个任务块数据被分配至某个任务管理器,不需要再进行分配。需要说明的是,上述数据标识可以是一个,也可以是多个。具体地,每一个任务管理器只有获得该任务锁之后,才有权限从目标对象数据文件中预定预设数量的目标对象数据作为任务块进行读取处理。例如,当有两个任务管理器时,第一任务管理器获得锁,根据这个锁,第一任务管理器可以从目标数据文件中预定预设数量的对象数据作为第一任务块。而这时,第二任务管理器没有获得该锁,则不能对目标对象数据文件中的目标对象数据进行预定。当第一任务管理器预定完属于自己读取处理的第一任务块后,释放锁。第二任务管理器才可以获得该锁,并根据该锁,才有权限从目标对象数据文件中除第一任务块以外的目标对象数据中预定预设数量的目标对象数据进行读取处理。同样,在第二任务管理器释放该锁之前,第一任务管理器也不能获得该锁,也没有权限从剩下的目标对象数据文件中预定对目标对象数据进行读取处理。通过设置任务锁这种数据标识,可以有效地避免多个任务管理器同时对一个任务块进行预定处理的情况。此外,上述任务锁具体也可以是多个用于标识的特定字符串。例如,当有两个任务管理器时,第一任务管理器配有一个标识:flag1,同时第二任务管理器配有一个标识:flag2。当第一任务管理器对某个任务块进行预定时,会在该任务块上标记上flag1的数据标识,这时第二任务管理器在准备预定该任务块时,发现该任务块已经被标识有flag1,则放弃对该任务块数据的预定,转而预定下一个任务块,同样第二任务管理器在预定下一个任务块时,也会在这个任务块上标记上flag2的数据标识,以阻止第一任务管理器对该任务块的预定。当第一任务管理器和第二任务管理同时对同一个任务块进行预定时,且该任务块数据上还没有任何数据标识时,则可以按照预设优先级权限,由第一任务管理器预定该任务块,第二任务管理器则预定下一个任务块。同样,这种方法也能避免多个任务管理器同时对一个任务块进行预定处理,还可以避免同一个任务管理器对同一个任务块进行重复预定处理。
在一个实施方式中,所述获取目标数据文件具体可以包括:
S1:获取目标用户名单列表。
S2:根据所述目标用户名单列表,建立所述目标对象数据文件。
在本实施方式中,所述目标用户名单列表具体可以是待推送用户的手机号码列表,也可以是待推送用户的邮箱地址列表,还可以是待推送用户的注册APP的收件箱列表等等。对此,本申请不作限定。
在本实施方式中,具体实施时,可以根据所述目标用户的名单列表,生成对应的目标对象数据文件,以进行后续读取处理。其中,该目标对象数据文件中包括了目标用户的名单列表中相应的具体的目标对象数据。
在一个实施方式中,所述待推送消息具体可以包括以下至少之一:短信、彩信、软件提示消息和邮件。当然,也可以根据具体情况和具体要求,选择其他形式的消息作为多数待推送消息。对此,本申请不作限定。
在一个实施方式中,所述待推送消息还可以包括:APP推送消息。
在本实施方式中,所述APP(Application,安装软件)可以是用户智能手机上安装应用软件,也可以是用户在平板电脑或者其他智能设备上安装的应用软件。对此,本申请不作限定。例如,上述推送消息具体可以是航旅平台APP推送的消息。
在本申请实施例中,通过以任务块为单位读取目标对象数据,同时在数据库中以任务块为单位,记录并修改对应的任务块的整体推送状态,从而解决了现有的消息推送方法在目标对象数据量较大的情况下,实施时存在的对数据库操作频繁、实施过程复杂的技术问题,达到了快速、简易、高效且进度可控地向大量目标对象所指示的目标终端推送消息的技术效果,并且实现低成本的灾难恢复。
在一个具体的场景示例中,请参阅图2。为了向航旅圈人平台的用户推送最新的航旅信息,可以应用本申请实施例提供的消息推送方法进行消息推送。其中,该航旅圈人平台有200万的注册用户。具体实施时,可以通过图3所示的航旅圈人平台消息推送服务器,按照以下方法进行消息推送。可以先通过所述服务器在目标对象数据读取模块上设置两个任务管理器:第一任务管理器和第二任务管理器。具体执行时,第一任务管理器获得锁,根据该锁,第一任务管理器可以先从用户数据中预定标号为1-10000的用户数据作为第一任务块数据。第一任务管理器预定完第一任务块数据后,释放该锁,并开始读取第一任务块数据中相应的用户手机号码。第二任务管理器获得该锁,同样根据该锁,第二任务管理可以从剩下的用户数据中预定标号为10001-20000的用户数据作为第二任务块数据。在第二任务管理器预定完第二任务块数据后,释放该锁,并开始读取第二任务块数据中用户手机号码。当第一任务管理器读取完第一任务块数据得到该任务块数据中相应的所有的用户手机号码后,通过服务器内部的数据线,将上述手机号码发送给具体的消息推送模块,并调用消息推送模块根据具体的用户手机号码,将最新的航旅信息,以短信的形式发送到对应各个用户的手机中。之后,第一任务管理重新获取锁,根据该锁,再从剩下的用户数据中预定标号为20001-30000的用户数据作为第三任务块数据后,同时释放锁。消息推送模块在获得第一任务块数据中用户手机号码后,开始将最新的航旅信息发送到对应的用户手机上时,并将第一任务块数据在数据库中的该任务块整体推送状态改为推送中。当消息推送模块完成向第一任务块数据中所用用户推送消息时,将第一任务块数据在数据库中的整体推送状态改为已推送。这样,可以实现以任务块数据为单位,读取用户数据,并根据读取得到的用户数据,发送最新的航旅信息。同时还可以以任务块数据为单位将不同时间段的向目标用户推送消息的情况以对应的任务块整体推送状态的形式记录在数据库中,以备后续使用。从而,解决了在大数据量的情况下采用现有的消息推送方法时存在的对数据库操作频繁、实施过程复杂的技术问题,达到了快速、简易、高效地向大量用户推送消息的技术效果。
基于同一构思,本申请实施例中还提供了一种消息推送装置,如下面的实施例所述。由于消息推送装置解决问题的原理与消息推送方法相似,因此消息推送装置的实施可以参见上述消息推送方法的实施,重复之处不再赘述。需要说明的是,以下所使用的术语“单元”或者“模块”可以为实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本申请实施例还提供了一种消息推送装置。请参阅图4。所述消息推送装置具体可以包括:第一获取单元401、读取单元402、推送单元403。其中:
第一获取单元401,用于响应于消息推送请求,获取目标对象数据文件。
在本实施方式中,所述消息推送请求具体可以是将一个或多个预设消息发送至特定目标对象的请求。其中,所述目标对象具体可以是某网站的注册用户,也可以某APP的使用用户,还可以是关注某公众账号的用户等等。需要说明的是,具体可以通过将待推送的消息推送到目标终端,实现将消息推送至对应的目标对象。其中,所述目标终端具体可以是目标对象的手机,也可以是目标对象所使用的平板电脑,还可以是目标对象使用的邮箱。对应的,所述目标对象的数据文件可以是用于指示上述目标终端的数据文件,具体可以是用户的手机号码集合,也可以是用户的邮箱地址集合。例如,所述消息推送请求具体可以是将某旅行优惠活动消息推送至旅人平台上B城的所有用户。则相应的,目标对象可以是该旅人平台上注册地在B城的所有用户。对应的目标终端可以是上述用户用于接收某旅行优惠活动消息的手机。目标对象数据文件则可以是上述用户手机号码的集合。
在本实施方式中,所述待推送消息具体可以是短信、彩信、软件提示消息或邮件等,也可以是上述任意两种或多种消息形式的组合。当然,也可以根据具体情况或实施要求选择其他的形式的消息作为所述待推送消息。对此,本申请不作限定。
读取单元402,用于从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端。
在本实施方式中,所述每条对象数据指示一个目标终端。具体可以是,当对象数据是用户的手机号码时,每个手机号码指示一个目标手机,进而可以通过该手机号码将消息推送到对应的手机。当对象数据是用户的邮箱地址时,每个邮箱地址指示一个目标邮箱,进而可以通过该邮箱地址将消息推送到对应的邮箱等。
在本实施方式中,所述预设条数具体可以根据系统所能容忍的消息损失情况确定。例如,系统可以容忍的消息损失是10000条,则对应的所述预设条数不能超过10000。所述任务块可以是进行读取操作时具体的执行单位,即每次读取一个任务块的对象数据,其中,该任务块可以包括预设条数的对象数据。
推送单元403,用于将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
在一个实施方式中,所述推送单元403具体还可以用于:
在所述任务块中的对象数据还未开始推送的情况下,将所述任务块的整体推送状态记录为未推送;
在所述任务块中的对象数据已推送至少一条的情况下,将所述任务块的整体推送状态记录为推送中;
在所述任务块中的对象数据已推送完毕的情况下,将所述任务块的整体推送状态记录为已推送。
需要说明的是,可以将任务块整体的推送状态记录在数据库中,进而可以根据该任务块的推送进度,实时更改存储在数据库中该任务块的整体推送状态。
在一个实施方式中,所述消息推送装置还可以包括:检测单元和重发单元,其中,
检测单元,用于在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,检测是否需要进行灾难恢复;
重发单元,用于在确定需要进行灾难恢复的情况下,重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
在本实施方式中,所述灾难恢复具体可以是在向大量目标对象推送消息的过程中,由于一些意外情况,例如,宕机、应用crash、突然断电等,造成推送消息的过程突然中止;意外情况消除后,继续恢复之前的消息推送,避免消息重复推送的过程。本申请实施例考虑到现有的消息推送方法中灾难恢复的成本问题,在可以容忍一定消息损失的前提下,提供了一种更加简易、成本低廉的灾难恢复的方法。即,在以任务块为单位,将待推送消息推送至各个任务块中的目标对象所指示的目标终端的同时,以任务块为单位,可以在数据库中记录任务块整体的推送状态。例如,未推送、推送中和已推送。当重启消息推送时,具体可以通过检测单元先检测是否需要进行灾难恢复。在确定需要进行灾难恢复的情况下,再通过重发单元,检测存储在数据库中各个任务块的整体推送状态。其中,整体推送状态为已推送或者推送中的任务块认为已经完成消息推送,不再重新进行消息的推送。将待推送消息向整体推送状态为未推送的任务块中目标对象所指示的目标终端进行推送。从而,可以避免向相同用户推送相同的消息,造成用户的困扰,并实现快速、进度可控、成本合理的灾难恢复。
在一个实施方式中,一个任务块中目标对象数据的预设条数可以是按照系统所能容忍的消息损失确定的。
在本实施方式中,在推送精度的要求不高的情况下,所述预设条数具体可以根据系统所能容忍的消息损失情况来确定。例如,系统可以容忍的消息损失是10000条,则对应的所述预设条数不能超过10000。需要说明的是,所述任务块可以是读取单元402进行读取操作时具体的执行单位,即每次读取一个任务块的对象数据,其中,该任务块可以包括预设条数的对象数据。
在一个实施方式中,所述读取单元402具体可以用于控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在本实施方式中,所述任务管理器具体可以是独立的具有一定逻辑处理和运算能力的设备,也可以是计算机里的一个执行线程,还可以是其他具有一定执行能力的设备或结构等。
在一个实施方式中,所述读取单元402具体用于控制多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,系统中包括多个任务管理器。
在本实施方式中,为了充分利用计算机多核处理器的特性,可以考虑通过并发处理,提高推送效率。具体地,系统中可以包括多个任务管理器。所述多个任务管理器可以同一时间,分别从目标对象数据文件中读取预设条数的目标对象数据作为一个任务块,即同一时间读取多个任务块。进而可以将待推送消息分别推送至多个任务块中各个目标对象数据所指示的目标终端。
需要说明的是,上述消息推送装置所涉及的任务块是读取和后续处理(推送和记录)的具体执行单位。具体实施时,所述任务块可以是一个目标对象数据的组合,可以包括目标数据文件中的多条目标对象数据。具体可以参阅图5a和图5b。例如,对于一个包括有编号为1-15的15条目标数据的目标数据文件。请参阅图5a,第一任务管理器可以先从目标数据文件中获取编号为1-5的5条目标对象数据作为第一任务块,进行读取、处理。再获取剩下的编号为6-10的5条目标对象数据作为第二任务块读取、处理。最后获取编号11-15的5条目标对象数据作为第三任务块进行读取、处理。当然也可以参阅图5b,可以不按照目标数据文件中原有的排列顺序,按照预设的规则从目标数据文件中依次选择多条目标数据作为一个任务块。此处,第一任务管理器可以按照目标数据奇偶数的特征选择目标数据作为相应的一个任务块。例如,首先,第一任务管理从目标数据文件中获取编号为奇数1,3,5,7,9,11,13,15的8条目标对象数据作为第一任务块进行读取、处理。再从目标数据文件中获取编号为偶数2,4,6,8,10,12,14的7条目标对象数据作为第二任务块进行读取、处理。需要说明的是,每个任务块中的目标对象数据条数可以相同,也可以不同。例如,图5a中,第一任务块、第二任务块和第三任务块的目标对象数据数是相同的,都是包括了5条目标对象数据。而图5b中,第一任务块包括8条目标对象数据,第二任务块则包括7条目标对象数据。即,第一任务块和第二任务块的所包含的目标对象数据的条数不同。有时考虑到系统具体处理情况,可以在系统比较空闲的时候,安排第一任务管理器每次获取较大数量的目标对象数据作为任务块进行读取、处理;在系统比较忙的时候,则安排第一任务管理器每次获取较小数量的目标对象数据作为任务块数据进行读取、处理。
在一个实施方式中,所述读取单元402具体用于通过任务锁的方式分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
在本实施方式中,所述任务锁具体可以是一种数据标识,用于标识某个任务块数据被分配至某个任务管理器,不需要再进行分配。需要说明的是,上述数据标识可以是一个,也可以是多个。具体地,每一个任务管理器只有获得该任务锁之后,才有权限从目标对象数据文件中预定预设数量的目标对象数据作为任务块进行读取处理。例如,当有两个任务管理器时,第一任务管理器获得锁,根据这个锁,第一任务管理器可以从目标数据文件中预定预设数量的对象数据作为第一任务块。而这时,第二任务管理器没有获得该锁,则不能对目标对象数据文件中的目标对象数据进行预定。当第一任务管理器预定完属于自己读取处理的第一任务块后,释放锁。第二任务管理器才可以获得该锁,并根据该锁,才有权限从目标对象数据文件中除第一任务块以外的目标对象数据中预定预设数量的目标对象数据进行读取处理。同样,在第二任务管理器释放该锁之前,第一任务管理器也不能获得该锁,也没有权限从剩下的目标对象数据文件中预定对目标象数据进行读取处理。通过设置任务锁这种数据标识,可以有效地避免多个任务管理器同时对一个任务块进行预定处理的情况。此外,上述任务锁具体也可以是多个用于标识的特定字符串。例如,当有两个任务管理器时,第一任务管理器配有一个标识:flag1,同时第二任务管理器配有一个标识:flag2。当第一任务管理器对某个任务块进行预定时,会在该任务块上标记上flag1的数据标识,这时第二任务管理器在准备预定该任务块时,发现该任务块已经被标识有flag1,则放弃对该任务块数据的预定,转而预定下一个任务块,同样第二任务管理器在预定下一个任务块时,也会在这个任务块上标记上flag2的数据标识,以阻止第一任务管理器对该任务块的预定。当第一任务管理器和第二任务管理同时对同一个任务块进行预定时,且该任务块数据上还没有任何数据标识时,则可以按照预设优先级权限,由第一任务管理器预定该任务块,第二任务管理器则预定下一个任务块。同样,这种方法也能避免多个任务管理器同时对一个任务块进行预定处理,还可以避免同一个任务管理器对同一个任务块进行重复预定处理。
在一个实施方式中,所述的消息推送装置,具体还可以包括:
第二获取单元,用于获取目标用户名单列表;
建立单元,用于根据所述目标用户名单列表,建立所述目标对象数据文件。
在本实施方式中,所述目标用户名单列表具体可以是待推送用户的手机号码列表,也可以是待推送用户的邮箱地址列表,还可以是待推送用户的注册APP的收件箱列表等等。对此,本申请不作限定。
在本实施方式中,可以根据所述目标用户的名单列表,生成对应的目标对象数据文件,以进行后续读取处理。其中,该目标对象数据文件中包括了目标用户的名单列表中相应的具体目标对象数据。
在一个具体的实施例中,应用本申请实施例提供的消息推送装置进行消息推送。具体可以参阅图6的流程示意图。按照以下步骤执行。其中,图6中的worker可以是本申请实例中任务管理器的一种具体形式,block可以是本申请实施例中任务块的一种具体形式。
S1:准备文件,即通过第一获取单元401,获取用户名单列表,把这个文件放到本机待处理,如果获取到的是一个文件list,为了简化处理,可以在这一步将其合并为一个文件,即目标对象数据文件。
S2:推送消息,即通过读取单元402和推送单元403向目标对象数据所指示的目标终端推送消息。其中,读取单元402包括Worker任务处理器,这是本发明的核心部分,worker负责从文件中读取数据,并调用底层API来触达用户。具体处理时,分两种情况,单worker处理和多worker处理。
情况一、单worker处理
在单worker处理时,比较简单,每次读取一个文件block(设置为10000个用户)批量触达用户,处理完一个block则顺序的读取下一个block。
情况二、多worker处理
由于单worker无法利用处理的多核CPU和网卡带宽优势,因此本申请实施例引入多worker模型。多worker模型下,要保证worker间的协同工作,又要保证文件是顺序处理的,以便暂停重启或异常重启后不会重复给用户发送消息。基于上述的要求,我们引入了“预定-处理”的数据处理模型,其中,该方案包括3个worker,即worker1、worker2、worker3,具体执行时可以按照以下步骤执行。
S2-1:为了预定待处理的block,Worker1至3分别来获取锁。
S2-2:Worker1首先获取到锁:判断文件大小为10W行,预定文件1-10000行,将“10000”写入数据库记录下来。Worker1释放锁,并开始处理本block(1-10000行)
S2-3:Worker2获取到锁,判断文件大小为10W行,且当前已经处理到第10000行,它预定第二个block(10001-20000行),将“20000”写入数据库记录下来。Worker2释放锁,并开始处理此block(10001-20000行)。
S2-4:Worker3重复worker2的过程。
S2-5:worker处理完持有的block之后,若文件已经处理到末尾,则结束退出,否则跳转到S2-2。
需要说明的是,通过上述实施例,可以达到以下效果:
1、文件大体上是顺序处理的,可以保证,推送过程中发生即使中断,之前的推送过程基本上还是按照目标对象数据文件内的先后顺序发送的,便于后续重启,避免重复推送。同时,由于对文件进行的是顺序读取,因此性能的损耗较小,即使在虚拟机上仍能顺利执行。
2、由于有类似事务(block)的机制存在,可以支持任务的重启,实现低成本的灾难恢复。
3、Worker可以工作在单机上,控制简单,可以降低实施成本。当然,需要说明的是,由于一般情况下单机服务器网卡带宽都在10Gbps,因此将单个文件放在单机处理,并不会带来性能的瓶颈。
4、唯一需要强依赖的是数据库,但由于是以任务块整体推送状态记录、修改向目标对象数据所指示目标终端的推送情况,降低了对数据库的读写次数,减轻了数据库的压力。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:通过以任务块为单位从目标对象数据文件中读取预设条数的目标对象数据、推送消息,并以任务块为单位记录、修改和更新数据库中的对应的任务块的整体推送状态,解决了现有的消息推送方法在目标对象数据量较大的情况下,实施时存在的对数据库操作频繁、实施过程复杂的技术问题,达到了将待推送消息简易、快速、高效地推送至大批量目标对象数据所指示的目标终端的技术效果;又通过利用多个任务管理器同时读取目标对象数据,并向目标对象数据所指示的目标终端推送消息,进一步提高了消息推送的效率;还通过引入锁作为预定任务块读取、推送的识别标识,避免了多个任务管理器同一时间对同一个任务块的目标对象数据进行预定,从而协调了各个任务管理器;还通过记录任务块的整体推送状态,并根据任务块的整体推送状态,控制任务管理器对相应任务块中目标对象数据进行读取和后续消息推送,达到了对数据处理过程的进度可控,进一步可以达到低成本且有效地进行灾难恢复的技术效果。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (18)

1.一种消息推送方法,其特征在于,包括:
响应于消息推送请求,获取目标对象数据文件;
从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端;
将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
2.根据权利要求1所述的方法,其特征在于:
在所述任务块中的对象数据还未开始推送的情况下,将所述任务块的整体推送状态记录为未推送;
在所述任务块中的对象数据已推送至少一条的情况下,将所述任务块的整体推送状态记录为推送中;
在所述任务块中的对象数据已推送完毕的情况下,将所述任务块的整体推送状态记录为已推送。
3.根据权利要求2所述的方法,其特征在于,在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,所述方法还包括:
检测是否需要进行灾难恢复;
如果需要,则重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
4.根据权利要求3所述的方法,其特征在于,所述预设条数是按照系统所能容忍的推送失败的目标终端的数量确定的。
5.根据权利要求1所述的方法,其特征在于,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
6.根据权利要求5所述的方法,其特征在于,系统中包括多个任务管理器,相应的,从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
7.根据权利要求6所述的方法,其特征在于,控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,包括:
通过任务锁的方式控制所述多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
8.根据权利要求1所述的方法,其特征在于,所述获取目标数据文件包括:
获取目标用户名单列表;
根据所述目标用户名单列表,建立所述目标对象数据文件。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述待推送消息包括以下至少之一:短信、彩信、邮件。
10.根据权利要求1至8中任一项所述的方法,其特征在于,所述待推送消息包括:APP推送消息。
11.一种消息推送装置,其特征在于,包括:
第一获取单元,用于响应于消息推送请求,获取目标对象数据文件;
读取单元,用于从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,每条对象数据指示一个目标终端;
推送单元,用于将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态。
12.根据权利要求11所述的装置,其特征在于,所述推送单元具体用于:
在所述任务块中的对象数据还未开始推送的情况下,将所述任务块的整体推送状态记录为未推送;
在所述任务块中的对象数据已推送至少一条的情况下,将所述任务块的整体推送状态记录为推送中;
在所述任务块中的对象数据已推送完毕的情况下,将所述任务块的整体推送状态记录为已推送。
13.根据权利要求12所述的装置,其特征在于,还包括:
检测单元,用于在将所述消息推送请求所请求的待推送消息,推送至所述任务块中的每条对象数据所指示的目标终端,并记录所述任务块的整体推送状态的过程中,检测是否需要进行灾难恢复;
重发单元,用于在确定需要进行灾难恢复的情况下,重新发送处于未推送状态的任务块,不再重发处于推送中和已推送状态的任务块。
14.根据权利要求11所述的装置,其特征在于,所述预设条数是按照系统所能容忍的推送失败的目标终端的数量确定的。
15.根据权利要求11所述的装置,其特征在于,所述读取单元具体用于控制任务管理器从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
16.根据权利要求15所述的装置,其特征在于,所述读取单元具体用于控制多个任务管理器分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块,其中,系统中包括多个任务管理器。
17.根据权利要求16所述的装置,其特征在于,所述读取单元具体用于通过任务锁的方式分别从所述目标对象数据文件中读取预设条数的对象数据作为一个任务块。
18.根据权利要求11所述的装置,其特征在于,还包括:
第二获取单元,用于获取目标用户名单列表;
建立单元,用于根据所述目标用户名单列表,建立所述目标对象数据文件。
CN201611202827.6A 2016-12-23 2016-12-23 消息推送方法和装置 Active CN108241616B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611202827.6A CN108241616B (zh) 2016-12-23 2016-12-23 消息推送方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611202827.6A CN108241616B (zh) 2016-12-23 2016-12-23 消息推送方法和装置

Publications (2)

Publication Number Publication Date
CN108241616A true CN108241616A (zh) 2018-07-03
CN108241616B CN108241616B (zh) 2023-07-25

Family

ID=62703385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611202827.6A Active CN108241616B (zh) 2016-12-23 2016-12-23 消息推送方法和装置

Country Status (1)

Country Link
CN (1) CN108241616B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109587038A (zh) * 2018-11-30 2019-04-05 深圳市买买提信息科技有限公司 消息推送方法及装置
CN113220442A (zh) * 2021-07-01 2021-08-06 北京轻松筹信息技术有限公司 数据调度方法、装置及电子设备
CN115277836A (zh) * 2022-08-03 2022-11-01 四川长虹网络科技有限责任公司 用于地磁停车系统的分布式数据推送平台及方法

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997027531A1 (fr) * 1996-01-23 1997-07-31 Aim Corporation Systeme d'affichage d'informations
US20100124191A1 (en) * 2008-11-17 2010-05-20 Sierra Wireless, Inc Method and apparatus for facilitating push communication across a network boundary
WO2012122775A1 (zh) * 2011-03-16 2012-09-20 中兴通讯股份有限公司 广告推送方法及系统
US20130322437A1 (en) * 2012-05-31 2013-12-05 Robert Raszuk Method and apparatus for removing bgp state from network edge elements
CN103534978A (zh) * 2013-04-07 2014-01-22 华为技术有限公司 一种信息群发方法及设备
CN103902148A (zh) * 2012-12-28 2014-07-02 联想(北京)有限公司 一种信息处理方法及电子设备
US20140189015A1 (en) * 2012-10-02 2014-07-03 Nextbit Systems Inc. Pushing notifications based on location proximity
WO2015096412A1 (zh) * 2013-12-27 2015-07-02 中兴通讯股份有限公司 数据复制异常的修复方法及装置
CN105095365A (zh) * 2015-06-26 2015-11-25 北京奇虎科技有限公司 一种信息流数据的处理方法和装置
CN105430072A (zh) * 2015-11-11 2016-03-23 中国联合网络通信集团有限公司 推送消息转发对象的选择方法和系统及装置
CN105471700A (zh) * 2014-08-06 2016-04-06 腾讯科技(北京)有限公司 一种消息处理的方法、装置和系统
CN105740418A (zh) * 2016-01-29 2016-07-06 杭州亿方云网络科技有限公司 一种基于文件监控和消息推送的实时同步系统
CN105791399A (zh) * 2016-02-29 2016-07-20 郑家亮 多中继互联网大数据推送方法和系统
WO2016124113A1 (zh) * 2015-02-04 2016-08-11 阿里巴巴集团控股有限公司 信息推送方法、信息展示方法及相关装置、系统
US20160247246A1 (en) * 2015-02-18 2016-08-25 Sungard Availability Services, Lp Plan visualization
CN105915438A (zh) * 2016-04-15 2016-08-31 北京奇虎科技有限公司 消息推送方法、装置及系统
CN106095614A (zh) * 2016-05-27 2016-11-09 上海新炬网络信息技术有限公司 一种数据库容灾演练管控系统
US20160337290A1 (en) * 2014-01-10 2016-11-17 Huawei Technologies Co., Ltd. Message Push Method and Apparatus
CN106251265A (zh) * 2016-08-24 2016-12-21 成都怡康科技有限公司 群体运动监测系统

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997027531A1 (fr) * 1996-01-23 1997-07-31 Aim Corporation Systeme d'affichage d'informations
US20100124191A1 (en) * 2008-11-17 2010-05-20 Sierra Wireless, Inc Method and apparatus for facilitating push communication across a network boundary
WO2012122775A1 (zh) * 2011-03-16 2012-09-20 中兴通讯股份有限公司 广告推送方法及系统
US20130322437A1 (en) * 2012-05-31 2013-12-05 Robert Raszuk Method and apparatus for removing bgp state from network edge elements
US20140189015A1 (en) * 2012-10-02 2014-07-03 Nextbit Systems Inc. Pushing notifications based on location proximity
CN103902148A (zh) * 2012-12-28 2014-07-02 联想(北京)有限公司 一种信息处理方法及电子设备
CN103534978A (zh) * 2013-04-07 2014-01-22 华为技术有限公司 一种信息群发方法及设备
WO2015096412A1 (zh) * 2013-12-27 2015-07-02 中兴通讯股份有限公司 数据复制异常的修复方法及装置
US20160337290A1 (en) * 2014-01-10 2016-11-17 Huawei Technologies Co., Ltd. Message Push Method and Apparatus
CN105471700A (zh) * 2014-08-06 2016-04-06 腾讯科技(北京)有限公司 一种消息处理的方法、装置和系统
WO2016124113A1 (zh) * 2015-02-04 2016-08-11 阿里巴巴集团控股有限公司 信息推送方法、信息展示方法及相关装置、系统
US20160247246A1 (en) * 2015-02-18 2016-08-25 Sungard Availability Services, Lp Plan visualization
CN105095365A (zh) * 2015-06-26 2015-11-25 北京奇虎科技有限公司 一种信息流数据的处理方法和装置
CN105430072A (zh) * 2015-11-11 2016-03-23 中国联合网络通信集团有限公司 推送消息转发对象的选择方法和系统及装置
CN105740418A (zh) * 2016-01-29 2016-07-06 杭州亿方云网络科技有限公司 一种基于文件监控和消息推送的实时同步系统
CN105791399A (zh) * 2016-02-29 2016-07-20 郑家亮 多中继互联网大数据推送方法和系统
CN105915438A (zh) * 2016-04-15 2016-08-31 北京奇虎科技有限公司 消息推送方法、装置及系统
CN106095614A (zh) * 2016-05-27 2016-11-09 上海新炬网络信息技术有限公司 一种数据库容灾演练管控系统
CN106251265A (zh) * 2016-08-24 2016-12-21 成都怡康科技有限公司 群体运动监测系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109587038A (zh) * 2018-11-30 2019-04-05 深圳市买买提信息科技有限公司 消息推送方法及装置
CN113220442A (zh) * 2021-07-01 2021-08-06 北京轻松筹信息技术有限公司 数据调度方法、装置及电子设备
CN113220442B (zh) * 2021-07-01 2021-11-26 北京轻松筹信息技术有限公司 数据调度方法、装置及电子设备
CN115277836A (zh) * 2022-08-03 2022-11-01 四川长虹网络科技有限责任公司 用于地磁停车系统的分布式数据推送平台及方法
CN115277836B (zh) * 2022-08-03 2023-05-30 四川长虹新网科技有限责任公司 用于地磁停车系统的分布式数据推送平台及方法

Also Published As

Publication number Publication date
CN108241616B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN109343941A (zh) 任务处理方法、装置、电子设备及计算机可读存储介质
CN109951547B (zh) 事务请求并行处理方法、装置、设备和介质
US8418191B2 (en) Application flow control apparatus
CN104657158B (zh) 一种业务系统中业务处理的方法和装置
CN110247984A (zh) 业务处理方法、装置及存储介质
CN108241616A (zh) 消息推送方法和装置
CN108829506A (zh) 批量任务处理方法、装置及服务系统
US20080201712A1 (en) Method and System for Concurrent Message Processing
EP3242258A1 (en) Method and apparatus for processing virtual card
JP2006338197A (ja) トランザクション制御プログラム、トランザクション制御方法及びトランザクション処理システム
CN108369503A (zh) 对外部场可更换单元(fru)过程的自动系统响应
CN109002286A (zh) 基于同步编程的数据异步处理方法及装置
JP2012155567A (ja) 顧客呼出しシステムおよび方法
CN104063271A (zh) 具有事务能力的排队
US8171495B2 (en) Queue dispatch using deferred acknowledgement
CN110134537A (zh) 多核系统中的会话表项超时处理方法、装置及多核系统
CN110162569A (zh) 基于gg同步进程的数据处理方法、装置及计算机设备
US7673302B1 (en) System and method for managing messages in a queuing system
EP3722955A1 (en) Unblocking processes in interprocess messaging passing
CN104680307B (zh) 一种物品事务处理方法和装置
US20160328397A1 (en) Devices, systems, and methods for organizing digital images
CN111767113A (zh) 一种用于实现容器驱逐的方法和装置
CN115756768B (zh) 基于saga的分布式事务处理方法、装置、设备及介质
CN110909115A (zh) 客户信息合并方法及装置、存储介质及电子设备
JP5295395B2 (ja) データ処理装置

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