CN117675905A - 一种推送数据的方法和装置 - Google Patents

一种推送数据的方法和装置 Download PDF

Info

Publication number
CN117675905A
CN117675905A CN202211061842.9A CN202211061842A CN117675905A CN 117675905 A CN117675905 A CN 117675905A CN 202211061842 A CN202211061842 A CN 202211061842A CN 117675905 A CN117675905 A CN 117675905A
Authority
CN
China
Prior art keywords
data
pushed
pushing
list
breakpoint
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
CN202211061842.9A
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 Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information 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 Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202211061842.9A priority Critical patent/CN117675905A/zh
Publication of CN117675905A publication Critical patent/CN117675905A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种推送数据的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据数据推送任务获取断点记录,断点记录标示了上次数据推送的最后一条数据的数据标识;根据断点记录设置数据推送任务的起始数据标识;根据起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将待推送数据推送给数据接收方,并更新断点记录。该实施方式实现了每次仅推送小批量数据,很快执行完毕,从而可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次会根据断点记录开始进行数据推送,不会全部重新推送,从而提高了数据推送效率。

Description

一种推送数据的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种推送数据的方法和装置。
背景技术
随着服务端技术的发展,web应用微服务化已逐渐成为主流。但随着业务线的迅猛发展,各业务产生的数据量也迅速增长。与此同时,各业务之间的联系日益加强,需要交换、异构的场景也越来约多。目前,服务端间的数据推送方案主要是直接网络推送:通过程序将数据提供方的数据源源不断地读出来,再通过调用数据接收方的数据写入接口写入数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
当推送数据量很大时,持续进行数据推送,推送时间会随之延长,容易出现断点风险,且会导致数据提供方和数据接收方的系统负荷增大,极大地影响了主业务的运行。
发明内容
有鉴于此,本发明实施例提供一种推送数据的方法和装置,能够每次仅推送小批量数据,很快执行完毕,从而可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次会根据断点记录开始进行数据推送,不会全部重新推送,从而提高了数据推送效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种推送数据的方法,包括:
根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;
根据所述断点记录设置所述数据推送任务的起始数据标识;
根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;
将所述待推送数据推送给数据接收方,并更新所述断点记录。
可选地,还包括:若根据数据推送任务未能获取到断点记录,则所述数据推送任务的起始数据标识为默认的起始数据标识。
可选地,根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据,包括:根据所述起始数据标识和预设的批量推送限值,从数据列表中获取第一待推送数据;将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;将所述待推送数据列表中的数据作为待推送数据。
可选地,在将所述待推送数据列表中的数据作为待推送数据之前,还包括:将所述起始数据标识更新为所述第一待推送数据中最后一条数据的数据标识;在所述待推送数据列表中的数据量未达到所述批量推送限值的情况下,从数据列表中获取第一待推送数据,将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;重复执行上述步骤,直至所述待推送数据列表中的数据量达到所述批量推送限值。
可选地,所述待推送数据列表的大小基于所述批量推送限值进行设置;其中,在将所述第二待推送数据保存到预先设置的待推送数据列表中时,若所述第二待推送数据未能全部保存到所述待推送数据列表中,则根据保存到所述待推送数据列表中的最后一条第二待推送数据的数据标识,更新所述起始数据标识;并且,更新所述断点记录,包括:根据更新后的起始数据标识更新所述断点记录。
可选地,根据数据推送任务获取断点记录,包括:根据数据推送任务从缓存中间件中获取所述断点记录;若未能获取所述断点记录,则从预设的全局变量中获取所述断点记录。
可选地,还包括:若根据所述起始数据标识和预设的批量推送限值,未能从数据列表中获取到第一待推送数据,则判断所述待推送数据列表是否为空;若所述待推送数据列表为空,则删除所述断点记录;否则,直接将所述待推送数据列表中的所有数据作为待推送数据。
可选地,在根据数据推送任务获取断点记录之前,还包括:根据重复推送时限判断所述数据推送任务是否需要执行;以及,所述方法还包括:若所述待推送数据列表为空,则更新所述重复推送时限。
可选地,将所述待推送数据推送给数据接收方,包括:将所述待推送数据封装为消息,并通过消息中间件将所述消息推送给所述数据接收方。
根据本发明实施例的另一方面,提供了一种推送数据的装置,包括:
断点获取模块,用于根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;
起始设置模块,用于根据所述断点记录设置所述数据推送任务的起始数据标识;
数据获取模块,用于根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;
数据推送模块,用于将所述待推送数据推送给数据接收方,并更新所述断点记录。
根据本发明实施例的又一方面,提供了一种推送数据的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的推送数据的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的推送数据的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过根据数据推送任务获取断点记录,断点记录标示了上次数据推送的最后一条数据的数据标识;根据断点记录设置数据推送任务的起始数据标识;根据起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将待推送数据推送给数据接收方,并更新断点记录的技术方案,实现了每次仅推送小批量数据,很快执行完毕,从而可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次会根据断点记录开始进行数据推送,不会全部重新推送,从而提高了数据推送效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的推送数据的方法的主要步骤示意图;
图2是本发明一个实施例的数据推送流程示意图;
图3是根据本发明实施例的推送数据的装置的主要模块示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
在本发明的实施例描述中,所涉及的技术名词释义如下:
调度器:可通过设定的调度机制,远程调用指定的服务器上的程序入口进行执行;
cas锁:比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作;
分布式锁:不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,通过访问这些资源实现互斥来防止彼此干扰来保证一致性;
缓存中间件:基于内存的key-value存储机制,在网络环境中为应用系统提供同步或异步、可靠的信息存储的支撑性软件系统,常用的如redis、MemCached等;
消息中间件:基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统,常用的如rabbitMQ、activeMQ等。
现有技术中在进行数据推送时,可以通过打通两方的数据源,直接通过数据拷贝工具,将数据拷贝到另一方;也可以通过程序将数据提供方的数据源源不断地读出来,再通过调用数据接收方的数据写入接口写入数据。但是,直接进行数据拷贝的方式,需要打通两方的数据源,会存在业务流程繁琐和数据安全风险问题,数据推送效率很低;而直接进行网络推送的方式,在数据量很大时,会存在推送时间长、有断点风险的问题,同时占用数据推送方和数据接收方较大系统资源,可能会影响主业务的运行,并且若数据更新频率较大则无法满足指定时间内多次更新的需求,会有较大的数据更新延迟。
为了解决现有技术中存在的问题,本发明提供一种通用的、高效的、稳定的服务端间的数据推送方案,每次只推送小批量数据,很快执行完毕,可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次只会从最近的一批开始,不会全部重来,提高了数据推送效率。另外,本发明还可以在进行数据推送时,过滤掉无效数据,每次都保证推送一定的数据,进一步缩小数据量,同时避免空传,提高整体效率。在具体执行过程中,可根据实际情况调整重复频率控制,可重复执行,进一步提高更新频次,减小数据更新延迟。最后,还可以选择性地加入消息中间件,进一步保证了数据接收端的业务负荷,且消息也不会丢失,保证了数据推送结果的完整性。
图1是根据本发明实施例的推送数据的方法的主要步骤示意图。如图1所示,本发明实施例的推送数据的方法主要包括如下的步骤S101至步骤S104。
步骤S101:根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识。根据本发明的技术方案,当有大批量的数据需要由数据推送方推送到数据接收方时,为了避免数据持续推送所带来的推送时间延长,容易出现断点风险等的技术问题,本发明将该大批量的数据推送分成多个数据推送任务,且每个数据推送任务仅推送小批量的数据。每个数据推送任务在执行完毕后,将其推送的最后一条数据的数据标识作为断点记录保存,以便下次在进行数据推送时可以获取,并根据该断点记录继续进行后续数据的推送。在本发明的实施例中,在进行数据推送时,会按照数据列表中数据的顺序进行数据获取,并且,每条数据都具有相应的编号信息,即数据标识,如此,即可根据数据标识来确定数据推送的断点记录。
数据推送任务一般可以通过任务调度器来进行下发,以触发执行该数据推送任务。任务调度器可以根据设定的任务下发规则来进行数据推送任务的下发,例如,可通过设置调度时间间隔,并根据时间间隔来进行任务下发,在本发明的一个实施例中,可设置每10分钟下发一次数据推送任务,以触发执行数据推送。
根据本发明的一个实施例,在根据数据推送任务获取断点记录之前,还可以为所述数据推送任务添加并发锁,所述并发锁用于防止所述数据推送任务被并发执行。为了避免任务的并发执行,导致推送数据错误以及系统资源浪费,本发明在执行数据推送之前,会首先为数据推送任务添加并发锁,以防止该数据推送任务被并发执行。对于数据推送任务来说,若单机执行,则可使用单机cas锁来作为并发锁;若分布式执行,则可使用分布式锁来作为并发锁。其中,若在为该数据推送任务添加并发锁时,添加锁不成功,则说明该数据推送任务正在执行中,则此数据推送任务无法被再次执行,流程结束。
根据本发明的另一个实施例,在根据数据推送任务获取断点记录之前,还可以根据重复推送时限判断所述数据推送任务是否需要执行。其中,重复推送时限指的是该大批量数据对应的一批任务的重复推送时间,而并非是一个任务的重复推送时间。每次在接收到数据推送任务后,可以根据重复推送时限判断数据推送任务是否需要执行,以避免进行数据空传或重复推送,从而避免了对系统资源的浪费,保证主业务的正常运行。具体地,在根据重复推送时限判断所述数据推送任务是否需要执行时,首先获取系统中保存的重复推送时限(一般为时间,具体设置取决于频率),然后将该重复推送时限与系统当前时间作比较,若前者存在且不小于后者则表示已经超过重复推送时限,此时该批次任务已全部执行完成,流程结束。具体地,例如:假设该批次任务的重复推送频次为每个月推送一次,则重复推送时限即为某个月。若3月份已执行完这一批次的数据推送任务,则会更新重复推送时限为3月份,下次再接收到这一批次的数据推送任务时,会从缓存中获取到重复推送时限,而系统当前时间也为3月份,故而满足“前者存在且不小于后者”,流程结束;若3月份已执行完这一批次的数据推送任务,则缓存中的重复推送时限为3月份,而系统当前时间为4月份,则说明“前者小于后者”,该批次的数据推送任务还未执行或者还未执行完,故而执行该数据推送任务;若从缓存中未能获取到重复推送时限,则说明该批次的数据推送任务为首次执行,此时需要执行该数据推送任务。根据本发明的实施例,重复推送时限可以保存在缓存中间件中,同时还可以设置一个全局变量,用于保存重复推送时限,以便在缓存中间件不可用时,可从全局变量中获取,从而保证方案的高可用性。
当判断该数据推送任务需要执行,且已经为该数据推送任务添加了并发锁之后,即可根据数据推送任务获取断点记录,断点记录标示了上次数据推送的最后一条数据的数据标识。根据本发明的实施例,断点记录可以保存在缓存中间件中,同时还可以预设一个全局变量用于存储断点记录,并且,在根据数据推送任务获取断点记录时,可以先根据数据推送任务从缓存中间件中获取所述断点记录;若未能获取所述断点记录,则从预设的全局变量中获取所述断点记录,以便在缓存中间件不可用时,可从全局变量中获取断点记录,从而保证方案的高可用性。
其中,若根据数据推送任务未能获取到断点记录,则说明该数据推送任务为该批次数据推送任务中的第一个,此时,数据推送任务的起始数据标识为默认的起始数据标识。一般情况下,默认的起始数据标识为0。若能获取到断点记录,则说明该批次数据推送任务已经有执行过,此时执行步骤S102。
步骤S102:根据所述断点记录设置所述数据推送任务的起始数据标识。一般情况下,可以将该断点记录设置为此次数据推送任务的起始数据标识。如此,在数据接收方接收到推送数据后,可以更好地与之前接收到的推送数据进行排序整合。
步骤S103:根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据。根据本发明的技术方案,每次要推送小批量的数据,故而可以预设每次进行推送的批量推送限值,当达到该批量推送限值时,即可进行一次数据推送。
根据本发明的实施例,每次根据起始数据标识和批量推送限值,从数据列表中获取与批量推送限值相等数量的数据,并进行处理,以生成待推送数据。具体实施时,若数据列表中剩余的数据量未达到批量推送限值,则直接将数据列表中剩余的所有数据取出进行处理即可。
根据本发明的一个实施例,根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据,具体可以按照以下方式来执行:根据所述起始数据标识和预设的批量推送限值,从数据列表中获取第一待推送数据;将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;将所述待推送数据列表中的数据作为待推送数据。
根据本发明的另一个实施例,在将所述待推送数据列表中的数据作为待推送数据之前,还包括:将所述起始数据标识更新为所述第一待推送数据中最后一条数据的数据标识;在所述待推送数据列表中的数据量未达到所述批量推送限值的情况下,从数据列表中获取第一待推送数据,将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;重复执行上述步骤,直至所述待推送数据列表中的数据量达到所述批量推送限值。
在本发明的实施例中,根据起始数据标识和批量推送限值,可以从数据列表中获取第一待推送数据,之后,对第一待推送数据进行处理生成待推送数据。其中,在进行数据处理时,可以根据业务需求和数据接收方的需要和条件,确定不需要推送的数据,并将不需要推送的数据作为指定数据,从第一待推送数据中删除指定数据以得到合乎要求的第二待推送数据,然后将第二待推送数据添加到预先建立的待推送数据列表中,并将待推送数据列表中的数据作为待推送数据。另外,在本发明的实施例中,在将待推送数据列表中的数据作为待推送数据之前,还可以根据第一待推送数据中最后一条数据的数据标识来更新起始数据标识;以及,判断待推送数据列表中的数据量是否达到批量推送限值,若达到,则将待推送数据列表中的数据作为待推送数据;否则,重复执行前面的步骤,再次从数据列表中获取数据进行处理后保存到待推送数据列表中,直至待推送数据列表中的数据量达到批量推送限值。在该实施例中,结合实际取出数据的情况,可以预先设置待推送数据列表的大小为大于批量推送限值,则在从数据列表中获取待推送数据时,可将每次处理后得到的第二待推送数据保存到待推送数据列表中,并在保存后判断待推送数据列表中的数据量是否已达到批量推送限值。例如:假设批量推送限值为10000,待推送数据列表的大小为大于10000,每次从数据列表中取出的第一待推送数据条数即为10000,若根据一个数据推送任务,第一次从数据列表中取出的10000条第一待推送数据中进行处理后得到的第二待推送数据条数为8000,则可将这8000条第二待推送数据保存到待推送数据列表中,并根据第一待推送数据中的最后一条数据的数据标识来更新起始数据标识,此时待推送数据列表中的数据量未达到批量推送限制,需要再次从数据列表中取出数据。而再次从数据列表中取出数据时,是根据该已经更新的起始数据标识,从数据列表中取出数据。对于第二次从数据列表中取出的10000条第一待推送数据,若进行处理后得到的第二待推送数据条数为5000,将该5000条第二待推送数据保存到待推送数据列表中后,根据第二次取出的10000条第一待推送数据的最后一条数据的数据标识来更新起始数据标识。此时待推送数据列表中的数据量为13000,已达到批量推送限值,则可以将待推送数据列表中的所有数据作为待推送数据。在具体实施过程中,可能会需要从数据列表中多次取出数据才可满足条件,得到待推送数据,其具体实施过程与上述实施例类似,此处不再赘述。
根据本发明的实施例,待推送数据列表的大小基于所述批量推送限值进行设置。在本发明的另一个实施例中,在将第二待推送数据保存到预先设置的待推送数据列表中时,若第二待推送数据未能全部保存到待推送数据列表中,则根据保存到待推送数据列表中的最后一条第二待推送数据的数据标识,更新起始数据标识。在该实施例中,预先设置的待推送数据列表的大小与批量推送限值相等,则在将第二待推送数据保存到待推送数据列表中时,可能会出现不能全部保存进去的情况,此时,多余的第二待推送数据将不再进行保存,根据已保存到待推送数据列表中的最后一条第二待推送数据的数据标识,来更新起始数据标识。例如:假设待推送数据列表的大小和批量推送限值均为10000,每次从数据列表中取出的第一待推送数据条数即为10000,若根据一个数据推送任务,第一次从数据列表中取出的10000条第一待推送数据中进行处理后得到的第二待推送数据条数为8000,则可将这8000条第二待推送数据保存到待推送数据列表中,并根据第一待推送数据中的最后一条数据的数据标识来更新起始数据标识,此时需要再次从数据列表中取出数据。而再次从数据列表中取出数据时,是根据该已经更新的起始数据标识,从数据列表中取出数据。对于第二次从数据列表中取出的10000条第一待推送数据,若进行处理后得到的第二待推送数据条数为5000,此时无法全部保存到待推送数据列表中,仅可以将第二次处理得到的5000条数据中的前2000条数据保存到待推送数据列表中,则此时将根据这2000条数据中的最后一条数据的数据标识来更新起始数据标识,并将待推送数据列表中的10000条数据作为待推送数据。
根据本发明的又一个实施例,若根据所述起始数据标识和预设的批量推送限值,未能从数据列表中获取到待推送数据,则判断所述待推送数据列表是否为空;若所述待推送数据列表为空,则删除所述断点记录;否则,直接将所述待推送数据列表中的所有数据作为待推送数据。根据起始数据标识和预设的批量推送限值,未能从数据列表中获取到待推送数据,说明数据列表中的数据已被全部取出,此时需要进一步判断待推送数据列表中是否有数据。若待推送数据列表为空,则说明该批次的数据推送任务已完成,则删除断点记录,同时,还可以更新重复推送时限,以便更好地判断之后的数据推送任务是否需要执行;否则,说明虽然待推送数据列表中的数据不满足批量推送限值,但是数据列表已空,故而可以直接将待推送数据列表中的所有数据作为待推送数据,推送给数据接收方。
步骤S104:将所述待推送数据推送给数据接收方,并更新所述断点记录。在每次进行数据推送时,可以预先判断待推送数据列表中是否有数据,若待推送数据列表为空,则无需进行操作,否则,待推送数据列表中有需要进行推送的待推送数据。在将待推送数据推送给数据接收方时,还可以根据业务需求,判断是否需要对待推送数据进行处理,若需要进行业务处理,则在进行业务处理后再推送给数据接收方;若无需进行业务处理,则可直接推送给数据接收方。
根据本发明的实施例,在将所述待推送数据推送给数据接收方时,可以将所述待推送数据封装为消息,并通过消息中间件将所述消息推送给所述数据接收方,如此,即可进一步与数据接收方解耦,降低数据接收方的处理压力。最后,在数据推送完成后,将更新所述断点记录,具体地,是根据更新后的起始数据标识更新所述断点记录,以备下个数据推送任务执行时进行获取使用。
使用本发明的数据推送方案,每次仅推送小批量数据,很快执行完毕,可降低断点风险,双方系统负荷,保护其主要业务;通过断点记录,一旦出现中断,下次只会从最近的一批数据开始推送,不会全部重新推送;通过过滤掉无效数据,每次都保证推送一定的数据,进一步缩小数据量,同时避免空传,提高整体效率。另外,本发明还可根据实际情况调整重复推送的频率,可重复执行,进一步提高更新频次,减小数据更新延迟。
在一个具体的场景下,假设在A系统中有1800w数据,需要获取其扩展属性,并按照事先与B系统约定的属性映射值,将A系统处于有效状态的数据的扩展属性值,按照一月一次的方式,全部推送给B系统,其中约有500w左右的无效数据。采用本发明的数据推送方案,每次小批量推送100条,申请对方接口资源为100条/s,重复频率控制设定为当前月份。经测试发现,任务启动后,数据推送方A系统和数据接收方B系统的负荷基本没有任何变化,两方都无感知系统中存在这样一个流程,每次推送基本都在300ms内完成,几乎没有中断的情况,也没有超过重复频率控制的情况。当设定执行频率为30s/次时,完成一次推送需25天,基本满足要求。当定执行频率为10s/次,完成一次推送需15天,推送周期进一步缩短。在已推送1200w数据的时候,若人为重启A服务器以中断数据推送,则待任务再次执行时,将从最近的断点记录开始进行数据推送,并未从默认起始点0开始。
图2是本发明一个实施例的数据推送流程示意图。如图2所示,在本发明的一个实施例中,数据推送流程主要包括以下步骤:
1、接收数据推送任务;
2、为数据推送任务添加并发锁,以避免任务并发执行。若加锁成功,则执行步骤3,否则流程结束;
3、从缓存中间件中获取重复推送时限,若获取到重复推送时限,则执行步骤4,否则执行步骤5;
4、根据重复推送时限和系统当前时间判断任务是否需要执行,若是,则执行步骤5,否则流程结束;
5、获取断点记录,若能获取到断点记录,则执行步骤6,否则执行步骤7;
6、根据断点记录设置起始数据标识,然后执行步骤8;
7、将起始数据标识设置为默认值,然后执行步骤8;
8、根据起始数据标识和预设的批量推送限值,从数据列表中获取数据,若能获取到数据,则执行步骤9,否则执行步骤10;
9、从获取的数据中删除不需要推送的数据以进行数据处理,并将处理后的数据添加到预设的待推送数据列表中,更新起始数据标识,然后执行步骤12;
10、判断待推送数据列表是否为空,若是,则执行步骤11,否则,执行步骤13;
11、删除断点记录,并更新重复推送时限为当前系统时间,结束流程;
12、判断待推送数据列表中的数据量是否达到批量推送限值,若是,则执行步骤13,否则,执行步骤8;
13、将待推送数据列表中的数据推送给数据接收方,然后设置断点记录,结束流程。
图3是根据本发明实施例的推送数据的装置的主要模块示意图。如图3所示,本发明实施例的推送数据的装置300主要包括断点获取模块301、起始设置模块302、数据获取模块303和数据推送模块304。
断点获取模块301,用于根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;
起始设置模块302,用于根据所述断点记录设置所述数据推送任务的起始数据标识;
数据获取模块303,用于根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;
数据推送模块304,用于将所述待推送数据推送给数据接收方,并更新所述断点记录。
根据本发明的一个实施例,推送数据的装置300还可以包括并发锁添加模块(图中未示出),用于:在根据数据推送任务获取断点记录之前,为所述数据推送任务添加并发锁,所述并发锁用于防止所述数据推送任务被并发执行。
根据本发明的另一个实施例,起始设置模块302还可以用于:若根据数据推送任务未能获取到断点记录,则所述数据推送任务的起始数据标识为默认的起始数据标识。
根据本发明的又一个实施例,数据获取模块303还可以用于:根据所述起始数据标识和预设的批量推送限值,从数据列表中获取第一待推送数据;将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中,将所述待推送数据列表中的数据作为待推送数据。
根据本发明的又一个实施例,数据获取模块303还可以用于:在将所述待推送数据列表中的数据作为待推送数据之前,将所述起始数据标识更新为所述第一待推送数据中最后一条数据的数据标识;在所述待推送数据列表中的数据量未达到所述批量推送限值的情况下,从数据列表中获取第一待推送数据,将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;重复执行上述步骤,直至所述待推送数据列表中的数据量达到所述批量推送限值。
根据本发明的又一个实施例,所述待推送数据列表的大小基于所述批量推送限值进行设置;数据获取模块303还可以用于:其中,在将所述第二待推送数据保存到预先设置的待推送数据列表中时,若所述第二待推送数据未能全部保存到所述待推送数据列表中,则根据保存到所述待推送数据列表中的最后一条第二待推送数据的数据标识,更新所述起始数据标识;并且,数据推送模块304还可以用于:根据更新后的起始数据标识更新所述断点记录。
根据本发明的又一个实施例,断点获取模块301还可以用于:根据数据推送任务从缓存中间件中获取所述断点记录;若未能获取所述断点记录,则从预设的全局变量中获取所述断点记录。
根据本发明的又一个实施例,数据获取模块303还可以用于:若根据所述起始数据标识和预设的批量推送限值,未能从数据列表中获取到第一待推送数据,则判断所述待推送数据列表是否为空;若所述待推送数据列表为空,则删除所述断点记录;否则,直接将所述待推送数据列表中的所有数据作为待推送数据。
根据本发明的又一个实施例,推送数据的装置300还可以包括执行判断模块(图中未示出),用于:在根据数据推送任务获取断点记录之前,根据重复推送时限判断所述数据推送任务是否需要执行;
以及,数据获取模块303还可以用于:若所述待推送数据列表为空,则更新所述重复推送时限。
根据本发明的再一个实施例,数据推送模块304还可以用于:将所述待推送数据封装为消息,并通过消息中间件将所述消息推送给所述数据接收方。
根据本发明实施例的技术方案,通过根据数据推送任务获取断点记录,断点记录标示了上次数据推送的最后一条数据的数据标识;根据断点记录设置数据推送任务的起始数据标识;根据起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将待推送数据推送给数据接收方,并更新断点记录的技术方案,实现了每次仅推送小批量数据,很快执行完毕,从而可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次会根据断点记录开始进行数据推送,不会全部重新推送,从而提高了数据推送效率。另外,本发明还可以在进行数据推送时,过滤掉无效数据,每次都保证推送一定的数据,进一步缩小数据量,同时避免空传,提高整体效率。在具体执行过程中,可根据实际情况调整重复频率控制,可重复执行,进一步提高更新频次,减小数据更新延迟。最后,还可以选择性地加入消息中间件,进一步保证了数据接收端的业务负荷,且消息也不会丢失,保证了数据推送结果的完整性。
图4示出了可以应用本发明实施例的推送数据的方法或推送数据的装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如数据传输类应用、数据推送类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所发来的数据推送请求提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的数据推送请求等数据进行根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;根据所述断点记录设置所述数据推送任务的起始数据标识;根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将所述待推送数据推送给数据接收方,并更新所述断点记录等处理,并将处理结果(例如数据推送结果--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的推送数据的方法一般由服务器405执行,相应地,推送数据的装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统500的结构示意图。图5示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括断点获取模块、起始设置模块、数据获取模块和数据推送模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,断点获取模块还可以被描述为“用于根据数据推送任务获取断点记录的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;根据所述断点记录设置所述数据推送任务的起始数据标识;根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将所述待推送数据推送给数据接收方,并更新所述断点记录。
根据本发明实施例的技术方案,通过根据数据推送任务获取断点记录,断点记录标示了上次数据推送的最后一条数据的数据标识;根据断点记录设置数据推送任务的起始数据标识;根据起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;将待推送数据推送给数据接收方,并更新断点记录的技术方案,实现了每次仅推送小批量数据,很快执行完毕,从而可降低断点风险和双方的系统负荷,保护其主要业务;通过保存断点记录,一旦出现数据推送的中断,下次会根据断点记录开始进行数据推送,不会全部重新推送,从而提高了数据推送效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种推送数据的方法,其特征在于,包括:
根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;
根据所述断点记录设置所述数据推送任务的起始数据标识;
根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;
将所述待推送数据推送给数据接收方,并更新所述断点记录。
2.根据权利要求1所述的方法,其特征在于,还包括:
若根据数据推送任务未能获取到断点记录,则所述数据推送任务的起始数据标识为默认的起始数据标识。
3.根据权利要求1所述的方法,其特征在于,根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据,包括:
根据所述起始数据标识和预设的批量推送限值,从数据列表中获取第一待推送数据;
将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;
将所述待推送数据列表中的数据作为待推送数据。
4.根据权利要求3所述的方法,其特征在于,在将所述待推送数据列表中的数据作为待推送数据之前,还包括:
将所述起始数据标识更新为所述第一待推送数据中最后一条数据的数据标识;
在所述待推送数据列表中的数据量未达到所述批量推送限值的情况下,从数据列表中获取第一待推送数据,将所述第一待推送数据中的指定数据删除以得到第二待推送数据,并将所述第二待推送数据保存到预先设置的待推送数据列表中;
重复执行上述步骤,直至所述待推送数据列表中的数据量达到所述批量推送限值。
5.根据权利要求4所述的方法,其特征在于,所述待推送数据列表的大小基于所述批量推送限值进行设置;
其中,在将所述第二待推送数据保存到预先设置的待推送数据列表中时,若所述第二待推送数据未能全部保存到所述待推送数据列表中,则根据保存到所述待推送数据列表中的最后一条第二待推送数据的数据标识,更新所述起始数据标识;
并且,更新所述断点记录,包括:
根据更新后的起始数据标识更新所述断点记录。
6.根据权利要求1-5中任一项所述的方法,其特征在于,根据数据推送任务获取断点记录,包括:
根据数据推送任务从缓存中间件中获取所述断点记录;
若未能获取所述断点记录,则从预设的全局变量中获取所述断点记录。
7.根据权利要求3或4所述的方法,其特征在于,还包括:
若根据所述起始数据标识和预设的批量推送限值,未能从数据列表中获取到第一待推送数据,则判断所述待推送数据列表是否为空;
若所述待推送数据列表为空,则删除所述断点记录;
否则,直接将所述待推送数据列表中的所有数据作为待推送数据。
8.根据权利要求3-7中任一项所述的方法,其特征在于,在根据数据推送任务获取断点记录之前,还包括:
根据重复推送时限判断所述数据推送任务是否需要执行;
以及,所述方法还包括:
若所述待推送数据列表为空,则更新所述重复推送时限。
9.根据权利要求1所述的方法,其特征在于,将所述待推送数据推送给数据接收方,包括:
将所述待推送数据封装为消息,并通过消息中间件将所述消息推送给所述数据接收方。
10.一种推送数据的装置,其特征在于,包括:
断点获取模块,用于根据数据推送任务获取断点记录,所述断点记录标示了上次数据推送的最后一条数据的数据标识;
起始设置模块,用于根据所述断点记录设置所述数据推送任务的起始数据标识;
数据获取模块,用于根据所述起始数据标识和预设的批量推送限值,从数据列表中获取待推送数据;
数据推送模块,用于将所述待推送数据推送给数据接收方,并更新所述断点记录。
11.一种推送数据的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-9中任一所述的方法。
CN202211061842.9A 2022-09-01 2022-09-01 一种推送数据的方法和装置 Pending CN117675905A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211061842.9A CN117675905A (zh) 2022-09-01 2022-09-01 一种推送数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211061842.9A CN117675905A (zh) 2022-09-01 2022-09-01 一种推送数据的方法和装置

Publications (1)

Publication Number Publication Date
CN117675905A true CN117675905A (zh) 2024-03-08

Family

ID=90077649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211061842.9A Pending CN117675905A (zh) 2022-09-01 2022-09-01 一种推送数据的方法和装置

Country Status (1)

Country Link
CN (1) CN117675905A (zh)

Similar Documents

Publication Publication Date Title
CN109032796B (zh) 一种数据处理方法和装置
CN110928912A (zh) 一种生成唯一标识的方法和装置
CN113010238A (zh) 一种微应用调用接口的权限确定方法、装置和系统
CN113760924A (zh) 一种分布式事务的处理方法和装置
CN109284177B (zh) 一种数据更新方法和装置
CN112241398A (zh) 一种数据迁移方法和系统
CN113360815A (zh) 一种请求重试方法和装置
CN113760487B (zh) 一种业务处理方法和装置
CN113779122B (zh) 导出数据的方法和装置
CN112084254A (zh) 一种数据同步方法和系统
CN114327404A (zh) 一种文件处理方法、装置、电子设备及计算机可读介质
CN117675905A (zh) 一种推送数据的方法和装置
CN114374657A (zh) 一种数据处理方法和装置
CN113296829A (zh) 处理业务的方法、装置、设备和计算机可读介质
CN109213815B (zh) 控制执行次数的方法、装置、服务器终端以及可读介质
CN113778910A (zh) 一种数据缓存的处理方法及装置
CN109087097B (zh) 一种更新链码同一标识的方法和装置
CN113760861A (zh) 一种数据迁移的方法和装置
CN112182003A (zh) 一种数据同步方法和装置
CN112579615A (zh) 一种实现分布式锁的方法和装置
CN113742617A (zh) 一种缓存更新的方法和装置
CN113347052A (zh) 通过访问日志统计用户访问数据的方法和装置
US8484235B2 (en) Dynamically switching the serialization method of a data structure
CN110262756B (zh) 用于缓存数据的方法和装置
CN118069731A (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