CN114237505A - 业务数据的批量处理方法、装置及计算机设备 - Google Patents
业务数据的批量处理方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN114237505A CN114237505A CN202111525825.1A CN202111525825A CN114237505A CN 114237505 A CN114237505 A CN 114237505A CN 202111525825 A CN202111525825 A CN 202111525825A CN 114237505 A CN114237505 A CN 114237505A
- Authority
- CN
- China
- Prior art keywords
- time
- thread
- average
- service data
- threads
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000004590 computer program Methods 0.000 claims abstract description 40
- 238000003860 storage Methods 0.000 claims abstract description 12
- 230000003247 decreasing effect Effects 0.000 claims description 13
- 230000000903 blocking effect Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000007423 decrease Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种业务数据的批量处理方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中;在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程的线程数和第二线程的线程数。采用本方法能够提高处理效率。
Description
技术领域
本申请涉及大数据智能处理技术领域,特别是涉及一种业务数据的批量处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着越来越多的业务数据需要处理,通常设置跑批程序来对大量的业务数据进行批量处理。但是由于数据量很大,经常会存在跑批程序运算缓慢,死锁等情况。因此,需要一种方法能够高效处理数据量庞大的业务数据。
发明内容
基于此,有必要针对上述技术问题,提供一种能够高效处理业务数据的业务数据的批量处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种业务数据的批量处理方法。所述方法包括:
通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
在其中一个实施例中,所述根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数,包括:
判断所述平均读取时间和所述平均写入时间是否均位于预设时间区间内;
若所述平均读取时间和所述平均写入时间均位于预设时间区间内,则根据所述缓冲区中当前排队的业务数据数量,判断所述业务数据数量是否位于预设数量区间内;
若所述业务数据数量小于所述预设数量区间的最小值,则获取最大期望读取时间与所述平均读取时间的第一差值,和所述平均写入时间与最小期望写入时间的第二差值,并基于所述第一差值和第二差值调整第一线程和第二线程的数量;
若所述业务数据数量大于所述预设数量区间的最大值,则获取所述平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与所述平均写入时间的第四差值,并基于所述第三差值和第四差值调整第一线程和第二线程的数量。
在其中一个实施例中,所述基于所述第一差值和第二差值调整第一线程和第二线程的数量,包括:
若所述第一差值大于所述第二差值,则增加所述第一线程池中第一线程的数量;
若所述第一差值不大于所述第二差值,则减少所述第二线程池中第二线程的数量。
在其中一个实施例中,所述基于所述第三差值和第四差值调整第一线程和第二线程的数量,包括:
若所述第三差值大于所述第四差值,则减少所述第一线程池中第一线程的数量;
若所述第三差值不大于所述第四差值,则增加所述第二线程池中第二线程的数量。
在其中一个实施例中,所述判断所述平均读取时间和所述平均写入时间是否均位于预设时间区间内之后,还包括:
若所述平均读取时间和所述平均写入时间中的至少一个平均时间不在预设时间区间内,则基于所述平均读取时间和所述平均写入时间,调整第一线程和第二线程的数量。
在其中一个实施例中,所述基于所述平均读取时间和所述平均写入时间,调整第一线程和第二线程的数量,包括:
对于第一线程池,若所述平均读取时间小于最小期望读取时间,则增加第一线程的数量,若所述平均读取时间大于最大期望读取时间,则减少第一线程的数量;
对于第二线程池,若所述平均写入时间小于最小期望写入时间,则增加第二线程的数量,若所述平均写入时间大于最大期望写入时间,则减少第二线程的数量。
第二方面,本申请还提供了一种业务数据的批量处理装置。所述装置包括:
读取模块,用于通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
写入模块,用于通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
获取模块,用于在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
调度模块,用于根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
上述业务数据的批量处理方法、装置、计算机设备、存储介质和计算机程序产品,通过由多个第一线程从数据库中读取业务数据,并在处理后写入缓冲区,由多个线程从缓冲区中取出数据,并在处理后写入数据库,由此实现多线程高效读写业务数据且并行进行处理,能够实现对大量业务数据的高效计算和处理。同时,监控多个第一线程的平均读取时间和多个第二线程的平均写入时间,基于平均读取时间、平均写入事件和缓冲区中排队的业务数据数量,对第一线程池中的第一线程和第二线程池中的第二线程进行动态调整,能够最大限度的减少计算阻塞的时间,提高了业务数据的处理效率。
附图说明
图1为一个实施例中业务数据的批量处理方法的流程示意图;
图2为一个实施例中服务器动态调整线程数的流程示意图;
图3为另一个实施例中服务器动态调整线程数的流程示意图;
图4为又一个实施例中服务器动态调整线程数的流程示意图;
图5为再一个实施例中服务器动态调整线程数的流程示意图;
图6为一个实施例中改进后的“生产者消费者”模型的结构示意图;
图7为另个实施例中业务数据的批量处理方法的流程示意图;
图8为一个实施例中业务数据的批量处理装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在业务数据处理的过程中,当业务数据的数据量非常庞大时,通常会利用批量处理程序对这些业务数据进行批量处理。但是由于数据量很大,单线程的批量处理程序会出现运算缓慢、甚至出现死锁等情况。而多线程的批量处理程序虽然较单线程的批量处理程序提高了一定的效率,但是读算写操作是串行完成的,存在资源浪费或算力等待的情况。同时,线程数过多会影响数据读写速度,线程数太少又不能快速完成处理。
有鉴于此,本申请实施例中提供一种业务数据的批量处理方法,通过分别使用多线程来进行读写,多线程的运用可以高效的处理海量的业务数据;并且使用缓冲区来暂存已计算待写入数据库的数据,使得业务数据的读取、计算、以及写入的速度达到平衡,有效地防止了业务处理的中间过程停滞的情况。同时,将数据读取计算以及写入分开处理,并对读写时间进行监控,可以通过动态调整第一线程的线程数量和第二线程的线程数量来达到读写速度的平衡,最大限度的减少计算阻塞的时间,从而提高业务数据的处理效率。
在一个实施例中,如图1所示,提供了一种业务数据的批量处理方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该方法包括以下步骤:
步骤S102,通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中。
其中,服务器预先设置第一线程池,第一线程池中预先设置有至少一个第一线程,第一线程用于进行数据读取和处理。第一线程处理业务数据例如包括对业务数据进行过滤、去重、以及计算等处理中的一种或多种。
为了降低读取线程和写入线程之间的耦合性,从而避免线程依赖等情况,服务器在第一线程和第二线程之间设置用于暂存数据进行缓冲的缓冲区,第一线程将从数据库中读取并处理完成的业务数据放入缓冲区中,以供第二线程从缓冲区中取出数据并进行处理后写入数据库中。示例性地,缓冲区可以通过队列或栈等形式进行设置,该队列或栈可以遵循“先进先出”或“先进后出”的读写原则。“先进先出”的读写原则即先被第一线程放入队列或栈中的业务数据,先被第二线程从队列或栈中取出。“先进后出”的读写原则即后被第一线程放入队列或栈中的业务数据,先被第二线程从队列或栈中取出,由此实现优先读取最新完成处理的业务数据。通过设置缓冲区,能够避免在第一线程的读取速度较慢时第二线程出现等待、或者在第二线程的写入速度较慢时第一线程出现等待的情况,避免了资源的浪费,保障了业务数据的处理效率。
具体地,服务器通过运行第一线程,从数据库中读取业务数据并进行处理,并将处理后的业务数据写入至缓冲区中。
在一些实施例中,服务器在第一线程与数据库之间预先设置有数据库连接池。其中,数据库连接池负责分配、管理和释放与数据库的连接。数据库连接池中存在多个连接,每个第一线程可以单独使用一个连接以从数据库中并行读取数据,以提高数据读取效率。通过使用数据库连接池,大大提高了程序运行效率,同时可以通过数据库连接池的管理机制来监视数据库连接的数量、以及使用情况等。
步骤S104,通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中。
其中,服务器预先设置第二线程池,第二线程池中预先设置有至少一个第二线程,第二线程用于从缓冲区中读取业务数据,并对所读取的业务数据进行处理后写入数据库中。第二线程处理业务数据例如包括对业务数据进行格式转换等。示例性地,第二线程将业务数据转换为可运行的与数据库所支持的格式适配的格式,例如SQL(Structured QueryLanguage,结构化查询语言数据库)语句格式,以便于将业务数据插入至数据库中。需要说明的是,第一线程读取的业务数据来源的数据库与第二线程将写入业务数据的数据库可以是同一个数据库,也可以是不同的数据库。
具体地,服务器通过运行第二线程,从缓冲区中读取第一线程处理后的业务数据,并利用第二线程对该业务数据进行处理,再将处理后的业务数据写入至数据库中。
在一些实施例中,服务器在第二线程与数据库之间预先设置有数据库连接池。其中,每个第二线程可以单独使用一个连接以将业务数据并行写入数据库中,从而提高写入效率。需要说明的是,第一线程从数据库中进行读取时所使用的数据库连接池与第二线程将业务数据写入数据库时所使用的数据库连接池可以是同一个数据库连接池,也可以是不同的数据库连接池。
步骤S106,在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间。
其中,预设周期指的是预先设置的时间段时长。示例性地,预设周期可以根据基础时间来确定,例如为基础时间或基础时间的倍数。基础时间指的是在默认配置下执行读写处理时所耗费的时间。
具体地,服务器在多线程批量处理的过程中,同时监控多个第一线程从数据库中读取业务数据的平均读取时间,和多个第二线程将业务数据写入至数据库中的平均写入时间。其中,平均读取时间例如通过预设周期内所消耗的读取时间与第一线程的数量得到;平均写入时间例如通过预设周期内所消耗的写入时间与第二线程的数量得到。
步骤S108,根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
本申请实施例在动态调整第一线程和第二线程的线程数时,所遵循的发明思想为:如果读写时间小于某一个下限值,则可以判断出第一线程或第二线程可以增加;反之,如果读写时间大于某一个上限值,则可以判断出第一线程或第二线程需要减少。同时,考虑缓冲区中排队(等待第二线程进行读取)的业务数据数量对处理效率的影响,如果缓冲区中排队的业务数据数量小于某一个下限值,则可以判断出第一线程相对于第二线程较少,则需要增加第一线程的数量所占的比例;反之,如果缓冲区大于某一个上限值,则可以判断出第一线程相对于第二线程较多,则需要降低第一线程的数量所占的比例。
因此,服务器在多线程批量处理的过程中,还同时监控缓冲区中当前排队的业务数据数量,以获取缓冲区的资源占用情况,从而间接判断第一线程和第二线程的线程数是否需要调整。
具体地,服务器根据所获取的平均读取时间和平均写入时间,以及所获取的缓冲区中当前排队的业务数据数量,对第一线程池中第一线程的线程数进行调整;或者,服务器对第二线程池中第二线程的线程数进行调整;或者,服务器同时对第一线程的线程数和第二线程的线程数进行调整。
示例性地,服务器可以预先设置调度模块,该调度模块与第一线程池、第二线程池、以及缓冲区进行连接,从而监控第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间、以及第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间。
上述业务数据的批量处理方法中,通过由多个第一线程从数据库中读取业务数据,并在处理后写入缓冲区,由多个线程从缓冲区中取出数据,并在处理后写入数据库,由此实现多线程高效读写业务数据且并行进行处理,能够实现对大量业务数据的高效计算和处理。同时,监控多个第一线程的平均读取时间和多个第二线程的平均写入时间,基于平均读取时间、平均写入事件和缓冲区中排队的业务数据数量,对第一线程池中的第一线程和第二线程池中的第二线程进行动态调整,能够最大限度的减少计算阻塞的时间,提高了业务数据的处理效率。
在一些实施例中,如图2所示,步骤S108,也就是根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数的步骤,具体包括:
步骤S202,判断平均读取时间和平均写入时间是否均位于预设时间区间内。
其中,预设时间区间可以根据基础时间进行设置,通常表示读写时间的合理范围。例如,预设时间区间为大于两倍基础时间、小于三倍基础时间的时间段范围。当然并不局限于此,本领域技术人员了解的是,具体的时间区间可以根据实际运行情况或者业务的处理需求进行设置和调整。
具体地,服务器将平均读取时间和平均写入时间与预设时间区间进行对比,以判断平均读取时间和平均写入时间是否均位于合理的时间范围内。在一些实施例中,服务器可以分别为读取时间单独设置相应的第一预设时间区间、为写入时间单独设置相应的第二预设时间区间,第一预设时间区间和第二预设时间区间可以相同或不同。应理解,当分别设置了第一预设时间区间和第二预设时间区间后,服务器分别判断平均读取时间是否位于第一预设时间区间,以及平均写入时间是否位于第二预设时间区间内。
步骤S204,若平均读取时间和平均写入时间均位于预设时间区间内,则根据缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内。
具体地,若服务器通过比对得出平均读取时间和平均写入时间均位于预设时间区间内,或者平均读取时间位于第一预设时间区间内且平均写入时间位于第二预设时间区间内,则服务器判断业务数据的读写速度均在合理范围内。服务器进而根据所获取的缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内,从而判断缓冲区中当前排队的业务数据数量是否合理。当缓冲区中当前排队的业务数据数量位于预设数量区间内,则服务器判断当前的读/写速度平衡,被第一线程写入缓冲区的业务数据能够很快被第二线程读取并写入数据库。
步骤S206,若业务数据数量小于预设数量区间的最小值,则获取最大期望读取时间与平均读取时间的第一差值,和平均写入时间与最小期望写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量。
承前,如果缓冲区中排队的业务数据数量小于某一个下限值,则可以判断出第一线程相对于第二线程较少,则需要增加第一线程的数量所占的比例;反之,如果缓冲区大于某一个上限值,则可以判断出第一线程相对于第二线程较多,则需要降低第一线程的数量所占的比例。
具体地,当服务器通过比对得出业务数据数量小于预设数量区间的最小值,则说明第一线程将处理后的业务数据放入缓冲区的速度,远远比不上第二线程从缓冲区中取出业务数据的速度,导致缓冲区中的业务数据数量比下限值还少。换言之,第一线程的数量相对于第二线程较少,需要增加第一线程的数量。则服务器获取预先设置的最大期望读取时间,计算该最大期望读取时间与平均读取时间的第一差值;同时,服务器获取预先设置的最小期望写入时间,计算该最小期望写入时间与平均写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量。
在一些实施例中,如图3所示,基于第一差值和第二差值调整第一线程和第二线程的数量,包括:
步骤S302,若第一差值大于第二差值,则增加第一线程池中第一线程的数量。
步骤S304,若第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
具体地,若服务器判断第一差值大于第二差值,则增加第一线程池中第一线程的数量;反之,若服务器判断第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
上述实施例中,通过动态调整第一线程和/或第二线程的线程数量,能够使得读写速度得到平衡,且读写速度与线程数量达到平衡,最大限度的减少计算阻塞的时间,从而提高业务数据的处理效率。
步骤S208,若业务数据数量大于预设数量区间的最大值,则获取平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
具体地,当服务器通过比对得出业务数据数量大于预设数量区间的最大值,则说明第一线程将处理后的业务数据放入缓冲区的速度,远远大于第二线程从缓冲区中取出业务数据的速度,导致缓冲区中的业务数据数量比上限值还多。换言之,第二线程的数量相对于第一线程较少,需要增加第二线程的数量。则服务器获取预先设置的最小期望读取时间,计算该最小期望读取时间与平均读取时间的第三差值;同时,服务器获取预先设置的最大期望写入时间,计算该最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
在一些实施例中,如图4所示,基于第三差值和第四差值调整第一线程和第二线程的数量,包括:
步骤S402,若第三差值大于第四差值,则减少第一线程池中第一线程的数量。
步骤S404,若第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
具体地,若服务器判断第三差值大于第四差值,则减少第一线程池中第一线程的数量;反之,若服务器判断第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
上述实施例中,通过动态调整第一线程和/或第二线程的线程数量,能够使得读写速度得到平衡,且读写速度与线程数量达到平衡,最大限度的减少计算阻塞的时间,从而提高业务数据的处理效率。
若服务器将平均读取时间和平均写入时间与预设时间区间进行对比后,判断平均读取时间和平均写入时间其中的一种并未位于相应的合理的时间范围内、或者平均读取时间和平均写入时间二者均并未位于相应的合理的时间范围内,则可直接判断业务数据的读取和/或写入速度缓慢,即第一线程和/或第二线程的数量需要调整。
因此,在一些实施例中,在判断平均读取时间和平均写入时间是否均位于预设时间区间内之后,还包括如下步骤:若平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内,则基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。
具体地,若服务器通过比对得出平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内时,直接基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。在一些实施例中,如图5所示,服务器基于平均读取时间和平均写入时间调整第一线程和第二线程的数量的步骤包括:
步骤S502,对于第一线程池,若平均读取时间小于最小期望读取时间,则增加第一线程的数量,若平均读取时间大于最大期望读取时间,则减少第一线程的数量。
具体地,对于第一线程池中配置的第一线程的数量,服务器判断该平均读取时间是否小于预先设置的最小期望读取时间,若平均读取时间小于最小期望读取时间,则说明第一线程的数量过少,导致业务数据的读取速度过慢,因此服务器增加第一线程的数量。反之,若服务器判断该平均读取时间大于最大期望读取时间,则说明第一线程的数量过多,导致业务数据的读取速度过快,因此服务器减少第一线程的数量。
步骤S504,对于第二线程池,若平均写入时间小于最小期望写入时间,则增加第二线程的数量,若平均写入时间大于最大期望写入时间,则减少第二线程的数量。
具体地,对于第二线程池配置的第二线程的数量,服务器判断该平均写入时间是否小于预先设置的最小期望写入时间,若平均写入时间小于最小写入读取时间,则说明第二线程的数量过少,导致业务数据的写入速度过慢,因此服务器增加第二线程的数量。反之,若服务器判断该平均写入时间大于最大期望写入时间,则说明第二线程的数量过多,导致业务数据的写入速度过快,因此服务器减少第二线程的数量。
上述实施例中,通过动态调整第一线程和/或第二线程的线程数量,能够使得读写速度得到平衡,且读写速度与线程数量达到平衡,最大限度的减少计算阻塞的时间,从而提高业务数据的处理效率。
本申请实施例提供的业务数据的批量处理方法,可以应用在“生产者消费者”模型中。其中,业务数据读取和数据计算写在一个生产者中,用于将业务数据读取出来并进行计算;业务数据写入数据库封装在一个消费者中,用于将业务数据写入数据库;生产者将计算好的业务数据传递到一个阻塞队列中,消费者读取阻塞队列中的业务数据;生产者和消费者均采用多线程的方式。
本申请实施例中,可以通过动态调整第一线程池中第一线程的数量来控制生产者的数量,并通过动态调整第二线程池中第二线程的数量来控制消费者的数量,从而达到读写平衡,提高业务数据的处理效率。为了实现对生产者和消费者的数量的动态调整,本申请实施例中对“生产者消费者”模型进行了改进,除生产者和消费者以外,服务器还设置调度者,用以监控生产者的数据读取时间、消费者的数据写入时间、以及阻塞队列大小,由此动态调整生产者和消费者的数量,以达到生产者和消费者的读写平衡,提高业务数据的处理效率。改进后的“生产者消费者”模型的其结构示意图如图6所示。
具体地,服务器通过生产者从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至阻塞队列中;同时,服务器通过消费者从阻塞队列中读取处理后的业务数据,并将处理后的业务数据写入至数据库中。在预设周期内,服务器通过调度者获取生产者线程池中配置的多个生产者从数据库中读取业务数据的平均读取时间,和消费者线程池中配置的多个消费者将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;然后根据平均读取时间、平均写入时间、以及阻塞队列中当前排队的业务数据数量,动态调整生产者线程池中生产者的个数,和消费者线程池中消费者的个数。具体原理和流程请参照前述实施例中的描述,此处不再赘述。
在具体的系统流程实现逻辑中,首先设置主程序,用于初始化生产者、消费者和调度者。同时,初始化生产者线程池、消费者线程池、和调度者线程池;以及初始化阻塞队列,用来传递数据。当系统运行主程序后,获取需要处理的业务数据清单。同时,系统根据该业务数据清单获取业务数据后,将业务数据传输至生产者进行处理,处理后的业务数据会被生产者放入阻塞队列中;同时,根据消费者线程池的配置,生成对应数量的消费者,并且运行消费者,消费者会从阻塞队列中获取数据。
其中,需要配置一个线程池来运行生产者,通过调整线程池大小来控制生产者数量。同时,配置一个数据库连接池来提供给生产者读取数据,可以每个生产者分配一个独立的数据库连接,也可以几个共用一个。连接被共用的越少,读取数据越快。为了提高读取速度,生产者在数据读取时常用的键值可以建立索引,从而减少查询时间。
示例性地,系统可以创建ReportProducer类,负责进行数据的生产。通过调用ReportRroducer类中的ReportProducer构造函数,设置bizData参数来获取业务数据。设置queue参数表示阻塞队列,用来存储生产者产生的数据。设置con参数作为数据库连接对象,用来调用bizData参数从数据库中获取业务数据。设置pTimeQueue参数来记录每一个生产者数据读取时间。设置dataReader参数从数据库中读取业务数据,并设置dataCaculator参数来将dataReader参数读取的业务数据加工成消费者对象能够识别和处理的格式。系统通过设置queue.put()函数将加工完的业务数据放入到阻塞队列,并通过设置pTimeQueue.put()函数记录生产者的数据读取时间。
此外,需要配置一个线程池来运行消费者,通过调整线程池的大小来控制消费者数量。同时,配置一个数据库连接池来提供给消费者写入数据,每个消费者单独占用一个数据库连接。消费者采用批量写入方式,数据量达到一定程度插入一次数据库,从而提高写入效率。消费者处理业务数据时可以按照写入数据库的维度进行处理,从而使得消费者基本不需要加工即可写入数据库。
示例性地,系统可以创建ReportConsumer类,负责进行数据的消费。设置pool参数为生产者进程池,用来判断所有生产者是否已经生产完成。设置countDown参数用来存储目前仍然运行中的消费者个数。通过调用con参数来往数据库中写入业务数据,设置cTimeQueue记录每一个消费者的数据写入时间。同时,通过设置prepareSql参数用来准备将数据插入SQL数据库中。设置addRow参数将读取到的业务数据加工成可以运行的SQL语句。系统通过读取阻塞队列中的业务数据,调用addRow参数,将读取到的业务数据加工成可执行的SQL语句,然后执行SQL语句,以将业务数据插入数据库。同时,系统通过设置cTimeQueue.put()函数记录每个消费者数据写入时间。由此,直到生产者都停止工作且阻塞队列中没有业务数据时,消费者的任务完成。
在一个具体的实施例中,以本申请实施例提供的业务数据的批量处理方法应用在上述改进后的“生产者消费者”模型中进行举例说明,来阐述调度者的动态调整原理。如图7所示,当开始执行业务数据的处理任务时,服务器启动监控进程,并设置10倍基础时间作为预设周期。在该预设周期内,服务器计算数据库的平均读写时间(包括平均读取时间和平均写入时间),并判断平均读写时间是否位于合理范围内。例如,该合理范围在2倍基础时间至3倍基础时间之间。若是,则服务器获取阻塞队列中当前业务数据的个数,以判断阻塞队列的数据个数是否合理。
若服务器判断阻塞队列中当前业务数据的个数大于所设置的预设数量区间的上限,则服务器获取平均读取时间与最小期望读取时间的差值Tp2(对应于第三差值),并获取最大期望写入时间与平均写入时间的差值Tc2(对应于第四差值),对比Tp2与Tc2的大小,若Tp2≤Tc2则将消费者的数量增加1个,反之则将生产者的数量减少1个。
若服务器判断阻塞队列中当前业务数据的个数小于所设置的预设数量区间的下限,则服务器获取最大期望读取时间与平均读取时间的差值Tp1(对应于第一差值),并获取平均写入时间与最小期望写入时间的差值Tc1(对应于第二差值),对比Tp1与Tc1的大小,若Tp2≤Tc2则将消费者的数量减少1个,反之则将生产者的数量增加1个。当调整完成后,服务器继续执行业务数据的处理过程,直至业务数据全部处理完毕后,完成业务数据的处理任务。
若服务器判断平均读写时间不位于合理范围内,则分别判断平均读取时间是否合理、以及平均写入时间是否合理。服务器将平均读取时间与最大期望读取时间和最小期望读取时间进行比较,若平均读取时间大于最大期望读取时间,则将生产者的数量减少1个。反之,若平均读取时间小于最小期望读取时间,则将生产者的数量增加1个。同时,服务器将平均写入时间与最大期望写入时间和最小期望写入时间进行比较,若平均写入时间大于最大期望写入时间,则将消费者的数量减少1个。反之,若平均写入时间小于最小期望写入时间,则将消费者的数量增加1个。当调整完成后,服务器继续执行业务数据的处理过程,直至业务数据全部处理完毕后,完成业务数据的处理任务。
本申请实施例中,通过将数据读取计算以及写入分开处理,并对读写时间进行监控,可以通过动态调整生产者数量和消费者数量,来达到读写速度的平衡,最大限度的减少计算阻塞的时间,从而提高业务数据的处理效率。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的业务数据的批量处理方法的业务数据的批量处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个业务数据的批量处理装置实施例中的具体限定可以参见上文中对于业务数据的批量处理方法的限定,在此不再赘述。
在一个实施例中,如图8所示,提供了一种业务数据的批量处理装置,包括:读取模块801、写入模块802、获取模块803、和调度模块804,其中:
读取模块801,用于通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
写入模块802,用于通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中;
获取模块803,用于在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
调度模块804,用于根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
在其中一个实施例中,调度模块还用于判断平均读取时间和平均写入时间是否均位于预设时间区间内;若平均读取时间和平均写入时间均位于预设时间区间内,则根据缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内;若业务数据数量小于预设数量区间的最小值,则获取最大期望读取时间与平均读取时间的第一差值,和平均写入时间与最小期望写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量;若业务数据数量大于预设数量区间的最大值,则获取平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
在其中一个实施例中,调度模块还用于若第一差值大于第二差值,则增加第一线程池中第一线程的数量;若第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
在其中一个实施例中,调度模块还用于若第三差值大于第四差值,则减少第一线程池中第一线程的数量;若第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
在其中一个实施例中,调度模块还用于若平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内,则基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。
在其中一个实施例中,调度模块还用于对于第一线程池,若平均读取时间小于最小期望读取时间,则增加第一线程的数量,若平均读取时间大于最大期望读取时间,则减少第一线程的数量;对于第二线程池,若平均写入时间小于最小期望写入时间,则增加第二线程的数量,若平均写入时间大于最大期望写入时间,则减少第二线程的数量。
上述业务数据的批量处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种业务数据的批量处理方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中;在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:判断平均读取时间和平均写入时间是否均位于预设时间区间内;若平均读取时间和平均写入时间均位于预设时间区间内,则根据缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内;若业务数据数量小于预设数量区间的最小值,则获取最大期望读取时间与平均读取时间的第一差值,和平均写入时间与最小期望写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量;若业务数据数量大于预设数量区间的最大值,则获取平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若第一差值大于第二差值,则增加第一线程池中第一线程的数量;若第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若第三差值大于第四差值,则减少第一线程池中第一线程的数量;若第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内,则基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:对于第一线程池,若平均读取时间小于最小期望读取时间,则增加第一线程的数量,若平均读取时间大于最大期望读取时间,则减少第一线程的数量;对于第二线程池,若平均写入时间小于最小期望写入时间,则增加第二线程的数量,若平均写入时间大于最大期望写入时间,则减少第二线程的数量。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中;在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:判断平均读取时间和平均写入时间是否均位于预设时间区间内;若平均读取时间和平均写入时间均位于预设时间区间内,则根据缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内;若业务数据数量小于预设数量区间的最小值,则获取最大期望读取时间与平均读取时间的第一差值,和平均写入时间与最小期望写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量;若业务数据数量大于预设数量区间的最大值,则获取平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若第一差值大于第二差值,则增加第一线程池中第一线程的数量;若第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若第三差值大于第四差值,则减少第一线程池中第一线程的数量;若第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内,则基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于第一线程池,若平均读取时间小于最小期望读取时间,则增加第一线程的数量,若平均读取时间大于最大期望读取时间,则减少第一线程的数量;对于第二线程池,若平均写入时间小于最小期望写入时间,则增加第二线程的数量,若平均写入时间大于最大期望写入时间,则减少第二线程的数量。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;通过第二线程从缓冲区中读取处理后的业务数据,并将处理后的业务数据写入至数据库中;在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;根据平均读取时间、平均写入时间、以及缓冲区中当前排队的业务数据数量,动态调整第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:判断平均读取时间和平均写入时间是否均位于预设时间区间内;若平均读取时间和平均写入时间均位于预设时间区间内,则根据缓冲区中当前排队的业务数据数量,判断业务数据数量是否位于预设数量区间内;若业务数据数量小于预设数量区间的最小值,则获取最大期望读取时间与平均读取时间的第一差值,和平均写入时间与最小期望写入时间的第二差值,并基于第一差值和第二差值调整第一线程和第二线程的数量;若业务数据数量大于预设数量区间的最大值,则获取平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与平均写入时间的第四差值,并基于第三差值和第四差值调整第一线程和第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若第一差值大于第二差值,则增加第一线程池中第一线程的数量;若第一差值不大于第二差值,则减少第二线程池中第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若第三差值大于第四差值,则减少第一线程池中第一线程的数量;若第三差值不大于第四差值,则增加第二线程池中第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若平均读取时间和平均写入时间中的至少一个平均时间不在预设时间区间内,则基于平均读取时间和平均写入时间,调整第一线程和第二线程的数量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:对于第一线程池,若平均读取时间小于最小期望读取时间,则增加第一线程的数量,若平均读取时间大于最大期望读取时间,则减少第一线程的数量;对于第二线程池,若平均写入时间小于最小期望写入时间,则增加第二线程的数量,若平均写入时间大于最大期望写入时间,则减少第二线程的数量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种业务数据的批量处理方法,其特征在于,所述方法包括:
通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
2.根据权利要求1所述的方法,其特征在于,所述根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数,包括:
判断所述平均读取时间和所述平均写入时间是否均位于预设时间区间内;
若所述平均读取时间和所述平均写入时间均位于预设时间区间内,则根据所述缓冲区中当前排队的业务数据数量,判断所述业务数据数量是否位于预设数量区间内;
若所述业务数据数量小于所述预设数量区间的最小值,则获取最大期望读取时间与所述平均读取时间的第一差值,和所述平均写入时间与最小期望写入时间的第二差值,并基于所述第一差值和第二差值调整第一线程和第二线程的数量;
若所述业务数据数量大于所述预设数量区间的最大值,则获取所述平均读取时间与最小期望读取时间的第三差值,和最大期望写入时间与所述平均写入时间的第四差值,并基于所述第三差值和第四差值调整第一线程和第二线程的数量。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一差值和第二差值调整第一线程和第二线程的数量,包括:
若所述第一差值大于所述第二差值,则增加所述第一线程池中第一线程的数量;
若所述第一差值不大于所述第二差值,则减少所述第二线程池中第二线程的数量。
4.根据权利要求2所述的方法,其特征在于,所述基于所述第三差值和第四差值调整第一线程和第二线程的数量,包括:
若所述第三差值大于所述第四差值,则减少所述第一线程池中第一线程的数量;
若所述第三差值不大于所述第四差值,则增加所述第二线程池中第二线程的数量。
5.根据权利要求2所述的方法,其特征在于,所述判断所述平均读取时间和所述平均写入时间是否均位于预设时间区间内之后,还包括:
若所述平均读取时间和所述平均写入时间中的至少一个平均时间不在预设时间区间内,则基于所述平均读取时间和所述平均写入时间,调整第一线程和第二线程的数量。
6.根据权利要求5所述的方法,其特征在于,所述基于所述平均读取时间和所述平均写入时间,调整第一线程和第二线程的数量,包括:
对于第一线程池,若所述平均读取时间小于最小期望读取时间,则增加第一线程的数量,若所述平均读取时间大于最大期望读取时间,则减少第一线程的数量;
对于第二线程池,若所述平均写入时间小于最小期望写入时间,则增加第二线程的数量,若所述平均写入时间大于最大期望写入时间,则减少第二线程的数量。
7.一种业务数据的批量处理装置,其特征在于,所述装置包括:
读取模块,用于通过第一线程从数据库中读取业务数据,并对业务数据进行处理,将处理后的业务数据写入至缓冲区中;
写入模块,用于通过第二线程从所述缓冲区中读取所述处理后的业务数据,并将所述处理后的业务数据写入至数据库中;
获取模块,用于在预设周期内,获取第一线程池中配置的多个第一线程从数据库中读取业务数据的平均读取时间,和第二线程池中配置的多个第二线程将从缓冲区中读取的业务数据写入至数据库中的平均写入时间;
调度模块,用于根据所述平均读取时间、平均写入时间、以及所述缓冲区中当前排队的业务数据数量,动态调整所述第一线程池中第一线程的线程数,和第二线程池中第二线程的线程数。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525825.1A CN114237505A (zh) | 2021-12-14 | 2021-12-14 | 业务数据的批量处理方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111525825.1A CN114237505A (zh) | 2021-12-14 | 2021-12-14 | 业务数据的批量处理方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237505A true CN114237505A (zh) | 2022-03-25 |
Family
ID=80755653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111525825.1A Pending CN114237505A (zh) | 2021-12-14 | 2021-12-14 | 业务数据的批量处理方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237505A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591725A (zh) * | 2011-12-20 | 2012-07-18 | 浙江鸿程计算机系统有限公司 | 一种异构数据库之间多线程数据交换的方法 |
CN104537003A (zh) * | 2014-12-16 | 2015-04-22 | 北京中交兴路车联网科技有限公司 | 一种Hbase数据库的通用高性能数据写入方法 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN110851246A (zh) * | 2019-09-30 | 2020-02-28 | 天阳宏业科技股份有限公司 | 一种批量任务处理方法、装置、系统及存储介质 |
CN111324447A (zh) * | 2019-06-26 | 2020-06-23 | 杭州海康威视系统技术有限公司 | 线程的调整方法、装置、应用服务器和存储介质 |
CN113064620A (zh) * | 2021-04-02 | 2021-07-02 | 北京天空卫士网络安全技术有限公司 | 一种处理系统数据的方法和装置 |
-
2021
- 2021-12-14 CN CN202111525825.1A patent/CN114237505A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591725A (zh) * | 2011-12-20 | 2012-07-18 | 浙江鸿程计算机系统有限公司 | 一种异构数据库之间多线程数据交换的方法 |
CN104537003A (zh) * | 2014-12-16 | 2015-04-22 | 北京中交兴路车联网科技有限公司 | 一种Hbase数据库的通用高性能数据写入方法 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN106933534A (zh) * | 2015-12-31 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN111324447A (zh) * | 2019-06-26 | 2020-06-23 | 杭州海康威视系统技术有限公司 | 线程的调整方法、装置、应用服务器和存储介质 |
CN110851246A (zh) * | 2019-09-30 | 2020-02-28 | 天阳宏业科技股份有限公司 | 一种批量任务处理方法、装置、系统及存储介质 |
CN113064620A (zh) * | 2021-04-02 | 2021-07-02 | 北京天空卫士网络安全技术有限公司 | 一种处理系统数据的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3129880B1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
WO2020211300A1 (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
US8799913B2 (en) | Computing system, method and computer-readable medium for managing a processing of tasks | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
US9836516B2 (en) | Parallel scanners for log based replication | |
WO2020000668A1 (zh) | 一种基于服务器集群的任务执行方法及服务器 | |
CN109739627B (zh) | 任务的调度方法、电子设备及介质 | |
CN116893899A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
US20180322075A1 (en) | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests | |
CN112000703B (zh) | 数据入库处理方法、装置、计算机设备和存储介质 | |
CN111858656A (zh) | 一种基于分布式架构的静态数据的查询方法和设备 | |
CN114237505A (zh) | 业务数据的批量处理方法、装置及计算机设备 | |
CN115357352A (zh) | 分布式异步任务调度方法、装置、计算机设备、存储介质 | |
CN115499513A (zh) | 数据请求的处理方法、装置、计算机设备和存储介质 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
CN109582460A (zh) | 一种Redis内存数据的淘汰方法和装置 | |
CN112328387A (zh) | 一种面向多租户的微服务资源调度方法 | |
CN115794446B (zh) | 一种消息处理方法、装置、电子设备和存储介质 | |
CN115190177B (zh) | 请求处理方法、装置、计算机设备、存储介质和程序产品 | |
CN109274545A (zh) | 一种基于混合云的循环存储方法 | |
CN117369963A (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN118034885A (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
TWI735519B (zh) | 分散式環境協調消費隊列方法和裝置 | |
CN116204311A (zh) | Pod集群扩缩容方法、装置、计算机设备和存储介质 | |
CN114691328A (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 |