CN113342836A - 同步数据处理方法、装置、计算机设备及存储介质 - Google Patents

同步数据处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113342836A
CN113342836A CN202110698956.3A CN202110698956A CN113342836A CN 113342836 A CN113342836 A CN 113342836A CN 202110698956 A CN202110698956 A CN 202110698956A CN 113342836 A CN113342836 A CN 113342836A
Authority
CN
China
Prior art keywords
data
synchronized
processing
synchronization
lock
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
CN202110698956.3A
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN202110698956.3A priority Critical patent/CN113342836A/zh
Publication of CN113342836A publication Critical patent/CN113342836A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例属于大数据领域,涉及一种同步数据处理方法、装置、计算机设备及存储介质,所述方法包括:接收数据同步指令;根据数据同步指令,通过数据同步组件获取待同步数据,待同步数据来自数据源或者异常集群节点;将待同步数据以填充缓存行的方式加载到无锁循环缓冲区;通过预设的数据处理线程对无锁循环缓冲区中的待同步数据进行处理,完成同步数据处理。此外,本申请还涉及区块链技术,完成处理的待同步数据还可存储于区块链中。本申请提高了同步数据处理效率。

Description

同步数据处理方法、装置、计算机设备及存储介质
技术领域
本申请涉及大数据技术领域,尤其涉及一种同步数据处理方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术的发展,大数据相关的应用也越来越广泛。数据同步是大数据应用中很常见的一环,为了更好地对海量数据进行同步,出现了一些数据同步工具。
但是在实际应用中,由于数据源渠道复杂,数据同步工具有时难以直接从数据源同步数据,影响同步速度。而且,现有的数据同步工具在使用中均存在一些缺点,例如,数据同步工具仅能实现数据同步,功能单一,在使用已同步的数据时需要花费额外的时间进行数据处理;此外,现有的数据同步工具同步速度有限,在数据量较大时数据同步效率较低。
发明内容
本申请实施例的目的在于提出一种同步数据处理方法、装置、计算机设备及存储介质,以解决同步数据处理效率较低的问题。
为了解决上述技术问题,本申请实施例提供一种同步数据处理方法,采用了如下所述的技术方案:
接收数据同步指令;
根据所述数据同步指令,通过数据同步组件获取待同步数据,所述待同步数据来自数据源或者异常集群节点;
将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
为了解决上述技术问题,本申请实施例还提供一种同步数据处理装置,采用了如下所述的技术方案:
指令接收模块,用于接收数据同步指令;
数据获取模块,用于根据所述数据同步指令,通过数据同步组件获取待同步数据,其中,所述待同步数据来自数据源或者异常集群节点;
数据加载模块,用于将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
数据处理模块,用于通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
接收数据同步指令;
根据所述数据同步指令,通过数据同步组件获取待同步数据,所述待同步数据来自数据源或者异常集群节点;
将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
接收数据同步指令;
根据所述数据同步指令,通过数据同步组件获取待同步数据,所述待同步数据来自数据源或者异常集群节点;
将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
与现有技术相比,本申请实施例主要有以下有益效果:接收到数据同步指令后,可以通过多种数据同步组件从数据源获取待同步数据,兼容多种平台渠道和数据接收方式,保证了从各种数据源直接实现数据同步,此外,从异常集群节点获取待同步数据实现了各节点的协同工作;获取到的待同步数据以填充缓存行的方式加载到无锁循环缓冲区;并通过预设的若干个数据处理线程,按照预设的处理方式对无锁循环缓冲区中的待同步数据实现高效的一站式处理,使用填充缓存行和无锁循环缓冲区可以减小资源开销,提高并发处理效率,从而提高了同步数据处理效率。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的同步数据处理方法的一个实施例的流程图;
图3是根据本申请的同步数据处理装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104、数据提供服务器105和服务器106、107。网络104用以在终端设备101、102、103、数据提供服务器105和服务器106、107之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器106、107交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving PictureExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
数据提供服务器105可以是提供各种服务的服务器,能够产生或存储待同步数据,其中可以设置业务系统或数据库等。服务器106、107是服务器集群中的节点,可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。数据提供服务器105可以通过网络与服务器106、107交互。
需要说明的是,本申请实施例所提供的同步数据处理方法一般由服务器执行,相应地,同步数据处理装置一般设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的同步数据处理方法的一个实施例的流程图。所述的同步数据处理方法,包括以下步骤:
步骤S201,接收数据同步指令。
在本实施例中,同步数据处理方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式与终端进行通信。需要指出的是,上述无线连接方式可以包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
其中,数据同步指令可以是指示数据同步工具进行数据同步的指令。
具体地,数据同步工具设置于服务器中。数据同步工具可以根据接收到数据同步指令进行数据同步。数据同步指令可以是终端触发,由终端发送至服务器中的数据同步工具;也可以由服务器触发。
进一步的,上述步骤S201之前,同步数据处理方法还可以包括:根据数据源发送的数据同步请求,触发数据同步指令;或者,获取集群中各节点的工作状态信息;根据工作状态信息确定异常集群节点,异常集群节点包括过载节点和故障节点;根据异常集群节点生成数据同步指令。
其中,数据源可以产生待同步数据,例如,数据源可以是上游的业务系统,业务系统用于处理业务交易。工作状态信息是表征服务器集群中节点工作状况的信息。
具体地,数据源可以生成或发布数据,当生成或发布的数据需要同步时,数据源可以向服务器发送数据同步请求,服务器根据数据同步请求触发数据同步指令,数据同步工具根据数据同步指令开始进行数据同步。
服务器还可以定期从服务器集群中的各节点获取工作状态信息,工作状态信息表征了各节点的工作状态,例如,可以表征节点当前是否处于过载状态,或者节点是否处于异常,例如,当集群中某节点需要处理的待同步数据超过该节点的处理能力时,该节点处于过载状态;当集群中某节点上的数据同步工具出现功能缺陷时,该节点即处于异常状态。其中,处于过载状态或异常状态的节点将被确定为异常集群节点。
对于处于过载状态或异常状态的节点,需要将分配到这些节点的数据转移出来,以正常实现同步数据处理,服务器可以根据这些异常集群节点的节点标识,生成数据同步指令。
数据同步工具检测到触发的数据同步指令时,根据数据同步指令开始进行同步数据处理。
本实施例中,可以根据数据源的数据同步请求触发数据同步指令,也可以根据集群中个节点的工作状态信息触发数据同步指令,满足了多种应用场景。
步骤S202,根据数据同步指令,通过数据同步组件获取待同步数据,待同步数据来自数据源或者异常集群节点。
其中,数据同步组件可以是数据同步工具中从数据源或者异常集群节点获取待同步数据的功能组件。
具体地,待同步数据的来源环境具有多样性,例如可以是数据源,例如数据库、业务系统等,也可以是服务器集群中的异常集群节点。接收到数据同步指令后,可以根据待同步数据不同的来源场景,使用不同类型的数据同步组件来获取待同步数据。数据同步组件可以根据数据的来源场景进行适配性设计。
步骤S203,将待同步数据以填充缓存行的方式加载到无锁循环缓冲区。
其中,无锁循环缓冲区(RingQueue)是一个基于环形数据结构的有界数组,用于在多个线程间缓冲数据。数据同步工具可以将待同步数据加载到无锁循环缓冲区,在持续向无锁循环缓冲区写入数据时,写入的数据会在到达数组末尾时环绕至数组头部,展开新一轮的环绕。无锁循环缓冲区维护了三个变量:缓冲区内下一个可用数据对象的位置、下一个未读数据对象的位置和数组末尾的位置。在无锁循环缓冲区内,读取数据时无需将数据删除,数据将被保留直至被覆盖。处理器不需要每次都从主存加载无锁循环缓冲区中的下一个元素,当一个元素被加载到缓存行,该元素相邻的若干个元素被一同加载到同一个缓存行。
填充缓存行是一种数据缓存方式。数据在CPU(central processing unit,中央处理器)缓存中以缓存行的形式存储,缓存行通常为64字节,Java中long类型变量为8字节,一个缓存行可以存储8个long类型变量。当long型数组中的一个值被加载到缓存行时,另外七个值会被一同加载到缓存行。这种加载特性存在一个弊端:假如数组中的第一个位置(head)正在被生产者写入,第八个位置(tail)正在被消费者写入,生产者与消费者运行在不同内核的线程中,使用不同的缓存。当生产者更新了head,内存中head的值会被更新,内存中head值更新会使所有缓存了head值的缓存行失效。消费tail的消费者需要重新从内存中读取整个缓存行,消费过程被延缓。这种对缓存行的共享在并发场景下会影响数据处理效率,为此,本申请中的数据同步工具使用填充缓存行的方式,以空间换取时间,数据之间使用7个不被使用的long型变量填充。填充缓存行时,在缓存行的固定位置处写入待同步数据,其余位置可以填充固定值的long型变量。
进一步的,上述步骤S203可以包括:查询无锁循环缓冲区中的可用数据对象;将待同步数据以填充缓存行的方式加载到可用数据对象中。
具体地,无锁循环缓冲区的大小是创建的时候就固定的,会预先分配好内存。无锁循环缓冲区预先被划分为若干个区域,每个区域是一个数据对象。无锁循环缓冲区中每个位置都会提前确定好对应的数据对象(初始是一个空对象)。当前可以被数据同步组件修改或覆盖的数据对象是可用数据对象。
生产者(即数据同步组件)加载数据时,获取无锁循环缓冲区内的可用数据对象,然后以填充缓存行的方式将待同步数据加载到该数据对象中,从而避免因频繁地创建和销毁对象导致的对象回收,减少了GC(垃圾回收,Garbage Collection)操作所带来的性能开销,减少了垃圾回收的时间。
本申请中的数据同步工具未使用并发框架中常见的阻塞队列,以实现对CPU缓存的充分利用。使用队列时,队列的头、尾和大小这三个变量容易产生写争用,例如从队列中取出数据和移除数据,都是一种写操作。当多于一个线程执行写操作时,需要对队列加锁,引起用户态与内核态之间的切换,消耗大量系统资源,同时丢失缓存中的数据。
本实施例中,将待同步数据以填充缓存行的方式加载到无锁循环缓冲区的可用数据对象内,避免了使用阻塞队列,大大提高了数据处理效率。
步骤S204,通过预设的数据处理线程对无锁循环缓冲区中的待同步数据进行处理,完成同步数据处理。
其中,数据处理线程可以是数据同步工具中对待同步数据进行处理的线程。
具体地,数据同步工具中设置了多个数据处理线程Worker,不同的数据处理线程可以对待同步数据进行不同的处理。数据处理线程从无锁循环缓冲区中读取数据并进行数据处理,每个数据处理线程都维护了它需要访问的下一个数据对象的对象序号。数据处理线程相当于数据处理工具中的消费者,按照预设的顺序消费待同步数据。通过预设的数据处理线程对待同步数据进行处理,实现了待同步数据从同步到加工的一站式处理流程。
需要强调的是,为进一步保证上述完成处理的待同步数据的私密和安全性,上述完成处理的待同步数据还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本实施例中,接收到数据同步指令后,可以通过多种数据同步组件从数据源获取待同步数据,兼容多种平台渠道和数据接收方式,保证了从各种数据源直接实现数据同步,此外,从异常集群节点获取待同步数据实现了各节点的协同工作;获取到的待同步数据以填充缓存行的方式加载到无锁循环缓冲区;并通过预设的若干个数据处理线程,按照预设的处理方式对无锁循环缓冲区中的待同步数据实现高效的一站式处理,使用填充缓存行和无锁循环缓冲区可以减小资源开销,提高并发处理效率,从而提高了同步数据处理效率。
进一步的,上述步骤S202可以包括:
步骤S2021,从数据同步指令中获取数据来源标识。
具体地,数据来源标识可以是待同步数据的来源的标识,例如,待同步数据来自数据库时,数据来源标识可以是数据库的名称或地址;待同步数据来自上游的业务系统时,数据来源标识可以是业务系统的名称或地址;待同步数据来自服务器集群中的其他节点时,数据来源标识可以是节点标识或地址。数据同步指令中可以包括数据来源标识,服务器可以从数据同步指令中提取数据来源标识。
步骤S2022,根据数据来源标识,确定数据同步组件,数据同步组件包括数据库同步组件、中间件同步组件、接口同步组件和复合同步组件。
具体地,数据来源标识表明了待同步数据的来源,根据数据来源标识,可以确定需要使用的数据同步组件。
数据同步工具中的数据同步组件(Receiver)对接数据源或者服务器集群中的节点,负责抽取或接收待同步数据。数据同步组件有多种,包括数据库同步组件(DBReceiver)、中间件同步组件(MsgReceiver)、接口同步组件(ApiReceiver)和复合同步组件(Poly Receiver)。
其中,数据库同步组件用于对接数据库,可以实现大批量历史数据的同步;中间件同步组件用于对接消息中间件,消息中间件可以起到缓冲作用,实现削峰填谷、负载均衡;接口同步组件对外提供Api接口(Application Programming Interface,应用程序接口),接入方式简单,适合单条或少量数据的同步;复合同步组件混合了数据库同步组件、中间件同步组件和接口同步组件,兼容性较高,可以满足任何数据源的数据同步。对于数据同步工具,数据同步组件可以视作数据的生产者,因此复合同步组件在使用时需要进行排队加锁。复合同步组件外的数据同步组件通常以单生产者模式工作,避免了多生产者产生写争用。
步骤S2023,通过确定的数据同步组件获取待同步数据。
具体地,数据同步工具可以根据确定的数据同步组件从数据源或者异常集群节点中读取待同步数据,并将待同步数据加载至数据同步工具所在的节点。
本实施例中,根据数据来源标识确定数据同步组件,数据同步组件包括数据库同步组件、中间件同步组件、接口同步组件和复合同步组件,可以兼容多种平台渠道和数据接收方式。
进一步的,当待同步数据来自异常集群节点时,上述步骤S2023可以包括:确定异常集群节点的无锁循环缓冲区内的未读数据对象;从无锁循环缓冲区的尾部向前读取未读数据对象;通过数据同步组件获取读取到的未读数据对象中的待同步数据。
其中,未读数据对象可以是无锁循环缓冲区中,当前尚未被数据处理线程进行处理的数据对象。
具体地,当服务器集群中的节点处于高负载运转时,可以新增集群中的节点数,通过机器扩容缓解节点的工作压力。新增节点后,新的节点获取集群中其他节点的工作状态信息以确定过载节点,以便新增的节点从过载节点获取待同步数据,实现负载均衡;或者,根据工作状态信息确定故障节点,以从故障节点获取待同步数据,替代故障节点实现数据同步处理。
当从异常集群节点的数据同步工具的无锁循环缓冲区获取待同步数据时,可以先确定无锁循环缓冲区中的未读数据对象,从无锁循环缓冲区的尾部向前读取未读数据对象,通过数据同步组件将未读数据对象中的待同步数据同步到自己的无锁循环缓冲区中,从尾部向前读取未读数据对象可以避免不同数据同步工具之间产生数据争用。
在一个实施例中,一个节点上可以部署多个数据同步工具,同一个节点上的数据同步工具之间也可以进行数据的转移。在进行数据转移时,也是先确定无锁循环缓冲区中的未读数据对象,然后按照从尾部向前的顺序将未读数据对象中的待同步数据进行转移。
本实施例中,在不同节点之间转移待同步数据时,先确定无锁循环缓冲区中的未读数据对象,再从无锁循环缓冲区的尾部向前读取未读数据对象,避免不同数据同步工具之间产生数据争用,实现了未读数据对象中待同步数据的顺利转移。
进一步的,上述步骤S204可以包括:通过数据验证线程验证无锁循环缓冲区中,待同步数据的数字签名;当对数字签名验证通过时,通过去重线程确定待同步数据中的重复数据,并对重复数据进行去重处理;获取去重处理后待同步数据的数据标识;通过与数据标识所对应的数据标准化线程,对待同步数据进行标准化处理,得到标准数据;将标准数据发送至预设的数据应用线程,完成同步数据处理;或者,将标准数据进行存储,完成同步数据处理。
具体地,数据同步工具中,默认实现的数据处理线程包括数据验证线程(Interpreter)、日志输出线程(Logger)、去重线程(Presecutor)、持久存储线程(Flusher)、数据匹配线程(Allocator)和数据标准化线程(Creator)。
无锁循环缓冲区中的待同步数据具有数字签名,数据验证线程可以待同步数据的数字签名进行验证,以确定待同步数据的来源是否可靠,数据是否完整。
在一个实施例中,当对数字签名验证通过后,数据验证线程将待同步数据实例化为事件对象。数据同步工具可以运行于JVM(Java Virtual Machine,Java虚拟机),事件对象即为java对象。
当对数字签名验证通过时,通过去重线程对待同步数据进行幂等性校验,以确定待同步数据中的重复数据,并通过去重线程去除重复数据。
待同步数据中包括数据标识,数据标识用于标识数据,例如,标识数据的来源、产生数据的项目等。数据匹配线程可以获取去重处理后待同步数据的数据标识。
不同数据标识的待同步数据具有不同的数据处理逻辑,可以根据数据标识,确定对待同步数据进行标准化处理的数据标准化线程。数据匹配线程可以根据数据标识,将待同步数据分配至对应的数据标准化线程,数据标准化线程按照预设的数据处理逻辑对待同步数据进行标准化处理,例如对待同步数据进行ETL处理,包括数据清洗、抽取、聚集、计算和映射等操作,生成标准数据。
在一个实施例中,数据同步工具提供前端配置页面,可以根据数据类型、数据标识和数据用途等要素确定待同步数据对应的数据标准化线程,实现线上修改配置。
生成标准数据后,可以将标准数据发送至预设的数据应用线程,由数据应用线程对标准数据进行实际应用。例如,当待同步数据用于机器学习时,数据处理线程还可以包括数据打包线程(Wrapper)和数据发送线程(Driver),数据打包线程用于将标准数据批量打包,然后将打包后的标准数据拆分为训练数据和测试数据。然后由数据发送线程将训练数据和测试数据上传至数据应用线程(机器学习模型)进行机器学习。此外,还可以对标准数据进行存储。
数据处理线程中的日志输出线程可以生成数据处理日志,数据处理日志包括数据标识、数据处理开始时间、数据处理结束时间、同步时间、数字签名、数据类型、数据源标识、数据用途等信息。
数据同步工具可以通过线程管理器Reference管理数据处理线程处理待同步数据时的依赖关系,告知数据处理线程当前可以访问数据对象的最大序号,当数据处理线程的下一个可访问序号大于线程管理器给出的序号时,数据处理线程进入等待,直到收到线程管理器通知新增的可访问的数据对象。
本实施例中,通过预设的数据处理线程自动对待同步数据进行一站式处理,包括验证、去重、标准化、发送和存储等操作,提高了待同步数据的处理效率。
进一步的,上述当对数字签名验证通过时,通过去重线程确定待同步数据中的重复数据,并对重复数据进行去重处理的步骤之后,还可以包括:通过持久存储线程获取去重处理后待同步数据的同步时间;根据同步时间确定待同步数据的硬盘写入顺序;按照硬盘写入顺序将待同步数据持久化到硬盘,以完成数据备份。
具体地,本申请中的数据同步工具基于内存运行,使用基于内存的模型需要解决服务重启、服务崩溃、服务器宕机等问题。通过“事件”概念可以解决上述问题,所有被数据同步工具处理的事件都被持久化保存起来,从而通过事件重演获得原本的处理状态。
持久存储线程获取待同步数据的同步时间,同步时间可以是待同步数据被同步到数据同步工具的时间,可以按照时间的先后顺序对待同步数据的事件对象进行排序,得到硬盘写入顺序,然后按照硬盘写入顺序将待同步数据的事件对象持久化到硬盘中。持久化时,事件是顺序写入,在读取时可以进行连续访问,连续访问硬盘时其效率与内存读取速度几乎等同,从而保证了事件重演的速度。
数据同步工具可以运行于服务器集群中。数据同步工具按照一定频率将事件快照写入硬盘中,实现准实时备份。硬盘中的备份会在集群中同步,防止单点故障。
考虑到服务重启场景占据绝大多数情况,为了应对服务重启,利用脚本监听JVM的正常关闭。通过Runtime包addShutdownHook向JVM注册关闭钩子,当JVM正常关闭时,通过Hook线程对Datapush内存现场记录快照,将内存中未完成的事件快照以事件流的形式写入硬盘。服务重启时通过拓展SpringBoot提供的ApplicationRunner接口,从硬盘读取事件流,向内存中重演事件。
本实施例中,根据同步时间将待同步数据顺序写入硬盘,实现了数据备份,避免了服务器出错导致数据丢失的情况,同时顺序写入保证了对硬盘的读取速度。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种同步数据处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的同步数据处理装置300包括:指令接收模块301、数据获取模块302、数据加载模块303以及数据处理模块304,其中:
指令接收模块301,用于接收数据同步指令。
数据获取模块302,用于根据数据同步指令,通过数据同步组件获取待同步数据,其中,待同步数据来自数据源或者异常集群节点。
数据加载模块303,用于将待同步数据以填充缓存行的方式加载到无锁循环缓冲区。
数据处理模块304,用于通过预设的数据处理线程对无锁循环缓冲区中的待同步数据进行处理,完成同步数据处理。
本实施例中,接收到数据同步指令后,可以通过多种数据同步组件从数据源获取待同步数据,兼容多种平台渠道和数据接收方式,保证了从各种数据源直接实现数据同步,此外,从异常集群节点获取待同步数据实现了各节点的协同工作;获取到的待同步数据以填充缓存行的方式加载到无锁循环缓冲区;并通过预设的若干个数据处理线程,按照预设的处理方式对无锁循环缓冲区中的待同步数据实现高效的一站式处理,使用填充缓存行和无锁循环缓冲区可以减小资源开销,提高并发处理效率,从而提高了同步数据处理效率。
在本实施例的一些可选的实现方式中,上述同步数据处理装置300还可以包括:请求触发模块、信息获取模块、异常确定模块以及指令生成模块,其中:
请求触发模块,用于根据数据源发送的数据同步请求,触发数据同步指令。
信息获取模块,用于获取集群中各节点的工作状态信息。
异常确定模块,用于根据工作状态信息确定异常集群节点,异常集群节点包括过载节点和故障节点。
指令生成模块,用于根据异常集群节点生成数据同步指令。
本实施例中,可以根据数据源的数据同步请求触发数据同步指令,也可以根据集群中个节点的工作状态信息触发数据同步指令,满足了多种应用场景。
在本实施例的一些可选的实现方式中,上述数据获取模块302可以包括:来源获取子模块、组件确定子模块以及数据获取子模块,其中:
来源获取子模块,用于从数据同步指令中获取数据来源标识。
组件确定子模块,用于根据数据来源标识,确定数据同步组件,数据同步组件包括数据库同步组件、中间件同步组件、接口同步组件和复合同步组件。
数据获取子模块,用于通过确定的数据同步组件获取待同步数据。
本实施例中,根据数据来源标识确定数据同步组件,数据同步组件包括数据库同步组件、中间件同步组件、接口同步组件和复合同步组件,可以兼容多种平台渠道和数据接收方式。
在本实施例的一些可选的实现方式中,当待同步数据来自异常集群节点时,数据获取子模块可以包括:对象确定单元、对象读取单元以及数据读取单元,其中:
对象确定单元,用于确定异常集群节点的无锁循环缓冲区内的未读数据对象。
对象读取单元,用于从无锁循环缓冲区的尾部向前读取未读数据对象。
数据读取单元,用于通过数据同步组件获取读取到的未读数据对象中的待同步数据。
本实施例中,在不同节点之间转移待同步数据时,先确定无锁循环缓冲区中的未读数据对象,再从无锁循环缓冲区的尾部向前读取未读数据对象,避免不同数据同步工具之间产生数据争用,实现了未读数据对象中待同步数据的顺利转移。
在本实施例的一些可选的实现方式中,数据加载模块303可以包括:对象查询子模块以及数据加载子模块,其中:
对象查询子模块,用于查询无锁循环缓冲区中的可用数据对象。
数据加载子模块,用于将待同步数据以填充缓存行的方式加载到可用数据对象中。
本实施例中,将待同步数据以填充缓存行的方式加载到无锁循环缓冲区的可用数据对象内,避免了使用阻塞队列,大大提高了数据处理效率。
在本实施例的一些可选的实现方式中,数据处理模块304可以包括:签名验证子模块、重复确定子模块、标识获取子模块、标准处理子模块、数据发送子模块以及数据存储子模块,其中:
签名验证子模块,用于通过数据验证线程验证无锁循环缓冲区中,待同步数据的数字签名。
重复确定子模块,用于当对数字签名验证通过时,通过去重线程确定待同步数据中的重复数据,并对重复数据进行去重处理。
标识获取子模块,用于获取去重处理后待同步数据的数据标识。
标准处理子模块,用于通过与数据标识所对应的数据标准化线程,对待同步数据进行标准化处理,得到标准数据。
数据发送子模块,用于将标准数据发送至预设的数据应用线程,完成同步数据处理。
数据存储子模块,用于将标准数据进行存储,完成同步数据处理。
本实施例中,通过预设的数据处理线程自动对待同步数据进行一站式处理,包括验证、去重、标准化、发送和存储等操作,提高了待同步数据的处理效率。
在本实施例的一些可选的实现方式中,上述数据处理模块304还可以包括数据持久子模块,数据持久子模块可以包括:时间获取单元、顺序确定单元以及数据持久单元,其中:
时间获取单元,用于通过持久存储线程获取去重处理后待同步数据的同步时间。
顺序确定单元,用于根据同步时间确定待同步数据的硬盘写入顺序。
数据持久单元,用于按照硬盘写入顺序将待同步数据持久化到硬盘,以完成数据备份。
本实施例中,根据同步时间将待同步数据顺序写入硬盘,实现了数据备份,避免了服务器出错导致数据丢失的情况,同时顺序写入保证了对硬盘的读取速度。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过系统总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作系统和各类应用软件,例如同步数据处理方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述同步数据处理方法的计算机可读指令。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本实施例中提供的计算机设备可以执行上述同步数据处理方法。此处同步数据处理方法可以是上述各个实施例的同步数据处理方法。
本实施例中,接收到数据同步指令后,可以通过多种数据同步组件从数据源获取待同步数据,兼容多种平台渠道和数据接收方式,保证了从各种数据源直接实现数据同步,此外,从异常集群节点获取待同步数据实现了各节点的协同工作;获取到的待同步数据以填充缓存行的方式加载到无锁循环缓冲区;并通过预设的若干个数据处理线程,按照预设的处理方式对无锁循环缓冲区中的待同步数据实现高效的一站式处理,使用填充缓存行和无锁循环缓冲区可以减小资源开销,提高并发处理效率,从而提高了同步数据处理效率。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的同步数据处理方法的步骤。
本实施例中,接收到数据同步指令后,可以通过多种数据同步组件从数据源获取待同步数据,兼容多种平台渠道和数据接收方式,保证了从各种数据源直接实现数据同步,此外,从异常集群节点获取待同步数据实现了各节点的协同工作;获取到的待同步数据以填充缓存行的方式加载到无锁循环缓冲区;并通过预设的若干个数据处理线程,按照预设的处理方式对无锁循环缓冲区中的待同步数据实现高效的一站式处理,使用填充缓存行和无锁循环缓冲区可以减小资源开销,提高并发处理效率,从而提高了同步数据处理效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种同步数据处理方法,其特征在于,包括下述步骤:
接收数据同步指令;
根据所述数据同步指令,通过数据同步组件获取待同步数据,所述待同步数据来自数据源或者异常集群节点;
将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
2.根据权利要求1所述的同步数据处理方法,其特征在于,在所述接收数据同步指令的步骤之前,还包括:
根据数据源发送的数据同步请求,触发数据同步指令;或者,
获取集群中各节点的工作状态信息;
根据所述工作状态信息确定异常集群节点,所述异常集群节点包括过载节点和故障节点;
根据所述异常集群节点生成数据同步指令。
3.根据权利要求1所述的同步数据处理方法,其特征在于,所述根据所述数据同步指令,通过数据同步组件获取待同步数据的步骤包括:
从所述数据同步指令中获取数据来源标识;
根据所述数据来源标识,确定数据同步组件,所述数据同步组件包括数据库同步组件、中间件同步组件、接口同步组件和复合同步组件;
通过确定的数据同步组件获取待同步数据。
4.根据权利要求3所述的同步数据处理方法,其特征在于,当所述待同步数据来自异常集群节点时,所述通过确定的数据同步组件获取待同步数据的步骤包括:
确定异常集群节点的无锁循环缓冲区内的未读数据对象;
从所述无锁循环缓冲区的尾部向前读取未读数据对象;
通过所述数据同步组件获取读取到的未读数据对象中的待同步数据。
5.根据权利要求1所述的同步数据处理方法,其特征在于,所述将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区的步骤包括:
查询无锁循环缓冲区中的可用数据对象;
将所述待同步数据以填充缓存行的方式加载到所述可用数据对象中。
6.根据权利要求1所述的同步数据处理方法,其特征在于,所述通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理的步骤包括:
通过数据验证线程验证所述无锁循环缓冲区中,所述待同步数据的数字签名;
当对所述数字签名验证通过时,通过去重线程确定所述待同步数据中的重复数据,并对所述重复数据进行去重处理;
获取去重处理后所述待同步数据的数据标识;
通过与所述数据标识所对应的数据标准化线程,对所述待同步数据进行标准化处理,得到标准数据;
将所述标准数据发送至预设的数据应用线程,完成同步数据处理;或者,
将所述标准数据进行存储,完成同步数据处理。
7.根据权利要求6所述的同步数据处理方法,其特征在于,所述当对所述数字签名验证通过时,通过去重线程确定所述待同步数据中的重复数据,并对所述重复数据进行去重处理的步骤之后,还包括:
通过持久存储线程获取去重处理后所述待同步数据的同步时间;
根据所述同步时间确定所述待同步数据的硬盘写入顺序;
按照所述硬盘写入顺序将所述待同步数据持久化到硬盘,以完成数据备份。
8.一种同步数据处理装置,其特征在于,包括:
指令接收模块,用于接收数据同步指令;
数据获取模块,用于根据所述数据同步指令,通过数据同步组件获取待同步数据,其中,所述待同步数据来自数据源或者异常集群节点;
数据加载模块,用于将所述待同步数据以填充缓存行的方式加载到无锁循环缓冲区;
数据处理模块,用于通过预设的数据处理线程对所述无锁循环缓冲区中的所述待同步数据进行处理,完成同步数据处理。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的同步数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的同步数据处理方法的步骤。
CN202110698956.3A 2021-06-23 2021-06-23 同步数据处理方法、装置、计算机设备及存储介质 Pending CN113342836A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110698956.3A CN113342836A (zh) 2021-06-23 2021-06-23 同步数据处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110698956.3A CN113342836A (zh) 2021-06-23 2021-06-23 同步数据处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN113342836A true CN113342836A (zh) 2021-09-03

