本发明涉及,尤其涉及一种通用的有序数据入库更新方法及终端。
背景技术:
1、在常见软件中,通常通过以下几个步骤或方法来实现有序数据的入库和更新处理功能:
2、队列接收数据:使用数据队列服务(如kafka)来接收数据,生产者将数据发送到指定的队列主题,消费者监听这些主题,并在数据到达时接收它们。
3、批量消费数据:消费服务从队列中批量拉取数据,这可以通过设置队列的拉取参数来实现,如kafka的fetch.min.bytes参数,或者在消费者代码中实现逻辑来控制每次拉取的数据量。
4、顺序执行入库操作:在消费入库服务中,根据从队列中获取的数据顺序,使用数据库事务或者批处理操作来执行数据的插入或更新。
5、上述的技术方案虽然在许多场景下是有效的,但也存在一些潜在的缺点,如下:
6、顺序依赖导致入库延迟:如果数据的顺序非常重要,那么整个系统的吞吐量可能会受限于最慢的数据流,从kafka消费后提交给子线程处理,子线程的固定管理策略将影响数据的处理性能,造成数据入库延迟。
7、扩展难度高:随着数据量的增加,需要增加分区数以保证数据处理的性能,这涉及软件内置的扩展策略的调整以及配置的变更,需要修改核心代码,导致扩展难度较高。
8、管理和维护的复杂度高:上述方案无法快速应对负载的变化,容易导致资源浪费或性能瓶颈。例如,在负载增加时可能无法及时增加处理能力,导致响应时间变长。
技术实现思路
1、(一)要解决的技术问题
2、为了解决现有技术的上述问题,本发明提供一种通用的有序数据入库更新方法及终端,具有灵活性、可扩展性、代码复用高和与技术框架无关的技术优点。
3、(二)技术方案
4、为了达到上述目的,第一方面,本发明采用的技术方案为:一种通用的有序数据入库更新方法,包括:
5、s1、接收外部设备或数据接口的上报数据;
6、s2、在上报数据接收后,根据待处理数据数量、服务器的cpu使用率和数据处理效率动态调整子线程数量,根据待处理数据的数据标识和子线程数量进行哈希计算并结合取余操作得到对应的子线程序号,将待处理数据提交至对应序号的子线程进行业务处理;
7、s3、业务处理后,根据已处理数据的数据标识和入库服务数量计算已处理数据的服务序号,基于所述服务序号将所述已处理数据转发至对应服务序号的入库服务中;
8、s4、所述入库服务将接收到的已处理数据按照预设数据条数和时间间隔,批量提交至数据库中。
9、如上所述,其有益效果是:本发明提供的一种通用的有序数据入库更新方法具有灵活性、可扩展性、代码复用高和与技术框架无关等多个技术优点。这些优势能够显著提升系统的灵活性、可维护性等,主要体现如下:
10、1.组件化:本发明方法可集成于一个独立的组件中,与具体的数据库无关,可以应用于各种java开发的系统中,这样可以提高代码的复用性,并且可以节约相关功能开发成本。
11、2.该方法与具体的技术框架无关:可以与各种java开发的系统进行集成,这使得它可以适用于不同的项目和环境,无论是基于spring框架还是其他java框架。
12、3.动态调整处理线程:动态调整线程提高了系统的自适应能力,使得系统能够快速响应业务量的变化。
13、优选地,所述s1之前包括:
14、s0、创建配置组件,所述配置组件中的各个配置均存放至json文件中,并加载至redis缓存,支持实时及定时刷新缓存,当缓存中不存在配置时,可读取各配置信息重新写入缓存,所述配置组件中的配置包括:
15、初始化参数配置,其中包含对cpu使用率阈值、初始线程数、单次线程数最大增幅、cpu核心数和入库服务数的配置;
16、数据格式转换配置,其中包含对设备类型、格式转换处理类、处理类路径和处理方法的配置,该配置用于在接收到上报数据后,对该上报数据进行格式转换处理;
17、数据重定义配置,其中包含对设备类型、重定义类型、源字段名、源字段值、目标字段名和目标字段值的配置,该配置用于在接收到上报数据后,对该上报数据进行重定义类型处理;
18、数据接收处理及转发配置,用于实现数据的顺序接收、格式转换、重定义类型、子线程调整、业务处理和数据转发。
19、如上所述,基于上述配置,能够对cpu的各项参数进行初始化配置,同时能够对数据进行数据格式转换配置、数据重定义配置以及数据接收处理及转发配置,通过组件配置来调整系统的数据处理性能,可以方便地扩展和定制数据格式转换和数据重定义的处理逻辑,无需修改核心代码,降低了系统拓展难度。
20、优选地,在上报数据接收后,判断所述上报数据是否满足配置组件中的数据格式转换配置和数据重定义配置,若满足,则对上报数据进行格式转换和数据重定义处理,并进行后续操作,若否,则剔除不满足配置的相关数据。
21、如上所述,能够对不满足配置要求的数据进行过滤剔除,保证了数据处理的有效性。
22、优选地,所述s2中数据接收后,根据待处理数据数量以及服务器cpu的使用率动态调整子线程数量包括:
23、数据接收后,获取最近n个周期内的当前未处理数据量、数据处理效率和cpu平均使用率;
24、将前后周期两两对比,求出未处理数据量趋势、数据处理效率趋势,将n个周期的cpu平均使用率相加,求出平均cpu平均使用率,将n个周期的数据处理效率相加,求出平均数据处理效率,如果未处理数据量趋势递增且cpu平均使用率小于预设阈值,则判断当前为需要增加线程数量的情况,计算出所需要增加的线程数量并进行线程数量的调整;如果cpu平均使用率大于预设阈值且未处理数据量趋势未递增,则判断当前为需要减少线程数量的情况,计算出所需要减少的线程数量并进行线程数量的调整。
25、如上所述,根据未处理数据量、数据处理效率和cpu平均使用率的变化趋势,按不同优先级动态调整业务处理的线程数,实现自动适应数据波动,减少人工干预,避免数据延迟。
26、优选地,线程数量调整的计算具体如下:
27、若判断当前为需要增加线程数量的情况,增加线程数=(平均未处理数据量/(平均数据处理效率/当前线程数*单次线程数最大增幅))-当前线程数;
28、若判断当前为需要减少线程数量的情况,减少线程数=(1-目标cpu使用率/当前cpu使用率)*当前线程数。
29、如上所述,基于上述具体的计算过程,能够合理算出需要调整的线程数,保证线程调整的可靠性。
30、第二方面,本发明采用的技术方案为:一种通用的有序数据入库更新终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
31、s1、接收外部设备或数据接口的上报数据;
32、s2、在上报数据接收后,根据待处理数据数量、服务器的cpu使用率和数据处理效率动态调整子线程数量,根据待处理数据的数据标识和子线程数量进行哈希计算并结合取余操作得到对应的子线程序号,将待处理数据提交至对应序号的子线程进行业务处理;
33、s3、业务处理后,根据已处理数据的数据标识和入库服务数量计算已处理数据的服务序号,基于所述服务序号将所述已处理数据转发至对应服务序号的入库服务中;
34、s4、所述入库服务将接收到的已处理数据按照预设数据条数和时间间隔,批量提交至数据库中。
35、如上所述,其有益效果是:本发明提供的一种通用的有序数据入库更新终端具有灵活性、可扩展性、代码复用高和与技术框架无关等多个技术优点。这些优势能够显著提升系统的灵活性、可维护性等,主要体现如下:
36、1.组件化:本发明终端使用的方法可集成于一个独立的组件中,与具体的数据库无关,可以应用于各种java开发的系统中,这样可以提高代码的复用性,并且可以节约相关功能开发成本。
37、2.该终端使用的方法与具体的技术框架无关:可以与各种java开发的系统进行集成,这使得它可以适用于不同的项目和环境,无论是基于spring框架还是其他java框架。
38、3.动态调整处理线程:动态调整线程提高了系统的自适应能力,使得系统能够快速响应业务量的变化。
39、优选地,所述s1之前包括:
40、s0、创建配置组件,所述配置组件中的各个配置均存放至json文件中,并加载至redis缓存,支持实时及定时刷新缓存,当缓存中不存在配置时,可读取各配置信息重新写入缓存,所述配置组件中的配置包括:
41、初始化参数配置,其中包含对cpu使用率阈值、初始线程数、单次线程数最大增幅、cpu核心数和入库服务数的配置;
42、数据格式转换配置,其中包含对设备类型、格式转换处理类、处理类路径和处理方法的配置,该配置用于在接收到上报数据后,对该上报数据进行格式转换处理;
43、数据重定义配置,其中包含对设备类型、重定义类型、源字段名、源字段值、目标字段名和目标字段值的配置,该配置用于在接收到上报数据后,对该上报数据进行重定义类型处理;
44、数据接收处理及转发配置,用于实现数据的顺序接收、格式转换、重定义类型、子线程调整、业务处理和数据转发。
45、如上所述,基于上述配置,能够对cpu的各项参数进行初始化配置,同时能够对数据进行数据格式转换配置、数据重定义配置以及数据接收处理及转发配置,通过组件配置来调整系统的数据处理性能,可以方便地扩展和定制数据格式转换和数据重定义的处理逻辑,无需修改核心代码,降低了系统拓展难度。
46、优选地,在上报数据接收后,判断所述上报数据是否满足配置组件中的数据格式转换配置和数据重定义配置,若满足,则对上报数据进行格式转换和数据重定义处理,并进行后续操作,若否,则剔除不满足配置的相关数据。
47、如上所述,能够对不满足配置要求的数据进行过滤剔除,保证了数据处理的有效性。
48、优选地,所述s2中数据接收后,根据待处理数据数量以及服务器cpu的使用率动态调整子线程数量包括:
49、数据接收后,获取最近n个周期内的当前未处理数据量、数据处理效率和cpu平均使用率;
50、将前后周期两两对比,求出未处理数据量趋势、数据处理效率趋势,将n个周期的cpu平均使用率相加,求出平均cpu平均使用率,将n个周期的数据处理效率相加,求出平均数据处理效率,如果未处理数据量趋势递增且cpu平均使用率小于预设阈值,则判断当前为需要增加线程数量的情况,计算出所需要增加的线程数量并进行线程数量的调整;如果cpu平均使用率大于预设阈值且未处理数据量趋势未递增,则判断当前为需要减少线程数量的情况,计算出所需要减少的线程数量并进行线程数量的调整。
51、如上所述,根据未处理数据量、数据处理效率和cpu平均使用率的变化趋势,按不同优先级动态调整业务处理的线程数,实现自动适应数据波动,减少人工干预,避免数据延迟。
52、优选地,线程数量调整的计算具体如下:
53、若判断当前为需要增加线程数量的情况,增加线程数=(平均未处理数据量/(平均数据处理效率/当前线程数*单次线程数最大增幅))-当前线程数;
54、若判断当前为需要减少线程数量的情况,减少线程数=(1-目标cpu使用率/当前cpu使用率)*当前线程数。
55、如上所述,基于上述具体的计算过程,能够合理算出需要调整的线程数,保证线程调整的可靠性。
1.一种通用的有序数据入库更新方法,其特征在于,包括:
2.根据权利要求1所述的通用的有序数据入库更新方法,其特征在于,所述s1之前包括:
3.根据权利要求2所述的通用的有序数据入库更新方法,其特征在于,在上报数据接收后,判断所述上报数据是否满足配置组件中的数据格式转换配置和数据重定义配置,若满足,则对上报数据进行格式转换和数据重定义处理,并进行后续操作,若否,则剔除不满足配置的相关数据。
4.根据权利要求1所述的通用的有序数据入库更新方法,其特征在于,所述s2中数据接收后,根据待处理数据数量以及服务器cpu的使用率动态调整子线程数量包括:
5.根据权利要求4所述的通用的有序数据入库更新方法,其特征在于,线程数量调整的计算具体如下:
6.一种通用的有序数据入库更新终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
7.根据权利要求6所述的通用的有序数据入库更新终端,其特征在于,所述s1之前包括:
8.根据权利要求7所述的通用的有序数据入库更新终端,其特征在于,在上报数据接收后,判断所述上报数据是否满足配置组件中的数据格式转换配置和数据重定义配置,若满足,则对上报数据进行格式转换和数据重定义处理,并进行后续操作,若否,则剔除不满足配置的相关数据。
9.根据权利要求1所述的通用的有序数据入库更新终端,其特征在于,所述s2中数据接收后,根据待处理数据数量以及服务器cpu的使用率动态调整子线程数量包括:
10.根据权利要求4所述的通用的有序数据入库更新终端,其特征在于,线程数量调整的计算具体如下: