技术领域
[0001] 本公开涉及数据同步技术领域,尤其涉及一种适应多种硬件环境的文件同步方法、装置、介质、产品。
相关背景技术
[0002] 随着信息时代的飞速发展,大数据、人工智能AI的兴起,文件作为信息或数据的载体,在信息时代占领尤其重要的角色。如今,各行各业都离不开数据传输,数据传输服务器种类繁多、传输硬件复杂,其中表现最为明显的是在持久化数据的落地方面,在数据传输和持久化的技术领域,现有技术中存在的硬件兼容性和数据一致性问题尤为突出。不同种类的服务器、存储设备和网络硬件之间的差异,导致了在实际应用中常常出现兼容性问题,往往造成不同批量数据文件进行同步操作时存在瓶颈,无法实现高效、快速的同步,甚至于导致在传输过程中遭到损坏或丢失,同时这种多样化的硬件环境不仅增加了系统配置和维护的复杂性,还会在硬件升级或替换时引发潜在的兼容性问题。
具体实施方式
[0131] 下面结合附图对本公开实施例进行详细描述。
[0132] 应当明确,以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0133] 需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目各方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
[0134] 还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0135] 另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
[0136] 参照图1,本申请第一方面公开了一种适应多种硬件环境的文件同步方法,具体包括以下步骤:
[0137] S100,获取发送端信息,发送端信息包括发送端磁盘类型、发送端磁盘存储信息、发送端内存信息、发送端CPU信息。
[0138] 具体地,基于获取的待同步文件所处磁盘的硬件性能信息,确定发送端磁盘类型、发送端磁盘存储信息。
[0139] 例如,当发送端为外端服务器时,在外端服务器主要是读取文件,从硬件架构的机械盘、固态盘或者RAID盘中读取持久化文件,即待同步的文件,在此过程中,获取到待同步文件所处的磁盘信息,包括磁盘类型、存储量、PC的CPU信息。
[0140] 通过该步骤,确保对发送端硬件性能的全面了解,从而为后续的配置和优化提供依据,避免因硬件限制导致的性能瓶颈。
[0141] S200,基于发送端信息进行预分析,确定发送端初始核心线程数、发送队列的单次发送量。
[0142] 具体地参照图2,发送端初始核心线程数、发送队列的单次发送量的确定方法具体包括以下步骤:
[0143] S210,基于发送端磁盘类型调用对应的发送端线程池的核心线程数设置策略。
[0144] 不同的磁盘类型具有不同的读写速度,根据磁盘类型自动设置线程数,可以充分利用硬件的性能,确保数据传输的高效性;合理配置线程数可以减少等待时间,提高数据处理速度,从而减少传输延迟。
[0145] 若发送端磁盘类型为第一类型,基于第一策略获取发送端线程池的初始核心线程数。
[0146] 第一类型为机械盘,同时参照图3,基于第一策略获取发送端线程池的初始核心线程数的方法具体包括:
[0147] A111,基于发送端CPU信息获取发送端CPU大小。
[0148] 获取到的CPU大小能准确反映发送端的处理能力,为后续的线程数设置提供依据,能够根据实际的CPU配置,灵活适应不同硬件环境,确保系统配置的合理性。
[0149] A112,基于发送端CPU大小确定发送端线程池的初始核心线程数;
[0150] 初始核心线程数为N0:N0=n0,其中,n0为发送端CPU大小,即对于机械盘,设置线程池的核心线程数与CPU个数一致。
[0151] 合理的初始核心线程数可以最大化利用CPU资源,提高数据处理能力,降低线程切换开销,通过直接将线程数设置为CPU大小,使得配置过程简单明了,减少了复杂的调整和试错过程。
[0152] 若发送端磁盘类型为第二类型,基于第二策略获取发送端线程池的初始核心线程数。
[0153] 第二类型为固态硬盘,同时参照图4,基于第二策略获取发送端线程池的初始核心线程数的方法具体包括:
[0154] A211,基于发送端CPU信息获取发送端CPU大小;
[0155] A212,基于发送端CPU大小确定发送端线程池的初始核心线程数;
[0156] 初始核心线程数为N0:N0=n0×n1,其中,n0为发送端CPU大小,即配置发送端线程池的初始核心线程数是发送端CPU大小的n1倍。
[0157] 在该实施例中,优选地4≤n1≤16。
[0158] 在该实施例中,通过引入乘数因子n1,能够根据不同的工作负载类型(CPU密集型或IO密集型)来动态调整线程数,从而更加灵活地适应各种应用场景;合理的线程数设置能够充分利用CPU资源,避免资源闲置或过载,提高系统的整体性能和吞吐量;针对特定类型的工作负载(如IO密集型),通过增加线程数可以减少线程等待IO的时间,从而提高系统的响应速度和任务处理效率;虽然引入了一个额外的乘数因子,但通过预设合理的n1值,可以简化线程数的配置过程,避免频繁的手动调整。
[0159] 若发送端磁盘类型为第三类型,基于第三策略获取发送端线程池的初始核心线程数。
[0160] 第三类型为RAID盘,同时参照图5,基于第三策略获取发送端线程池的初始核心线程数的方法具体包括:
[0161] A311,基于发送端CPU信息获取发送端CPU大小;
[0162] A312,基于发送端CPU大小确定发送端线程池的初始核心线程数;
[0163] 初始核心线程数为N0:N0=n0×n2,其中,n0为发送端CPU大小,即配置发送端线程池的初始核心线程数是发送端CPU大小的n2倍。
[0164] 在该实施例优选地,2≤n2≤8。
[0165] 在该实施例中,基于CPU大小和动态因子计算线程数,可以灵活应对不同类型的应用负载,确保系统性能最佳化;通过优化线程配置,能够减少延迟和提高响应速度,改善用户体验;能够在不同的运行条件下合理分配系统资源,提高资源使用效率,降低成本。
[0166] S220,基于核心线程数设置策略设置发送端初始核心线程数。
[0167] 假设经过步骤S210确定发送端的线程数为8,根据当前CPU负载和内存使用情况(如CPU负载较低,内存使用率为40%),最终决定将发送端的初始核心线程数设置为8。
[0168] 根据CPU和内存的实际使用情况,能够灵活设置线程数,提高了系统的适应性,避免资源浪费;合理的核心线程数配置可以确保负载均衡,避免单个线程过载,从而提升整体处理能力。
[0169] S230,基于发送端内存信息、发送端磁盘存储信息,确定发送队列的单次发送量。
[0170] 单次发送信息为Q1:Q1=F2÷F1×F0;
[0171] 其中,F2为发送端磁盘存储信息,F1为发送端内存信息,F0为发送端CPU信息。
[0172] 通过综合考虑内存和存储信息,可以有效避免因发送队列过大导致的内存溢出或磁盘写入压力,合理的发送量配置可以提高数据传输效率,减少网络传输的频率,从而提高整体的传输速度。
[0173] 在该实施例中,S210‑S230公开的发送端初始核心线程数、发送队列的单次发送量的确定方法,通过对发送端信息的全面分析,系统能够根据具体的硬件条件进行优化配置,确保在传输过程中充分利用可用资源;自动化的核心线程数和发送量配置减少了人为干预的需求,使系统更易于管理和维护;合理配置的线程数和发送量能显著提高数据传输速度,减少延迟,提升用户体验;该方案能够在多种硬件环境下自适应调整,确保在不同的使用场景下均能保持良好的性能表现;通过动态调整和合理配置,减少了系统过载和数据丢失的风险,提高了文件同步过程的稳定性和可靠性。
[0174] S300,基于待同步文件的总数据量、预设动态调整策略,动态调整发送端初始核心线程数,获得发送端目标核心线程数。
[0175] 具体地,参照图6,发送端目标核心线程数的获取方法具体包括以下步骤:
[0176] S310,基于获取的待同步文件的总数据量(即总大小),确定数据同步模式。
[0177] 通过识别数据同步模式,可以根据不同的负载类型选择相应的优化策略,以确保数据同步过程高效且稳定,能够快速适应不同的数据量需求,确保在高负载情况下能够有效完成任务。
[0178] 具体地,若待同步文件的总数据量满足第一范围,则确定数据同步模式为高效模式。
[0179] 在实施例中第一范围为M1,1KB≤M1≤2MB。
[0180] 若待同步文件的总数据量满足第二范围,则确定数据同步模式为稳定模式。
[0181] 在实施例中第二范围为M2,2MB<M2≤50MB。
[0182] 若待同步文件的总数据量满足第三范围,则确定数据同步模式为通用模式。
[0183] 在实施例中第三范围为M3,50MB<M3≤200MB。
[0184] 若待同步文件的总数据量满足第四范围,则确定数据同步模式为安全模式。
[0185] 在实施例中第四范围为M4,200MB<M4。
[0186] S320,基于数据同步模式、发送端磁盘类型调用对应的发送端核心线程数动态调整策略。
[0187] 根据数据同步模式和磁盘性能动态调整线程数,确保充分利用硬件能力,提高同步效率,合理的线程数配置可以降低数据传输延迟,提升整体响应速度。
[0188] 具体地,当数据同步模式为高效模式、发送端磁盘类型为机械盘时,调用对应的发送端核心线程数动态调整策略为第一扩大策略;
[0189] 当数据同步模式为高效模式、发送端磁盘类型为固态硬盘时,调用对应的发送端核心线程数动态调整策略为第二扩大策略;
[0190] 当数据同步模式为高效模式、发送端磁盘类型为RAID盘时,调用对应的发送端核心线程数动态调整策略为第三扩大策略;
[0191] 当数据同步模式为安全模式、发送端磁盘类型为机械盘时,调用对应的发送端核心线程数动态调整策略为第一缩小策略;
[0192] 当数据同步模式为安全模式、发送端磁盘类型为固态硬盘时,调用对应的发送端核心线程数动态调整策略为第二缩小策略;
[0193] 当数据同步模式为安全模式、发送端磁盘类型为RAID盘时,调用对应的发送端核心线程数动态调整策略为第三缩小策略。
[0194] S330,响应于发送端核心线程数动态调整策略,动态调整发送端初始核心线程数,获得发送端目标核心线程数。
[0195] 通过动态调整核心线程数,能够在实际运行中保持最佳性能,提高数据同步的效率,能够在运行过程中根据实际数据量和硬件性能进行调整,确保系统始终处于高效工作状态。
[0196] 具体地,当数据同步模式为高效模式、发送端磁盘类型为机械盘时,执行第一扩大策略,即将发送端初始核心线程数扩大H1倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;2≤H1≤3;
[0197] 当数据同步模式为高效模式、发送端磁盘类型为固态硬盘时,执行第二扩大策略,即将发送端初始核心线程数扩大H2倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;8≤H2≤9;
[0198] 当数据同步模式为高效模式、发送端磁盘类型为RAID盘时,执行第三扩大策略,即将发送端初始核心线程数扩大H3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;4≤H3≤6;
[0199] 当数据同步模式为安全模式、发送端磁盘类型为机械盘时,执行第一缩小策略,即将发送端初始核心线程数缩小H1倍,将缩小后的发送端初始核心线程数作为发送端目标核心线程数;2≤H1≤3;
[0200] 当数据同步模式为安全模式、发送端磁盘类型为固态硬盘时,执行第二缩小策略,即将发送端初始核心线程数缩小H2倍,将缩小后的发送端初始核心线程数作为发送端目标核心线程数;8≤H2≤9;
[0201] 当数据同步模式为安全模式、发送端磁盘类型为RAID盘时,执行第三缩小策略,即将发送端初始核心线程数缩小H3倍,将缩小后的发送端初始核心线程数作为发送端目标核心线程数;4≤H3≤6。
[0202] 当数据同步模式为稳定模式或者通用模式时,将发送端初始核心线程数作为发送端目标核心线程数。
[0203] 在另一种方案中,对于数据同步模式为高效模式,当发送端磁盘类型为机械盘时,可以将发送端初始核心线程数扩大7‑8倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为固态硬盘时,可以将发送端初始核心线程数扩大8‑9倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为RAID盘时,可以将发送端初始核心线程数扩大4‑6倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数。
[0204] 对于数据同步模式为稳定模式,当发送端磁盘类型为机械盘时,可以将发送端初始核心线程数扩大4‑6倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为固态硬盘时,可以将发送端初始核心线程数扩大6‑7倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为RAID盘时,可以将发送端初始核心线程数扩大2‑3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数。
[0205] 对于数据同步模式为通用模式,当发送端磁盘类型为机械盘时,可以将发送端初始核心线程数扩大2‑3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为固态硬盘时,可以将发送端初始核心线程数扩大4‑5倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为RAID盘时,可以将发送端初始核心线程数扩大1倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数。
[0206] 对于数据同步模式为安全模式,当发送端磁盘类型为机械盘时,可以将发送端初始核心线程数缩小2‑3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为固态硬盘时,可以将发送端初始核心线程数缩小2‑3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数;当发送端磁盘类型为RAID盘时,可以将发送端初始核心线程数缩小2‑3倍,将扩大后的发送端初始核心线程数作为发送端目标核心线程数。
[0207] S400,基于发送端目标核心线程数创建相同数量的Socket发送线程,并基于Socket发送线程、单次发送量发送待同步文件至接收端。
[0208] 创建与目标核心线程数相同数量的Socket发送线程,按每次发送量将待同步文件分片发送到接收端,可以有效提高并发传输能力,缩短同步时间,使文件传输过程更加高效。
[0209] S500,获取接收端信息,接收端信息包括接收端磁盘类型、接收端磁盘存储信息、接收端核心线程数、接收端CPU信息。
[0210] 其中,接收端初始核心线程数的获取方法包括:
[0211] 基于接收端CPU信息获取接收端CPU大小;
[0212] 基于文件待存储磁盘的硬件性能信息确定接收端磁盘类型;
[0213] 基于接收端CPU大小、接收端磁盘类型确定接收端初始核心线程数。
[0214] 当接收端磁盘类型为机械盘时,接收端初始核心线程数与接收端YY+242255PCPU大小一致;
[0215] 当接收端磁盘类型为固态硬盘时,接收端初始核心线程数是接收端CPU大小的M1倍,优选地16≥M1≥4。
[0216] 当接收端磁盘类型为RAID盘时,接收端初始核心线程数是接收端CPU大小的M2倍,优选地8≥M2≥2。
[0217] M1≥M2。
[0218] 通过获取接收端信息,可以有效避免因接收端性能不足而导致的传输失败或延迟。
[0219] S600,基于接收端信息获取接收端单次接收数量阈值。
[0220] 具体参照图7,接收端单次接收数量阈值的获取方法具体包括:
[0221] S610,基于接收端CPU信息、文件待存储磁盘的硬件性能信息,获取接收端磁盘存储信息、接收端核心线程数。
[0222] 获取接收端的CPU和磁盘信息,可以全面了解系统的硬件性能,为后续的接收数量阈值设置提供科学依据,根据硬件性能动态调整系统参数,确保资源分配的合理性。
[0223] S620,基于获取的接收端内存信息、接收端磁盘存储信息,获取接收端单次接收数量阈值。
[0224] 接收端单次接收数量阈值为为Q2:Q2=J2÷J1×J0;
[0225] 其中,J2为接收端磁盘存储信息,J1为接收端内存信息,J0为接收端CPU信息。
[0226] 通过合理设定单次接收数量阈值,可以确保数据接收过程流畅,避免因接收数量过大导致的内存或磁盘瓶颈,避免一次性接收过多数据而造成的系统压力,减少潜在的延迟和错误,提升稳定性。
[0227] S700,基于接收端单次接收数量阈值、待同步文件的实际发送数量,调用对应的写入策略将待同步文件写入接收端对应的磁盘。
[0228] 具体参照图8,将待同步文件写入接收端对应的磁盘的写入方法具体包括:
[0229] 若待同步文件的实际发送数量不大于接收端单次接收数量阈值,获取实际发送的每个文件大小,基于每个文件大小、接收端核心线程数,调用对应的写入策略将待同步文件写入接收端对应的磁盘;
[0230] 若待同步文件的实际发送数量大于接收端单次接收数量阈值,将未超出接收端单次接收数量阈值的待同步文件记为第一组文件,将超出接收端单次接收数量阈值的待同步文件记为第二组文件,并将第二组文件存储至待同步队列;
[0231] 获取第一组文件中的每个文件大小,基于每个文件大小、接收端核心线程数,调用对应的写入策略将第一组文件写入接收端对应的磁盘;
[0232] 在第一组文件全部写入对应的磁盘后,获取第二组文件中的每个文件大小,基于每个文件大小、接收端核心线程数,调用对应的写入策略将第二组文件写入接收端对应的磁盘。
[0233] 基于接收端单次接收数量阈值和待同步文件的实际发送数量,调用对应的写入策略将待同步文件写入接收端磁盘的方案,通过明确的步骤和策略,可以优化数据同步过程,具体地,若待同步文件的实际发送数量不大于接收端单次接收数量阈值,当实际发送数量小于或等于阈值时,获取每个文件的大小,并基于接收端核心线程数,调用相应的写入策略,可以减少处理复杂性,快速高效地写入小规模数据,避免资源浪费,确保数据快速传输;若待同步文件的实际发送数量大于接收端单次接收数量阈值,将未超出阈值的文件标记为第一组,超出阈值的文件标记为第二组,并将第二组文件存入待同步队列,通过分组处理,优化资源分配,减少写入过程中的竞争,控制每次接收的文件数量,避免系统负荷过高;获取第一组文件中的每个文件大小,调用对应的写入策略,针对第一组文件,获取文件大小,并根据核心线程数采用合适的写入策略进行写入,利用多线程并行写入,提高文件传输速度,处理顺序写入,降低数据不一致的风险;在第一组文件全部写入后,处理第二组文件,即在第一组文件全部写入完成后,获取第二组文件的大小,并调用相应的写入策略将其写入,确保第一组文件处理完成后再开始第二组,减少系统负担,可以根据当前系统状态和负载灵活调整写入策略。
[0234] 在该实施例中,合理的阈值控制和分组处理,使得数据能够高效快速地写入接收端磁盘,动态调整写入策略和线程使用,最大化利用系统资源,避免资源闲置,控制每次接收的文件数量,降低因过载引起的崩溃或性能下降风险,确保系统稳定运行,能够根据实际发送数量和接收端的能力动态调整写入策略,使系统灵活适应不同工作负载和环境,自动化的分组和写入过程减少了人工干预,简化了系统管理与维护,提高了工作效率;通过分组处理和有序写入,降低数据丢失或损坏的风险,确保数据的一致性和完整性。
[0235] 综上所述,该方案通过科学的步骤设计和动态调整,能够在多个方面提升数据传输的效率、稳定性和资源利用率,确保接收端能够高效地处理待同步文件。
[0236] 进一步地,参照图9,写入策略的调用方法具体包括以下方案:
[0237] B100,将文件大小超过预设大小的文件记为一类文件,将文件大小不超过预设大小的文件记为二类文件,分别获取一类文件、二类文件的总数量。
[0238] 其中,一类文件指的就是大文件,二类文件指的就是小文件。
[0239] B200,若一类文件、二类文件的总数量均小于接收端核心线程数,调用第一写入策略将待同步文件写入接收端对应的磁盘。
[0240] 具体地,当一类文件的总数量、二类文件的总数量、一类文件与二类文件的文件总和均小于接收端核心线程数时,第一写入策略包括:将待同步文件均匀地分配到各个线程上,每个线程负责写入一定数量的文件,即写入对应的磁盘中。
[0241] 当一类文件的总数量、二类文件的总数量均小于接收端核心线程数,且一类文件与二类文件的文件总和不小于接收端核心线程数时,第一写入策略包括:优选分配一类文件进行写入,然后再分配二类文件的写入。
[0242] B300,若一类文件、二类文件的总数量均大于接收端核心线程数,调用第二写入策略将待同步文件写入接收端对应的磁盘。
[0243] 具体地,获取超过接收端核心线程数的一类文件,并将其存储至接收队列中,通过接收端核心线程优选处理相同数量的那部分一类文件,然后处理接收队列中的一类文件,最后进行二类文件的文件写入。
[0244] 对于二类文件的写入,获取二类文件的总数量与接收端核心线程数的商值,若该商值为整除值且不大于预设阈值,则将所有的二类文件进行平均分配,每个接收端核心线程处理相同量的二类文件;若该商值为整除值且大于预设阈值,则每个接收端核心线程处理与预设阈值相同量的二类文件,将多余的二类文件存储至接收队列,然后再去处理接收队列中的二类文件。
[0245] B400,若一类文件、二类文件的总数量均等于接收端核心线程数,调用第三写入策略将待同步文件写入接收端对应的磁盘。
[0246] 具体地,第三写入策略包括:可以优选写入所有的一类文件,然后再进行所有二类文件的写入。
[0247] B500,若一类文件的总数量大于接收端核心线程数,且二类文件的总数量等于接收端核心线程数,调用第四写入策略将待同步文件写入接收端对应的磁盘。
[0248] 具体地,第四写入策略包括:获取超过接收端核心线程数的一类文件,并将其存储至接收队列中,通过接收端核心线程优选处理相同数量的那部分一类文件,然后处理接收队列中的一类文件,最后进行YY+242255P
[0249] 二类文件的文件写入。
[0250] B600,若一类文件的总数量大于接收端核心线程数,且二类文件的总数量小于接收端核心线程数,调用第五写入策略将待同步文件写入接收端对应的磁盘。
[0251] 具体地,第五写入策略包括:获取超过接收端核心线程数的一类文件,并将其存储至接收队列中,通过接收端核心线程优选处理相同数量的那部分一类文件,然后处理接收队列中的一类文件,最后任意选取同等数量的接收端核心线程进行二类文件的文件写入。
[0252] B700,若一类文件的总数量等于接收端核心线程数,且二类文件的总数量大于接收端核心线程数,调用第六写入策略将待同步文件写入接收端对应的磁盘。
[0253] 具体地,第六写入策略包括:优先进行一类文件的写入;然后,获取二类文件的总数量与接收端核心线程数的商值,若该商值为整除值且不大于预设阈值,则将所有的二类文件进行平均分配,每个接收端核心线程处理相同量的二类文件;若该商值为整除值且大于预设阈值,则每个接收端核心线程处理与预设阈值相同量的二类文件,将多余的二类文件存储至接收队列,然后再去处理接收队列中的二类文件。
[0254] B800,若一类文件的总数量等于接收端核心线程数,且二类文件的总数量小于接收端核心线程数,调用第七写入策略将待同步文件写入接收端对应的磁盘。
[0255] 具体地,第七写入策略包括:优先处理所有的一类文件,然后任意选取同等数量的接收端核心线程进行二类文件的文件写入。
[0256] B900,若一类文件的总数量小于接收端核心线程数,且二类文件的总数量等于接收端核心线程数,调用第八写入策略将待同步文件写入接收端对应的磁盘。
[0257] 具体地,第八写入策略包括:优先写入所有的一类文件,然后进行二类文件的写入。
[0258] B1000,若一类文件的总数量小于接收端核心线程数,且二类文件的总数量大于接收端核心线程数,调用第九写入策略将待同步文件写入接收端对应的磁盘。
[0259] 具体地,第九写入策略包括:优先写入所有的一类文件;然后获取二类文件的总数量与接收端核心线程数的商值,若该商值为整除值且不大于预设阈值,则将所有的二类文件进行平均分配,每个接收端核心线程处理相同量的二类文件;若该商值为整除值且大于预设阈值,则每个接收端核心线程处理与预设阈值相同量的二类文件,将多余的二类文件存储至接收队列,然后再去处理接收队列中的二类文件。
[0260] 在该实施例中,通过将文件按大小分类,有助于精确控制写入策略,提高处理效率,不同的写入策略可以针对不同的资源状况和文件特性进行优化,提高写入效率,通过合理分配线程和任务,减少资源竞争,提高整体性能;根据实际情况灵活调用策略,能够适应变化的工作负载,确保系统在高负载时仍能平稳运行。
[0261] 该实施例公开的方案通过智能分配和使用核心线程,提高文件写入的效率,缩短数据同步时间,通过合理的写入策略,降低系统因过载引发的崩溃风险,确保系统的高可用性,动态调整写入任务与核心线程的分配,确保系统资源的充分利用,避免资源闲置,通过有序处理与合理的策略,减少数据传输过程中的不一致性,提高数据完整性,自动化的策略调用减少了人工干预,提高了系统管理的便捷性和效率。
[0262] 综上所述,该方案通过精确的分类管理和灵活的策略调用,能够在多个方面提升文件写入的效率、稳定性和资源利用率,为接收端的数据同步提供可靠保障。
[0263] 本申请公开的适应多种硬件环境的文件同步方法,通过获取发送端和接收端的详细硬件信息,能够根据不同的硬件环境进行优化配置,减少因硬件差异引发的兼容性问题;预分析发送端信息后,能够自动确定适合的核心线程数和发送量,简化配置过程;根据待同步文件的总数据量,动态调整发送端的核心线程数,能够有效提升数据传输速度,避免性能瓶颈;通过创建与目标核心线程数相同数量的Socket发送线程,能够实现高并发数据传输,缩短文件同步时间;动态调整发送策略可以降低数据同步的延迟,从而减少数据在传输过程中出现不一致的可能性;根据实际发送数量和接收端的接收能力,自动选择合适的写入策略,确保数据的完整性和一致性;在获取的硬件信息基础上,系统能够选择合适的加密策略,以平衡性能与安全,降低加密过程对系统的负担;通过确保每个步骤都考虑到安全性,可以有效降低数据在传输过程中的泄露或篡改风险。该申请中的自动配置和动态调整策略降低了对人工干预的需求,减轻了运维人员的工作负担;通过实时监控和动态调整,能够更高效地利用发送端和接收端的资源,提高整体性能。
[0264] 同时,该方案可以在多种硬件环境下灵活应用,适用于不同类型的服务器、存储设备和网络设置,增强了系统的通用性,当系统进行硬件升级或替换时,自动配置和优化能力能够有效减少兼容性问题,确保平滑过渡。快速、稳定的文件同步过程能够提升用户满意度,减少业务中断时间,适合在大规模分布式系统中实施,能够高效支持大数据传输和多任务并行处理。
[0265] 综上所述,本申请的文件同步方法不仅解决了现有技术中的诸多问题,还在提高效率、安全性和兼容性的基础上,优化了整体的管理和维护流程,极大地增强了系统的可用性和可靠性。
[0266] 在现有技术中,硬件兼容性问题源于不同服务器、存储设备和网络硬件的差异,这会导致系统配置复杂、维护困难以及在硬件升级时的兼容性问题,本申请公开的方案通过获取发送端和接收端的详细硬件信息(如磁盘类型、存储信息、内存信息、CPU信息等),可以对每种硬件环境进行准确分析和评估,这样可以在文件同步前做出针对性配置,确保不同硬件环境下的兼容性;基于获取的硬件信息进行预分析,确定初始配置和单次发送量;通过动态调整策略,在不同的硬件环境中适配不同的配置和策略,从而减少硬件间的兼容性问题。
[0267] 对于现有技术中存在的分布式系统中的数据同步延迟导致数据不一致的问题,本申请公开的方案根据待同步文件的总数据量和动态调整策略,动态调整核心线程数,能够更好地控制同步速度和并发量,从而减少同步延迟;通过合理设置单次发送量和同步策略,可以减少传输过程中的数据丢失或损坏,动态调整线程数和发送策略也有助于优化同步过程,减少延迟导致的数据不一致问题。
[0268] 对于现有技术中存在的带宽限制、延迟和吞吐量是数据传输过程中的主要性能瓶颈,直接影响系统的实时性和整体性能等的问题,本申请公开的方案通过预分析发送端信息,确定适当的线程数和发送队列的单次发送量,有效利用带宽和处理能力,提升数据传输速率;根据总数据量和动态调整策略,动态调整核心线程数,以适应带宽和延迟的变化,优化数据传输性能;创建与目标核心线程数相同数量的Socket发送线程,以并发处理的方式提高数据传输速率,缓解带宽限制和延迟问题。
[0269] 本申请公开的方案通过预分析和动态调整策略,能够自动适应不同的硬件环境和负载情况,降低手动配置和维护的复杂性;在文件同步过程中,通过优化配置和同步策略,提升系统的自动化管理水平,减少人工干预,提高管理效率。本申请的文件同步方法通过动态调整线程数、合理配置发送量、根据硬件信息优化策略,能够有效解决现有技术中的兼容性问题、数据一致性问题、性能瓶颈、加密与安全性问题,以及管理和维护的复杂性。这种灵活且高效的同步方案提升了系统的整体性能、可靠性和安全性,使其在不同硬件环境下均能实现高效、稳定的文件同步。
[0270] 本申请第二方面公开了一种适应多种硬件环境的文件同步系统,包括:
[0271] 发送端信息获取模块,用于获取发送端信息,发送端信息包括发送端磁盘类型、发送端磁盘存储信息、发送端内存信息、发送端CPU信息;
[0272] 预分析模块,用于基于发送端信息进行预分析,确定发送端初始核心线程数、发送队列的单次发送量;
[0273] 动态调整模块,用于基于待同步文件的总数据量、预设动态调整策略,动态调整发送端初始核心线程数,获得发送端目标核心线程数;
[0274] 线程创建模块,用于基于发送端目标核心线程数创建相同数量的Socket发送线程,并基于Socket发送线程、单次发送量发送待同步文件至接收端;
[0275] 接收端信息获取模块,用于获取接收端信息,接收端信息包括接收端磁盘类型、接收端磁盘存储信息、接收端核心线程数、接收端CPU信息;
[0276] 接收端单次接收数量阈值获取模块,用于基于接收端信息获取接收端单次接收数量阈值;
[0277] 动态写入模块,用于基于接收端单次接收数量阈值、待同步文件的实际发送数量,调用对应的写入策略将待同步文件写入接收端对应的磁盘。
[0278] 本申请第三方面公开了一种适应多种硬件环境的文件发送方法,适用于多种硬件环境的文件同步中发送端的文件发送,包括:
[0279] 获取发送端信息,发送端信息包括发送端磁盘类型、发送端磁盘存储信息、发送端内存信息、发送端CPU信息;
[0280] 基于发送端信息进行预分析,确定发送端初始核心线程数、发送队列的单次发送量;
[0281] 基于待同步文件的总数据量、预设动态调整策略,动态调整发送端初始核心线程数,获得发送端目标核心线程数;
[0282] 基于发送端目标核心线程数创建相同数量的Socket发送线程,并基于Socket发送线程、单次发送量发送待同步文件至接收端。
[0283] 本申请第四方面公开了一种适应多种硬件环境的文件接收方法,适用于多种硬件环境的文件同步中接收端的文件接收,包括:
[0284] 获取接收端信息,接收端信息包括接收端磁盘类型、接收端磁盘存储信息、接收端核心线程数、接收端CPU信息;
[0285] 基于接收端信息获取接收端单次接收数量阈值;
[0286] 基于接收端单次接收数量阈值、待同步文件的实际发送数量,调用对应的写入策略将待同步文件写入接收端对应的磁盘。
[0287] 需要说明的是,本申请第一方面公开的适应多种硬件环境的文件同步方法中的具体方案均适用于本申请第二方面公开的适应多种硬件环境的文件同步系统、本申请第三方面公开的适应多种硬件环境的文件发送方法、本申请第四方面公开的适应多种硬件环境的文件接收方法,因此不再一一赘述。
[0288] 根据本公开实施例的计算机装置包括存储器和处理器。该存储器用于存储非暂时性计算机可读指令。具体地,存储器可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
[0289] 该处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制计算机装置中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器用于运行该存储器中存储的该计算机可读指令,使得该计算机装置执行前述的本公开各实施例的所述的适应多种硬件环境的文件同步方法,或者所述的适应多种硬件环境的文件发送方法,或者所述的适应多种硬件环境的文件接收方法全部或部分步骤。
[0290] 本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本公开的保护范围之内。
[0291] 如图10为本公开实施例提供的一种计算机装置的结构示意图。其示出了适于用来实现本公开实施例中的计算机装置的结构示意图。图10示出的计算机装置仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0292] 如图10所示,计算机装置可以包括处理器(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有计算机装置操作所需的各种程序和数据。处理器、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
[0293] 通常,以下装置可以连接至I/O接口:包括例如传感器或者视觉信息采集设备等的输入装置;包括例如显示屏等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许计算机装置与其他设备(比如边缘计算设备)进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的计算机装置,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0294] 特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理器执行时,执行本公开实施例的所述的适应多种硬件环境的文件同步方法,或者所述的适应多种硬件环境的文件发送方法,或者所述的适应多种硬件环境的文件接收方法的全部或部分步骤。
[0295] 有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
[0296] 根据本公开实施例的计算机可读存储介质,其上存储有非暂时性计算机可读指令。当该非暂时性计算机可读指令由处理器运行时,执行前述的本公开各实施例的所述的适应多种硬件环境的文件同步方法,或者所述的适应多种硬件环境的文件发送方法,或者所述的适应多种硬件环境的文件接收方法的全部或部分步骤。
[0297] 上述计算机可读存储介质包括但不限于:光存储介质(例如:CD-ROM和DVD)、磁光存储介质(例如:MO)、磁存储介质(例如:磁带或移动硬盘)、具有内置的可重写非易失性存储器的媒体(例如:存储卡)和具有内置ROM的媒体(例如:ROM盒)。
[0298] 有关本实施例的详细说明可以参考前述各实施例中的相应说明,在此不再赘述。
[0299] 以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
[0300] 在本公开中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
[0301] 另外,如在此使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
[0302] 还需要指出的是,在本公开的系统和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
[0303] 可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
[0304] 提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
[0305] 为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。