Family

ID=77478384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110698956.3A Pending CN113342836A (zh) 2021-06-23 2021-06-23 同步数据处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113342836A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115223578A (zh) * 2022-09-21 2022-10-21 浙江地芯引力科技有限公司 一种音频信号同步方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100332755A1 (en) * 2009-06-26 2010-12-30 Tian Bu Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system
CN104077113A (zh) * 2014-07-10 2014-10-01 中船重工(武汉)凌久电子有限责任公司 一种无锁并发消息处理机制的实现方法
CN107368374A (zh) * 2017-07-26 2017-11-21 广州路派电子科技有限公司 用于嵌入式系统基于同步机制下的环形数据缓冲实现方法
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质
CN112598517A (zh) * 2020-12-24 2021-04-02 临沂市新商网络技术有限公司 面向大规模并发请求的电子商务交易撮合方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100332755A1 (en) * 2009-06-26 2010-12-30 Tian Bu Method and apparatus for using a shared ring buffer to provide thread synchronization in a multi-core processor system
CN104077113A (zh) * 2014-07-10 2014-10-01 中船重工(武汉)凌久电子有限责任公司 一种无锁并发消息处理机制的实现方法
CN107368374A (zh) * 2017-07-26 2017-11-21 广州路派电子科技有限公司 用于嵌入式系统基于同步机制下的环形数据缓冲实现方法
CN111427859A (zh) * 2020-03-25 2020-07-17 京东数字科技控股有限公司 一种消息处理方法、装置、电子设备及存储介质
CN112598517A (zh) * 2020-12-24 2021-04-02 临沂市新商网络技术有限公司 面向大规模并发请求的电子商务交易撮合方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115223578A (zh) * 2022-09-21 2022-10-21 浙江地芯引力科技有限公司 一种音频信号同步方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
US11100244B2 (en) File packaging and unpackaging methods, apparatuses, and network devices
US9705730B1 (en) Cloud storage using Merkle trees
CN110389935B (zh) 一种启动小程序的方法、设备和计算机存储介质
CN109213462B (zh) Android横竖屏数据同步方法、装置、终端及可读介质
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN112199442A (zh) 分布式批量下载文件方法、装置、计算机设备及存储介质
CN112559476B (zh) 一种用于提高目标系统性能的日志存储方法及其相关设备
CN113254445A (zh) 实时数据存储方法、装置、计算机设备及存储介质
CN100378663C (zh) 将应用程序动态下载到用户识别模块的方法、系统及模块
CN113010542A (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN111104258A (zh) MongoDB数据库的备份方法、装置及电子设备
CN110908837A (zh) 应用程序异常处理方法、装置、电子设备及存储介质
CN113791735A (zh) 视频数据存储方法、装置、计算机设备及存储介质
CN109101323A (zh) 虚拟机运行状态下基于qcow2格式的快照实现方法
CN115455058A (zh) 缓存数据的处理方法、装置、计算机设备及存储介质
CN113342836A (zh) 同步数据处理方法、装置、计算机设备及存储介质
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN114490881A (zh) 同步数据处理方法、装置、设备及存储介质
CN112559131A (zh) 更新容器镜像的方法、装置、设备及计算机可读存储介质
CN117271122A (zh) 基于cpu和gpu分离的任务处理方法、装置、设备及存储介质
CN111897880A (zh) 数据库同步方法、装置、终端设备以及存储介质
CN112231409B (zh) 数据库同步的初始化装载方法、装置、设备和存储介质
CN113656044B (zh) 安卓安装包压缩方法、装置、计算机设备及存储介质
CN115495020A (zh) 文件处理方法、装置、电子设备和可读存储介质
CN114416885A (zh) 基于drbd的数据同步方法、装置、计算机设备及存储介质

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