消息推送方法、装置、计算机设备和存储介质与流程

专利查询1月前  15



1.本技术涉及计算机技术领域,特别是涉及一种消息推送方法、装置、计算机设备和存储介质。


背景技术:

2.商家在进行活动促销的时候,为了让用户能够及时了解活动的相关信息,会让用户进行消息订阅。用户订阅的消息会存储在数据库里,然后在特定的时间给用户推送例如活动开始/活动即将结束等消息。
3.在向用户推送消息时,通常是由一台机器从数据库中获取相关数据,然后直接推送给用户,或者先将要推送给用户的消息推送给第三方服务器,再由第三方服务器推送给用户。
4.然而,当用户订阅的消息量特别大时,使用目前的推送方案推送完所有消息需要耗费大量的时间,这会导致部分用户无法及时获得活动相关信息。


技术实现要素:

5.本技术针对上述不足或缺点,提供了一种消息推送方法、装置、计算机设备和存储介质,本技术实施例能够在需要推送的消息数据量极大的情况下保证所有用户及时收到订阅消息。
6.本技术根据第一方面提供了一种消息推送方法,在一个实施例中,该方法应用于服务器集群,服务器集群包含多个服务器,每个服务器均执行如下方法:
7.在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;
8.从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;
9.根据分片参数信息和目标定时任务的任务信息查询数据库;
10.根据从数据库中查询到的数据进行消息推送。
11.在一个实施例中,根据分片参数信息和目标定时任务的任务信息查询数据库,包括:
12.获取目标定时任务的任务信息中包括的目标数据表的数据表标识和目标数据表中的若干个字段标识;目标数据表设于数据库中;
13.根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据生成的查询语句查询目标数据表;
14.在查询得到的数据集满足预设条件时停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询目标数据表。
15.在一个实施例中,若干个字段标识包括用户字段标识和自增主键字段标识;生成的查询语句中包括第一限制条件和/或第二限制条件;
16.第一限制条件表示在扫描到的记录的用户字段值对分片总数的取余结果等于分片下标时,满足第一限制条件;
17.第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足第二限制条件。
18.在一个实施例中,在生成查询语句时,根据分片参数信息和用户字段标识生成第一限制条件。
19.在一个实施例中,生成的查询语句中还包括分页查询限制条件;分页查询限制条件用于表示对查询到的数据集中进行分页显示,以及用于指定每页显示的记录数量;
20.在生成查询语句时,根据预配置的分页查询配置信息生成分页查询限制条件。
21.在一个实施例中,在生成首次查询的查询语句时,将预设的初始自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件;
22.在生成非首次查询的查询语句时,将上一次查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件。
23.在一个实施例中,接收调度中心广播的任务执行通知之前还包括:
24.在启动时注册到调度中心,使得调度中心响应于本服务器完成注册为本服务器分配唯一分片标识,以及更新当前的分片总数。
25.本技术根据第二方面提供了一种消息推送装置,在一个实施例中,该装置应用于服务器集群中的任一服务器;该装置包括:
26.任务确定模块,用于在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;
27.分片参数获取模块,用于从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;
28.查询模块,用于根据分片参数信息和目标定时任务的任务信息查询数据库;
29.推送模块,用于根据从所述数据库中查询到的数据进行消息推送。
30.本技术根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
31.本技术根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
32.在本技术实施例中,服务器集群中的任一服务器在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;从调度中心获取分片参数信息,分片参数信息包括分片总数和分片下标,根据分片参数信息和目标定时任务的任务信息查询数据库,并根据从数据库中查询到的数据进行消息推送,本实施例能够使用多个服务器同时处理一个用于推送消息的定时任务,且能依据分片参数信息保证该多个服务器不重复处理数据,从而能够提高消息推送速度,减少消息推送耗时,在需要推送的消息数据量极大的情况下可以保证所有用户都能及时收到订阅消息。
附图说明
33.图1为一个实施例中一种消息推送方法的应用环境图;
34.图2为一个实施例中一种消息推送方法的流程示意图;
35.图3为一个实施例中一种消息推送装置的结构框图;
36.图4为一个实施例中计算机设备的内部结构图。
具体实施方式
37.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本技术,并不用于限定本技术。
38.本技术提供了一种消息推送方法。在一个实施例中,该消息推送方法可以应用于如图1所示的应用环境中。其中,服务器集群20中的服务器会在调度中心30中注册,调度中心30会为每个完成注册的服务器分配对应的分片下标,以及维护分片总数(表示同时执行定时任务的服务器的总数)。调度中心30会在定时任务要触发时,通知服务器集群20中需要执行该定时任务的服务器,各服务器会从调度中心获取分片参数信息,即分片总数和本服务器的分片下标,然后根据分片参数信息和该定时任务的任务信息查询数据库,以及根据从数据库中查询到的数据将消息推送给各用户的终端(即图1所示的用户终端10)。
39.其中,用户终端10的各个终端可以包括但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和台式计算机等,服务器集群中的各个服务器可以用独立的服务器或者是多个服务器组成的集群来实现,调度中心30可以用独立的服务器或者是多个服务器组成的集群来实现。
40.本实施例提供了一种消息推送方法,下面以该方法应用于图1中的服务器集群,该服务器集群中的任一个服务器都执行如图2所示的步骤。
41.s110:在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务。其中,目标定时任务是指要执行的定时任务。
42.当定时任务即将触发时,调度中心通过广播模式将任务执行通知广播至各服务器,以指示各服务器执行该定时任务(即目标定时任务)。其中,任务执行通知中携带有该定时任务的任务标识,服务器在收到任务执行通知后,将其从任务执行通知中提取出来,从而可以确定出该定时任务。
43.其中,调度中心可以用xxl-job来实现。xxl-job是一个轻量级分布式任务调度平台。
44.s120:从调度中心获取分片参数信息。
45.其中,分片参数信息包括分片总数(可表示为shardtotal)和分片下标(可表示为shardindex)。分片总数shardtotal用于表示同时执行目标定时任务的服务器的总数量,分片下标shardindex是本服务器的唯一分片标识。
46.调度中心会维护分片总数和各服务器的分片标识。各服务器在需要执行定时任务时,可以动态从调度中心获取分片参数信息。需要说明的是,各服务器需要先在调度中心完成注册,之后调度中心才能对其进行调度。
47.相应地,服务器在接收调度中心广播的任务执行通知之前还包括:在启动时注册
到调度中心,使得调度中心响应于本服务器完成注册为本服务器分配唯一分片标识,以及更新当前的分片总数。
48.服务器在启动时会自动到调度中心注册自己的信息,从而后续可以动态获取到分片总数和自己的分片下标。对于调度中心来说,在服务器完成注册之后,就会为其分配一个唯一分片标识(即该服务器的分片下标shardindex),并且会更新当前的分片总数。
49.其中,服务器在启动时自动到调度中心注册的功能可以通过在项目代码中进行相关配置来实现。
50.以下通过一个示例对调度中心会维护分片总数和各服务器的分片标识的过程进行说明。
51.示例性地,当第一台服务器a注册到调度中心后,调度中心会为服务器a分配一个分片下标,即0,同时将当前的分片总数由0或者空值更新为1;当第二台服务器b注册到调度中心后,调度中心会为服务器b分配一个分片下标,即1,同时将当前的分片总数由1更新为2;以此可以类推出其他服务器在注册到调度中心之后能分配到的分片下标,以及当前的分片总数。
52.具体地,服务器可以通过代码“int shardindex=xxljobhelper.getshardindex()”从调度中心获取自己的分片下标,同时还可以通过代码“intshardtotal=xxljobhelper.getshardtotal()”从调度中心获取当前的分片总数。
53.当然,在新的服务器完成注册时,调度中心会为其分配相应的分片下标以及更新当前的分片总数,在服务器退出(或称为注销)时,调度中心也会维护当前注册的各服务器的分片下标,以及相应更新当前的分片总数,比如,当前的分片总数是5,当一个服务器退出后,调度中心会及时将其更新为4,从而保证分片总数这个参数的准确性。
54.进一步地,调度中心可以动态地根据需要推送的消息数量去启动相应数量的服务器来进行分摊查询以提高查询效率,进而提高消息推送速度。示例性地,比如,在测试时订阅总数为2000万条记录,通过3个服务器可以在30秒内完成全量数据的查询,假如在真实活动时订阅总数为6000万条记录,则可以启动9个服务器同时进行查询,这样可以保证查询速度仍然能控制在30秒内,而非3个服务器需要90秒。
55.s130:根据分片参数信息和目标定时任务的任务信息查询数据库。
56.其中,每个定时任务的任务信息可以存储在指定数据库中,比如存储在指定数据库,比如用于存储定时任务的任务信息的数据库中。当需要执行目标定时任务时,就可以从该指定数据库中获取目标定时任务的任务信息。进一步地,该查询的数据库可以是mysql数据库。
57.在一种可能的实施方式中,定时任务的任务信息可以是由调度中心从指定数据库中获取后,将其携带于任务执行通知中,这样各服务器就不需要去指定数据库中获取任务信息,可以直接从任务执行通知中提取定时任务的任务信息,并进行后续操作,这样可以提高数据处理速度。
58.s140:根据从数据库中查询到的数据进行消息推送。
59.当服务器从数据库中查询到数据后,利用查询到的数据进行消息推送。
60.在不同应用场景中,具体推送的消息可以不相同,本实施例对此不进行限制。此外,在不同应用场景中,消息的推送方式也可以有所不同,比如在某个场景中,服务器可以
根据从数据库中查询到的数据直接向用户推送消息,又比如在某些场景中,服务器可以调用第三方服务器(比如微信的用于向微信用户推送消息的服务器)的预留接口,从而通过该第三方服务器间接将消息推送给用户。
61.在本实施例中,服务器集群中的任一服务器在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;从调度中心获取分片参数信息,根据分片参数信息和目标定时任务的任务信息查询数据库,并根据从数据库中查询到的数据进行消息推送,本实施例能够使用多个服务器同时处理一个用于推送消息的定时任务,并且通过分片参数信息能保证该多个服务器不重复处理数据,从而能够提高消息推送速度,减少消息推送耗时,在需要推送的消息数据量极大的情况下仍可以保证所有用户都能及时收到订阅消息。
62.在一个实施例中,根据分片参数信息和目标定时任务的任务信息查询数据库,包括:
63.获取目标定时任务的任务信息中包括的目标数据表的数据表标识和目标数据表中的若干个字段标识;目标数据表设于数据库中;
64.根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据生成的查询语句查询目标数据表;
65.在查询得到的数据集满足预设条件时停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询目标数据表。
66.在本实施例中,根据分片参数信息和目标定时任务的任务信息查询数据库是指根据分片参数信息和目标定时任务的任务信息生成相应的查询语句,并通过该查询语句查询设于数据库中的目标数据表,从而获得想要的数据。在停止查询时,从目标数据表中查询得到的所有数据集即是上述的从数据库中查询得到的数据。
67.在每次查询后,检查从目标数据表中查询得到的数据集是否满足预设条件,具体是判断查询得到的数据集的记录数量是否等于预设阈值,若该记录数量等于该预设阈值,则判定查询得到的数据集满足预设条件,若该记录数量小于该预设阈值,则判定查询得到的数据集不满足预设条件。该预设阈值用于指定分页查询时每页需要显示的记录数量,可以理解为将结果集分页,每页包含的记录的数量等于该预设阈值,假设预设阈值为3,那么是指将结果集分页,每页包含3条记录。比如,假设在分页查询时设置一次最多获取5000条(即该预设阈值为5000),如果本次查询到的记录数量等于5000条,那么就重新生成查询语句并再次查询。如果查询到的记录数量小于5000条,表明相关数据都查询到了,那么判定满足预设条件,停止查询,在将查询到的数据推送给用户后结束执行本次定时任务。
68.示例性地,比如,上一次查询的查询语句是:select id,member_id from subscribe limit 0,5000;(这个查询语句表示将“select id,member_id from subscribe”这个子句所命中的数据作为结果集,将结果集分页,每页包含5000条记录,从结果集中的第1号记录开始获取,最多获取5000条记录)假如上次查询到的记录数量为5000,与预设阈值相等,可以判定本次查询得到的数据集不满足预设条件,那么重新生成查询语句,生成的本次查询的查询语句可以是:select id,member_id from subscribe limit 5000,5000;(这个查询语句表示将“select id,member_id from subscribe”这个子句所命中的数据作为结果集,将结果集分页,每页包含5000条记录,从结果集中的第5001号记录开
始获取,最多获取5000条记录),假如本次查询到的记录为第5001号-第9000号,即记录数量为4000,小于预设阈值5000,可以判定本次查询得到的数据集满足预设条件,停止查询。
69.分页查询能够减少每次查询时所需获取的记录数量,从而减少数据库的性能压力。在重新生成查询语句时,需要相应修改查询语句中的limit子句中的偏移量(offset),从而实现每次查询时可以跳过之前查到的记录,保证不会重复获取数据。
70.其中,目标定时任务的任务信息中可以包括要查询的数据表(即目标数据表)的数据表标识(即表名),以及查表时需要用到的若干个字段标识(即字段名)。进一步地,要生成的查询语句是指sql(structured query language,结构化查询语言)语句。
71.需要说明的是,上述的重新生成查询语句,并根据生成的查询语句再次查询目标数据表是指再次根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据新生成的查询语句再次查询目标数据表。查询语句的生成逻辑是相同的。
72.在一个实施例中,生成的查询语句中包括分页查询限制条件;分页查询限制条件用于表示对查询到的数据集(或可称为结果集)中进行分页显示,以及用于指定每页显示的记录数量。比如,从结果集中显示第1-100条记录作为第1页,显示第101-200条记录作为第2页,以此类推。
73.示例性地,以下面的sql语句为例,对查询语句中的分页查询限制条件进行说明,请参见如下的sql语句:
74.select id,member_id from subscribe where member_id%shardtotal=shardindex limit 10000000,5000;
75.上述sql语句中的limit子句,即“limit 10000000,5000”中的“10000000,5000”是分页查询限制条件。其中,“limit n,m”表示从结果集中的第n+1条记录开始取,最多取m条记录,n为可选,如果填写则表示取数跳过的步长,即跳过n条。
76.相应地,服务器在生成查询语句时,根据预配置的分页查询配置信息生成分页查询限制条件。
77.在查询到的数据集的数据量很大,比如有10万条记录时,此时很难将查询到的记录都显示在一个页面中,因此可以通过在查询语句中设置如“limit n,m”这样的子句来实现将这些记录进行分页显示,可以有效降低带宽使用以及提高访问速度。
78.其中,该分页查询配置信息用于指定分页时每页显示的记录数量,比如每页显示100条、1000条或者5000条记录等,本实施例对此不进行限制。
79.在一个实施例中,该若干个字段标识包括用户字段标识和自增主键字段标识。
80.相应地,生成的查询语句中包括第一限制条件和/或第二限制条件。其中,第一限制条件表示在扫描到的记录的用户字段值对分片总数的取余结果等于分片下标时,满足第一限制条件;第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足第二限制条件。其中,该生成的查询语句是指上述根据分片参数信息、数据表标识和若干个字段标识所生成的查询语句。
81.示例性地,以下面的sql语句为例,对查询语句中的第一限制条件和第二限制条件进行说明。
82.比如,select id,member_id from subscribe where member_id%shardtotal=shardindex limit 0,5000;
83.其中,“id”(指自增主键字段标识)和“member_id”(指用户字段标识)是目标数据表中的若干个字段标识,“subscribe”是指目标数据表的数据表标识,“member_id%shardtotal=shardindex”是指第一限制条件,“shardtotal”指分片总数,shardindex指服务器的分片下标;本条查询语句表示从“subscribe”这个数据表中选取属于“id”和“member_id”列,且对应的“member_id”字段值对分片总数shardtotal取余的结果等于本服务器的分片下标shardindex的记录。
84.又比如,select id,member_id from subscribe where id》0limit 0,5000;
85.其中,where子句,即“where id》0”中的“id》0”是指第二限制条件;本条查询语句表示从“subscribe”这个数据表中选取属于“id”和“member_id”列,且对应的“id”字段值大于0的记录。
86.再比如,select id,member_id from subscribe where id》0and member_id%shardtotal=shardindex limit 5000;
87.其中,where子句,即“where id》0and member_id%shardtotal=shardindex”中的“member_id%shardtotal=shardindex”是指第一限制条件,本条查询语句表示从“subscribe”这个数据表中选取属于“id”和“member_id”列,对应的“id”字段值大于0,且对应的“member_id”字段值对分片总数shardtotal取余的结果等于本服务器的分片下标shardindex的记录。
88.以下对第一限制条件和第二限制条件的生成过程进行介绍。
89.在一个实施例中,服务器在生成查询语句时,根据分片参数信息和用户字段标识生成第一限制条件。
90.本实施例通过在查询语句中设置第一限制条件来保证同时执行定时任务的多个服务器不会重复处理数据。
91.比如,目前有3个用户,这三个用户的用户id分别是:1000070004,1000070005,1000070006,
92.假设当前的分片总数shardtotal为3,a服务器的分片下标shardindex为0,b服务器的分片下标shardindex为1,c服务器的分片下标shardindex为2;则,
93.1000070004%3=0,则该用户由服务器a查询得到;
94.1000070005%3=1,则该用户由服务器b查询得到;
95.1000070006%3=2,则该用户由服务器c查询得到;
96.这样就保证了目标数据表中的每条记录仅由一个服务器查询得到,防止一条数据被多个服务器查询并推送消息。
97.在一个实施例中,服务器在生成首次查询的查询语句时,将预设的初始自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件;在生成非首次查询的查询语句时,将上一次查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件。
98.需要说明的是,由于mysql的分页机制,在通过上述的sql语句查询目标数据表时,要查询的数据越后面查询速度就越慢,比如“limit10000000,5000”时,此时相当于扫描了15000000条数据,然后只取了后面的5000条数据,这对数据库的资源造成很大消耗和浪费,
严重降低查询的性能。
99.为此,本实施例通过在查询语句中设置第二限制条件来实现显著减少每次查询时扫描到的记录数量,一方面不会对数据库的资源造成很大消耗和浪费,另一方面可以缩减查询数据的耗时。
100.其中,在首次查询时,将预设的初始自增主键字段值,比如0,作为自增主键偏移量来生成查询语句中的第二限制条件,比如“id》0”。
101.在非首次查询(比如现在是第二次查询)时,将上一次(比如第一次)查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,并基于该自增主键偏移量来生成查询语句中的第二限制条件。
102.比如,第一次查询的查询语句如下;
103.select id,member_id from subscribe where id》0and member_id%shardtotal=shardindex limit 5000;
104.数据库执行该查询语句所命中的记录的id,即自增主键字段值可能有1,2,3,7,10
……
7555,8000,从这5000条记录里找出id最大的为8000,那么将8000作为自增主键偏移量,重新生成查询语句,比如如下所示:
105.select id,member_id from subscribe where id》8000and member_id%shardtotal=shardindex limit 5000;
106.这样通过利用自增主键能够大大减少记录的扫描,保证了id小于8000的记录在第二次查询时不会被重复扫描。
107.这样改进之后,在查询前面分页的数据或是查询后面分页的数据时,查询时间都比较固定,平均是0.373秒,而没改进前,“limit 0,5000”的耗时是0.362秒,往后如果分页到“limit 450000,5000”则是1.518秒,可以看到,查询的数据越往后查询时间会明显增加。
108.图2为一个实施例中消息推送方法的流程示意图。应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
109.基于相同的发明构思,本技术还提供了一种消息推送装置。在本实施例中,如图3所示,该消息推送装置包括以下模块:
110.任务确定模块110,用于在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;
111.分片参数获取模块120,用于从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;
112.查询模块130,用于根据分片参数信息和目标定时任务的任务信息查询数据库;
113.推送模块140,用于根据从所述数据库中查询到的数据进行消息推送。
114.在本实施例中红,本装置能够使用多个服务器同时处理一个用于推送消息的定时
任务,且能保证该多个服务器不重复处理数据,从而能够提高消息推送速度,减少消息推送耗时,在需要推送的消息数据量极大的情况下可以保证所有用户都能及时收到订阅消息。
115.在一个实施例中,查询模块,包括:
116.标识获取子模块,用于获取目标定时任务的任务信息中包括的目标数据表的数据表标识和目标数据表中的若干个字段标识;目标数据表设于数据库中;
117.查询子模块,用于根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据生成的查询语句查询目标数据表;在查询得到的数据集满足预设条件时停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询目标数据表。
118.其中,查询子模块包括查询语句生成单元和查询单元。查询语句生成单元,用于根据分片参数信息、数据表标识和若干个字段标识生成查询语句。查询单元,用于根据生成的查询语句查询目标数据表。
119.在一个实施例中,若干个字段标识包括用户字段标识和自增主键字段标识;生成的查询语句中包括第一限制条件和/或第二限制条件;第一限制条件表示在扫描到的记录的用户字段值对分片总数的取余结果等于分片下标时,满足第一限制条件;第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足第二限制条件。
120.相应地,在一个实施例中,查询语句生成单元在生成查询语句时,具体用于根据分片参数信息和用户字段标识生成第一限制条件。
121.在一个实施例中,生成的查询语句中还包括分页查询限制条件;分页查询限制条件用于表示对查询到的数据集中进行分页显示,以及用于指定每页显示的记录数量。
122.查询语句生成单元在生成查询语句时,具体还用于根据预配置的分页查询配置信息生成分页查询限制条件。
123.进一步地,在一个实施例中,查询语句生成单元在生成首次查询的查询语句时,具体用于将预设的初始自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件;以及在生成非首次查询的查询语句时,具体用于将上一次查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件。
124.在一个实施例中,消息推送装置还包括注册模块。在任务确定模块接收调度中心广播的任务执行通知之前,注册模块用于在启动时注册到调度中心,使得调度中心响应于本服务器完成注册为本服务器分配唯一分片标识,以及更新当前的分片总数。
125.关于消息推送装置的具体限定可以参见上文中对于消息推送方法的限定,在此不再赘述。上述消息推送装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
126.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图4所示。
127.该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的
数据库用于存储任务信息、从数据库中查询到的数据等数据,具体存储的数据还可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种消息推送方法。
128.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
129.本实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
130.在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;根据分片参数信息和目标定时任务的任务信息查询数据库;根据从数据库中查询到的数据进行消息推送。
131.在一个实施方式中,处理器执行计算机程序,实现根据分片参数信息和目标定时任务的任务信息查询数据库时,还实现以下步骤:
132.获取目标定时任务的任务信息中包括的目标数据表的数据表标识和目标数据表中的若干个字段标识;目标数据表设于数据库中;根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据生成的查询语句查询目标数据表;在查询得到的数据集满足预设条件时,停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询目标数据表。
133.在一个实施方式中,若干个字段标识包括用户字段标识和自增主键字段标识;生成的查询语句中包括第一限制条件和/或第二限制条件;第一限制条件表示在扫描到的记录的用户字段值对分片总数的取余结果等于分片下标时,满足第一限制条件;第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足第二限制条件。
134.在一个实施方式中,处理器执行计算机程序,还实现以下步骤:
135.在生成查询语句时,根据分片参数信息和用户字段标识生成第一限制条件。
136.在一个实施方式中,生成的查询语句中还包括分页查询限制条件;分页查询限制条件用于表示对查询到的数据集中进行分页显示,以及用于指定每页显示的记录数量;处理器执行计算机程序,还实现以下步骤:
137.在生成查询语句时,根据预配置的分页查询配置信息生成分页查询限制条件。
138.在一个实施方式中,处理器执行计算机程序,还实现以下步骤:
139.在生成首次查询的查询语句时,将预设的初始自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件;在生成非首次查询的查询语句时,将上一次查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件。
140.在一个实施方式中,处理器执行计算机程序,实现接收调度中心广播的任务执行通知之前,还实现以下步骤:
141.在启动时注册到调度中心,使得调度中心响应于本服务器完成注册为本服务器分配唯一分片标识,以及更新当前的分片总数。
142.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
143.在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;根据分片参数信息和目标定时任务的任务信息查询数据库;根据从数据库中查询到的数据进行消息推送。
144.在一个实施方式中,计算机程序被处理器执行,根据分片参数信息和目标定时任务的任务信息查询数据库时,还实现以下步骤:
145.获取目标定时任务的任务信息中包括的目标数据表的数据表标识和目标数据表中的若干个字段标识;目标数据表设于数据库中;根据分片参数信息、数据表标识和若干个字段标识生成查询语句,并根据生成的查询语句查询目标数据表;在查询得到的数据集满足预设条件时,停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询目标数据表。
146.在一个实施方式中,若干个字段标识包括用户字段标识和自增主键字段标识;生成的查询语句中包括第一限制条件和/或第二限制条件;第一限制条件表示在扫描到的记录的用户字段值对分片总数的取余结果等于分片下标时,满足第一限制条件;第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足第二限制条件。
147.在一个实施方式中,计算机程序被处理器执行,还实现以下步骤:
148.在生成查询语句时,根据分片参数信息和用户字段标识生成第一限制条件。
149.在一个实施方式中,生成的查询语句中还包括分页查询限制条件;分页查询限制条件用于表示对查询到的数据集中进行分页显示,以及用于指定每页显示的记录数量;计算机程序被处理器执行,还实现以下步骤:
150.在生成查询语句时,根据预配置的分页查询配置信息生成分页查询限制条件。
151.在一个实施方式中,计算机程序被处理器执行,还实现以下步骤:
152.在生成首次查询的查询语句时,将预设的初始自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件;在生成非首次查询的查询语句时,将上一次查询目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据自增主键字段标识和自增主键偏移量生成第二限制条件。
153.在一个实施方式中,计算机程序被处理器执行,接收调度中心广播的任务执行通知之前,还实现以下步骤:
154.在启动时注册到调度中心,使得调度中心响应于本服务器完成注册为本服务器分配唯一分片标识,以及更新当前的分片总数。
155.本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括
随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
156.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
157.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。

技术特征:
1.一种消息推送方法,其特征在于,应用于服务器集群,所述服务器集群包含多个服务器,每个所述服务器均执行如下步骤:在接收调度中心广播的任务执行通知时,确定所述任务执行通知指定的目标定时任务;从所述调度中心获取分片参数信息;所述分片参数信息包括分片总数和分片下标,所述分片总数表示同时执行所述目标定时任务的服务器的总数量,所述分片下标是本服务器的唯一分片标识;根据所述分片参数信息和所述目标定时任务的任务信息查询数据库;根据从所述数据库中查询到的数据进行消息推送。2.如权利要求1所述的方法,其特征在于,所述根据所述分片参数信息和所述目标定时任务的任务信息查询数据库,包括:获取所述目标定时任务的任务信息中包括的目标数据表的数据表标识和所述目标数据表中的若干个字段标识;所述目标数据表设于所述数据库中;根据所述分片参数信息、所述数据表标识和所述若干个字段标识生成查询语句,并根据生成的查询语句查询所述目标数据表;在查询得到的数据集满足预设条件时停止查询,在查询得到的数据集不满足预设条件时,重新生成查询语句,并根据生成的查询语句再次查询所述目标数据表。3.如权利要求2所述的方法,其特征在于,生成的查询语句中包括分页查询限制条件;所述分页查询限制条件用于表示对查询到的数据集中进行分页显示,以及用于指定每页显示的记录数量;在生成查询语句时,根据预配置的分页查询配置信息生成所述分页查询限制条件。4.如权利要求2或3所述的方法,其特征在于,所述若干个字段标识包括用户字段标识和自增主键字段标识;生成的查询语句中包括第一限制条件和/或第二限制条件;所述第一限制条件表示在扫描到的记录的用户字段值对所述分片总数的取余结果等于所述分片下标时,满足所述第一限制条件;所述第二限制条件表示在扫描到的记录的自增主键字段值大于自增主键偏移量时,满足所述第二限制条件。5.如权利要求4所述的方法,其特征在于,在生成查询语句时,根据所述分片参数信息和所述用户字段标识生成所述第一限制条件。6.如权利要求4所述的方法,其特征在于,在生成首次查询的查询语句时,将预设的初始自增主键字段值作为自增主键偏移量,根据所述自增主键字段标识和所述自增主键偏移量生成所述第二限制条件;在生成非首次查询的查询语句时,将上一次查询所述目标数据表得到的数据集中的最大自增主键字段值作为自增主键偏移量,根据所述自增主键字段标识和所述自增主键偏移量生成所述第二限制条件。7.如权利要求1所述的方法,其特征在于,接收调度中心广播的所述任务执行通知之前还包括:在启动时注册到所述调度中心,使得所述调度中心响应于本服务器完成注册为本服务
器分配唯一分片标识,以及更新当前的分片总数。8.一种消息推送装置,其特征在于,所述装置应用于服务器集群中的任一服务器;所述装置包括:任务确定模块,用于在接收调度中心广播的任务执行通知时,确定所述任务执行通知指定的目标定时任务;分片参数获取模块,用于从所述调度中心获取分片参数信息;所述分片参数信息包括分片总数和分片下标,所述分片总数表示同时执行所述目标定时任务的服务器的总数量,所述分片下标是本服务器的唯一分片标识;查询模块,用于根据所述分片参数信息和所述目标定时任务的任务信息查询数据库;推送模块,用于根据从所述数据库中查询到的数据进行消息推送。9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。

技术总结
本申请涉及一种消息推送方法、装置、计算机设备和存储介质。所述方法包括:服务器集群中的任一服务器在接收调度中心广播的任务执行通知时,确定任务执行通知指定的目标定时任务;从调度中心获取分片参数信息;分片参数信息包括分片总数和分片下标,分片总数表示同时执行目标定时任务的服务器的总数量,分片下标是本服务器的唯一分片标识;根据分片参数信息和目标定时任务的任务信息查询数据库,根据从数据库中查询到的数据进行消息推送。本申请实施例能够在需要推送的消息数据量极大的情况下保证所有用户及时收到订阅消息。下保证所有用户及时收到订阅消息。下保证所有用户及时收到订阅消息。


技术研发人员:张勇
受保护的技术使用者:创优数字科技(广东)有限公司
技术研发日:2021.11.10
技术公布日:2022/3/8

最新回复(0)