CN115017233A - 一种数据同步方法、装置、电子设备及介质 - Google Patents
一种数据同步方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN115017233A CN115017233A CN202210721592.0A CN202210721592A CN115017233A CN 115017233 A CN115017233 A CN 115017233A CN 202210721592 A CN202210721592 A CN 202210721592A CN 115017233 A CN115017233 A CN 115017233A
- Authority
- CN
- China
- Prior art keywords
- data
- synchronization
- target
- level
- full
- 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
Images
Classifications
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/23—Updating
- G06F16/235—Update request formulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种数据同步方法、装置、电子设备及介质,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述方法包括:任一服务节点在接收到针对目标数据的同步触发信息后,根据同步触发信息的类型,确定待同步的当前层级数据标识,获取当前层级数据标识对应的当前层级目标数据;根据当前层级目标数据,确定当前层级数据标识的下一级数据标识,并将下一级数据标识发送给所述分发节点;分发节点根据所述下一级数据标识确定同步任务,并将同步任务分发至多个服务节点;多个服务节点根据接收到的同步任务确定下一级数据标识,获取下一级目标数据,从而使得每一个服务节点都能够参与到数据的同步中,提高数据同步的速度。
Description
技术领域
本申请涉及数据处理领域,具体而言,涉及一种数据同步方法、装置、电子设备及介质。
背景技术
对于应用开发商来说,想要在企业微信、钉钉等业务管理平台上打造一个完善的***,就离不开企业微信、钉钉等业务管理平台的数据支持,那么数据的准确性就是开发商需要优先保证的。
由于在进行***部署时,客户是否存在既有业务管理平台的数据是不确定的,为了能够提供稳定服务,***首先需要有基于业务管理平台进行数据全量同步的能力。在后续的数据同步中,为了保证性能以及资源的合理利用,***需要具备通过基于业务管理平台回调,完成数据增量同步的能力。
在应用进行全量数据同步的过程中,下游业务功能难免会收到影响,如果全量同步数据所需耗时过久,就会导致业务受阻,因此,如何在有限的资源下,尽快的完成对业务管理平台数据的全量同步、以及保证数据的准确性,就成为了亟待解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据同步方法,通过事件分发的方式对同步任务进行分治,让集群中的每一个服务节点都能够参与到数据的同步中,提高数据同步的速度。
本申请实施例提供的一种数据同步方法,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述方法包括以下步骤:
所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
在一些实施例中,所述的数据同步方法中,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,包括:
当所述同步触发信息为终端发送的全量数据更新请求时,根据预先配置的目标数据的数据层级结构,确定待同步的当前层级数据标识;
当所述同步触发信息为分发节点发送的同步任务时,从所述同步任务中提取出待同步的当前层级数据标识。
在一些实施例中,所述的数据同步方法中,将所述下一级数据标识发送给所述分发节点,包括:
当下一级数据标识对应多种类型的下一级目标数据时,将所述下一级数据标识分别发送至所述分发节点的预先配置的对应类型的消息队列中;
所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点,包括:
所述分发节点根据每种类型的消息队列,确定每种类型的同步任务,并根据同步任务生成的顺序依次将每种类型的同步任务分发至服务节点。
在一些实施例中,所述的数据同步方法还包括以下步骤:
所述同步平台响应接收到全量数据更新请求,创建全量更新锁,以在所述全量更新锁存在时,停止处理接收到的增量数据更新事件;
所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件。
在一些实施例中,所述的数据同步方法中,所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件,包括:
响应释放所述全量更新锁,同步平台的每个服务节点根据记录的增量数据更新事件的状态标识,确定该服务节点中处于未处理状态增量数据更新事件;其中,所述状态标识是根据该服务节点接收到增量数据更新事件时,根据是否存在全量更新锁为所述增量数据更新事件添加的;
所述每个服务节点获取目标服务器中增量数据更新事件对应的数据,以完成全量数据同步期间的增量数据更新事件。
在一些实施例中,所述的数据同步方法中,所述同步平台的服务节点接收到的增量数据更新事件,是通过以下方法获取的:
所述同步平台的目标服务节点接收到目标服务器推送的增量数据更新事件;
所述同步平台的目标服务节点根据接收到的增量数据更新事件发送至分发节点,以使所述分发节点将所述增量数据更新事件重新分发至同步平台中的任一服务节点,以使每个服务节点中的增量数据更新事件数量均衡。
在一些实施例中,所述的数据同步方法中,所述目标数据为业务管理平台的目标服务器中储存的、目标企业的目标数据。
在一些实施例中,还提供一种数据同步装置,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述装置包括:
第一获取模块,用于在所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
发送模块,用于使获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
分发模块,用于使所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
第二获取模块,用于使所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
在一些实施例中,还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行所述的数据同步方法的步骤。
在一些实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的数据同步方法的步骤。
本申请实施例提供一种数据同步方法,将全量同步任务进行拆分,拆分为多个细粒度的同步块,并分发到集群中的多个服务节点上,通过事件分发的方式对同步任务进行分治,使得多个服务节点同时进行数据全量同步任务,让整个集群能够协同完成全量同步任务,解决了现有方案中同步任务只能由单台节点完成的问题,合理的利用有限的资源,加快了全量数据同步的速度。
进一步的,在全量数据同步开始时,设置全量同步锁,停止对增量数据同步的处理,并在全量数据同步结束后,通过对企业微信的接口回调进行梳理,提供了回放历史事件,准确更新增量数据的能力,保证了全量同步与增量同步的数据准确性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例中所述数据同步方法的方法流程图;
图2示出了本申请实施例的所述同步平台的结构示意图;
图3示出了本申请实施例所述企业微信的全量数据同步的流程示意图;
图4示出了本申请实施例中所述另一种数据同步方法的方法流程图;
图5示出了本申请实施例中所述同步平台的服务节点接收到的增量数据更新事件的方法流程图;
图6示出了本申请实施例所述一种数据同步装置的结构示意图;
图7示出了本申请实施例所述一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
对于应用开发商来说,想要在企业微信、钉钉等业务管理平台上打造一个完善的***,就离不开企业微信、钉钉等业务管理平台的数据支持,那么数据的准确性就是开发商需要优先保证的。
以企业微信为例,企业微信当前提供了批量获取指定范围内通讯录、客户联系等数据的接口,以及通过接口回调的方式,提供了通讯录、客户联系数据的增量同步能力。
由于在进行***部署时,客户是否存在企业微信的数据是不确定的,为了能够提供稳定服务,***首先需要有基于企业微信进行数据全量同步的能力。在后续的数据同步中,为了保证性能以及资源的合理利用,***需要具备通过基于企业微信回调,完成数据增量同步的能力。
在应用进行全量数据同步的过程中,下游业务功能难免会收到影响,如果全量同步数据所需耗时过久,就会导致业务受阻。但是现有的数据全量同步的过程如下:当应用开发商的同步平台中触发全量同步请求后,由网关将请求路由至一台机器上,之后会在这台机器上调用企业微信接口,拉取企业微信数据并与本地数据进行比对,完成数据的全量同步。也就是说,当触发全量同步请求后,针对部门员工信息、客户信息、客户群信息等类型的信息,都是一次性获取全部信息。具体来说,当部门员工全量更新开始后,一次性获取并更新企业组织架构,并按照组织架构的部门获取员工详情信息;当员工信息全量同步开始后,一次性获取***内员工列表,并通过员工列表,获取所有客户列表(仅ID),再根据客户ID,获取客户详情,更新客户信息;当客户群信息全量同步开始后,一次性获取***内员工列表,通过员工列表,获取所有客户群列表,再根据客户群列表,获取客户群详情并更新。整个过程最终只会有一台机器(所述机器又可称之为服务器、服务、节点、服务节点)参与到全量同步中,导致全量同步的性能受到单台机器性能瓶颈影响严重,效率难以提升。对于进行全量同步的服务来说,资源消耗多,压力大,同步会出现风险。
因此,如何在有限的资源下,尽快的完成对业务管理平台数据的全量同步、以及保证数据的准确性,就成为了亟待解决的问题。
基于此,本申请实施例提供一种数据同步方法,将全量同步任务进行拆分,拆分为多个细粒度的同步块,并分发到集群中的多个服务节点上,通过事件分发的方式对同步任务进行分治,使得多个服务节点同时进行数据全量同步任务,让整个集群能够协同完成全量同步任务,解决了现有方案中同步任务只能由单台节点完成的问题,合理的利用有限的资源,加快了全量数据同步的速度。
请参照图1,图1示出了本申请实施例中所述数据同步方法的方法流程图;具体的,所述数据同步方法,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述方法包括以下步骤:
S101、所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
S102、获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
S103、所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
S104、所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
请参照图2,图2示出了本申请实施例的所述同步平台的结构示意图。所述同步平台包括多个服务节点201和分发节点202,其中的一个服务节点通过网关203与终端204通讯连接;每个服务节点201与分发节点202通讯连接;每个服务节点201均与目标服务器205通讯连接。
其中,所述目标服务器为业务管理平台的服务器,所述业务管理平台用于管理企业业务。示例性的,所述业务管理平台包括钉钉、企业微信等,所述分发节点采用Kafka。
在所述步骤S101中,所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据。
具体的,所述根据所述同步触发信息的类型,确定待同步的当前层级数据标识,包括:
当所述同步触发信息为终端发送的全量数据更新请求时,根据预先配置的目标数据的数据层级结构,确定待同步的当前层级数据标识;
当所述同步触发信息为分发节点发送的同步任务时,从所述同步任务中提取出待同步的当前层级数据标识。
也就是说,所述同步触发信息包括两种类型:终端发送的全量数据更新请求或者分发节点发送的任务。这两种不同类型的同步触发信息在整个同步任务的不同阶段。
终端发送的全量数据更新请求,用于触发全量数据同步这一整体的同步任务。在触发全量数据同步这一整体的同步任务后,所述同步平台创建全量更新版本号。
这里,与终端通讯连接的服务节点称之为第一个服务节点,以便于技术方案的说明,所述同步平台中的第一个服务节点接收到终端发送的全量数据更新请求,则确定目标数据的数据层级结构为最高层级,并确定待同步的当前层级数据标识。
本申请实施例中,所述目标数据为业务管理平台的目标服务器中储存的、目标企业的目标数据。所述预先配置的目标数据的数据层级结构是根据目标企业的业务架构确定的。以企业微信为例,所述企业的业务架构包括部门、部门员工、部门员工添加的客户、部门员工管理的微信群。
示例性的,终端发送的全量数据更新请求触发全量数据同步这一整体的同步任务后,确定数据层级结构为部门级别,并确定当前层级数据标识为“部门标识”,调用企业微信接口拉取企微后台的该企业的组织架构;例如该企业的组织架构为销售部、业务部、工程部、生产部、品质部、管理部。
在一些实施例中,第一个服务节点接收到全量数据更新请求,并不直接调用企业微信接口拉取企微后台的该企业的组织架构;而是进行以下步骤:第一个服务节点发送全量数据更新消息至Kafka平台,Kafka平台将获取企业的组织架构的同步任务分发至任一个服务节点,接收到获取企业的组织架构的同步任务的服务节点,调用企业微信接口拉取企微后台的该企业的组织架构。
本申请实施例中,调用企业微信接口拉取企微后台的该企业的部门架构后,所述同步平台开启异步线程定时检测全量更新状态;并且,所述同步平台以最新版本号写入组织架构至本地库,并清理旧版本组织架构的脏数据。
在所述步骤S102中,获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点。
示例性的,当第一个服务节点接收到企业的组织架构后,遍历组织架构各个部门ID,并将各个部门ID作为下一层级数据标识,以消息的形式发送至Kafka,通过Kafka将获取每个部门ID下的部门员工列表事件分发至每个服务节点,即所述步骤S103所述的,所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点。
也就是说,根据当前数据层级,可以将下一个层级数据划分为若干个数据块,每一个数据块作为一个同步任务,并通过分发节点将所述同步任务分发至各个服务节点,使得多个服务节点同时获取该层级数据的多个数据块,提高同步效率。
这里,将所述同步任务分发至所述多个服务节点,要保证每个服务节点的同步任务数量均衡。
示例性的,当所述服务节点有10个时,将获取销售部员工列表任务、业务部员工列表任务、工程部员工列表任务、生产部员工列表任务、品质员工列表任务部、管理部员工列表任务分别分发至服务节点,例如分别分发至第一个服务节点—第六个服务节点。
所述步骤S104中,所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
这里,也就是步骤S101中所说的,同步触发信息为分发节点发送的同步任务。
示例性的,第六个服务节点接收到获取销售部员工列表的同步任务后,调用企业微信接口拉取销售部下员工列表信息;随后,第六个服务节点遍历销售部下员工ID,并将销售部员工ID作为下一级数据标识,以消息的形式发送至Kafka,并通过Kafka将获取下一层级目标数据的任务分发至各个服务节点。
在所述步骤S104中,若一个服务节点接收到多个同步任务,可以并行处理或串行处理。
至此,本申请实施例所述数据同步方法,每个服务节点根据接收到的同步触发信息,确定出当前层级的数据标识,并根据当前层级的数据标识从目标服务器中拉起当前层级的数据,例如当前层级为获取企业组织架构,则从目标服务器中拉取企业组织架构信息,也即企业各个部门的信息;在获取当前层级的数据后,利用当前层级中数据的粒度,将当前层级数据对应的下一级数据划分为更细粒度的同步块,并将同步块分发到每个服务节点,使得每个服务节点均能从目标服务器中拉取同步块的目标数据;例如当获取企业各个部门的信息后,即根据将每个部门作为划分粒度,将每个部门下的员工列表作为一个同步块,并将同步块分发到每个服务节点,使得每个服务节点均能从目标服务器中拉取至少一个部门的员工列表。
也就是说,本申请实施例中,首先将目标数据,按照层级结构划分为多个层级,这是目标数据最粗粒度的同步块;上一个层级数据中可以提取出一个数据标识,用来区分下一层级的数据;在进行全量数据同步时,首先是按照数据层级,来逐层进行数据同步;其次,对于最高层级之外的其他层级,每个层级再划分成若干个同步块,获取更细粒度的数据同步块,再使每个服务节点拉取更细粒度的同步块的数据。
这里,在所述步骤S104执行完毕后,每个服务节点判断根据接收到的数据,判断是否存在下一级数据,若存在,则将该服务节点接收到的目标数据作为步骤S101中获取的当前层级目标数据,重复步骤S102-步骤S104。
本申请实施例中,获取员工列表信息后,存在下一层级数据,因此,将所述员工列表信息步骤S101中获取的当前层级目标数据,重复步骤S102-步骤S104。
具体的,本申请实施例表中,本申请实施例中,获取员工列表信息后,下一级目标数据分为三种类型:员工详情数据、员工管理的客户数据、员工管理的客户群数据。
基于此,本申请实施例所述的数据同步方法,将所述下一级数据标识发送给所述分发节点,包括:
当下一级数据标识对应多种类型的下一级目标数据时,将所述下一级数据标识分别发送至所述分发节点的预先配置的对应类型的消息队列中;
所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点,包括:
所述分发节点根据每种类型的消息队列,确定每种类型的同步任务,并根据同步任务生成的顺序依次将每种类型的同步任务分发至服务节点。
也就是说,分别将员工ID以消息的形式发送至Kafka员工详情、员工管理的客户列表、员工管理的群列表这第三个队列中,Kafka将获取员工详情、获取员工客户数据、获取客户群数据的同步任务,分别分发至每个服务节点。其中,获取一个员工ID对应的员工详情,即为一个获取员工详情的同步任务;获取一个员工ID对应的员工客户数据,即为一个获取员工客户数据的同步任务;获取一个员工ID对应的客户群数据,即为一个获取客户群数据的同步任务。
以下分别说明每种类别的同步任务的数据获取流程。
服务节点接收到Kafka平台分发的获取员工详情的同步任务后,调用企业微信接口获取员工详情信息,更新员工详情数据至本地库。所述员工详情,为该员工的具体信息,例如员工张三,联系方式12345678888,身份证号1234567888834456等。
服务节点接收到员工详情数据后,员工详情数据下不存在下一层级的数据,因此,该同步任务不存在下一层级的同步任务。
服务节点接收到Kafka平台分发的获取员工客户数据的同步任务后,调用企业微信接口获取客户列表信息,更新员工详情数据至本地库。
服务节点接收到员工客户数据后,员工客户数据下不存在下一层级的数据,因此,该同步任务不存在下一层级的同步任务。所述员工客户数据为该员工所跟进的客户的详细信息,例如,客户微信号、客户名称、该员工与该客户的聊天记录等等。
服务节点接收到Kafka平台分发的获取客户群数据的同步任务后,调用企业微信接口分页批量获取该员工管理的客户群的群列表信息,更新群列表信息至本地库。例如员工A管理了10个群,分别是一号群、二号群、三号群、四号群、五号群、六号群、七号群、八号群、九号群、十号群;即更新群列表信息一号群、二号群、三号群、四号群、五号群、六号群、七号群、八号群、九号群、十号群至本地库。
这里,服务节点接收到群列表信息后,判断群列表信息下存在下一层级的数据,因此,该服务节点遍历员工的客户群ID列表,将客户群ID作为消息发送至Kafka,Kafka向各个服务节点分发获取单个客户群详情的同步任务;接收到获取单个客户群详情的同步任务的服务节点,服务调用企业微信接口获取该客户群ID对应的客户群详情,更新客户群详情数据至本地库。
至此,企业微信的全量数据同步完成。
请参照图3,图3示出了本申请实施例所述企业微信的全量数据同步的流程示意图。具体的,如图3所示,第一个服务节点接收到终端发送的全量数据更新请求,全量数据更新开始;第一个服务节点调用企业微信接口拉取企微后台的该企业的组织架构,并更新该企业的组织架构;该企业的组织架构为第一层级目标数据,根据组织架构中的各个部门ID,将获取单个部门员工列表的同步任务分发至各个服务节点,每个服务节点接收到获取该部门ID对应的员工列表的同步任务后,调用企业微信接口拉取该部门下的员工列表信息(一个部门拉取一次员工列表信息);每个部门的员工列表作为第二层级目标信息,根据每个部门的员工ID,将获取每个员工ID下的员工详情的同步任务、获取每个员工ID下的客户数据的同步任务、获取每个员工ID下的客户群列表的同步任务,分别分发至每个服务节点;服务节点接收到分发的获取员工详情的同步任务后,调用企业微信接口获取员工详情信息;服务节点接收到分发的获取员工客户数据的同步任务后,调用企业微信接口获取员工客户数据;服务节点接收到分发的获取客户群列表的同步任务后,调用企业微信接口分页批量获取该员工管理的客户群的群列表信息;这里,群列表信息作为第三层级目标信息,根据客户群ID,将获取单个客户群详情的同步任务分发至各个服务节点,接收到获取单个客户群详情的同步任务的服务节点,服务调用企业微信接口获取该客户群ID对应的客户群详情(按照一个群获取一次)。
在当前技术方案中,在进行全量数据同步的过程中,增量事件仍然可以被触发,那么数据在更新的过程中,就有可能会互相干扰,导致最终数据准确性受到影响。
基于此,请参照图4,本申请实施例中,所述的数据同步方法,还包括以下步骤:
S401、所述同步平台响应接收到全量数据更新请求,创建全量更新锁,以在所述全量更新锁存在时,停止处理接收到的增量数据更新事件;
S402、所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件。
在所述步骤S402中,以企业微信为例,所述目标数据同步完成,即最低层级目标数据-客户群详情更新完成。
当同步平台检测到全量数据更新已经完成后,释放全量更新锁,重启增量更新;每个服务节点分页获取本地库中状态为未执行的增量数据更新事件,并对未执行的增量数据更新事件进行补偿。
具体的,本申请实施例所述数据同步方法中,所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件,包括:
响应释放所述全量更新锁,同步平台的每个服务节点根据记录的增量数据更新事件的状态标识,确定该服务节点中处于未处理状态增量数据更新事件;其中,所述状态标识是根据该服务节点接收到增量数据更新事件时,根据是否存在全量更新锁为所述增量数据更新事件添加的;
所述每个服务节点获取目标服务器中增量数据更新事件对应的数据,以完成全量数据同步期间的增量数据更新事件。
本申请实施例所述数据同步方法,通过引入全量同步锁,进行全量同步与增量同步之间的协调,在全量同步期间,停止增量同步的进行,并对全量同步期间的企业微信接口回调信息进行记录,在全量同步结束后,对全量同步期间积攒的事件进行重放,达到最终数据的一致,解决了现有方案中全量同步增量同步同时进行时可能会引发的数据不一致问题。
请参照图5,本申请实施例中,所述同步平台的服务节点接收到的增量数据更新事件,是通过以下方法获取的:
S501、所述同步平台的目标服务节点接收到目标服务器推送的增量数据更新事件;
S502、所述同步平台的目标服务节点根据接收到的增量数据更新事件发送至分发节点,以使所述分发节点将所述增量数据更新事件重新分发至同步平台中的任一服务节点,以使每个服务节点中的增量数据更新事件数量均衡。
这里,以企业微信和Kafka为例,增量数据所针对的信息不同,增量数据更新事件类型不同;示例性的,增量数据更新事件包括:员工详情变动事件、客户数据变动事件、客户群详情变动事件;每种类型的增量数据更新时间,对应Kafka中不同的消息队列。
目标服务节点接收到企业微信推送的增量数据更新事件后,记录更新事件原始报文至本地库,并解析事件类型为员工详情变动事件、客户数据变动事件、客户群详情变动事件,并将增量数据更新时间发送至对应类型的Kafka队列中。
Kafka将队列中的增量数据更新事件分发至各个服务节点;各个服务节点获取对应的增量数据事件后,若该服务节点判断当前存在全量同步锁,标记增量数据事件状态为UNDO,记录至本地库,不处理该增量数据事件;若该服务节点判断当前不存在全量同步锁,标记增量数据事件状态为DOING,处理该增量数据事件;若该服务节点处理增量数据更新事件成功,标记该增量数据更新事件状态为DONE。
Kafka将队列中的增量数据更新事件分发至各个服务节点,要保证每个服务节点中的增量数据更新事件数量均衡,以增加增量数据更新事件的处理效率。
本申请实施例所述数据同步方案,在与企业微信之外的其他第三方平台进行数据对接时,如遇到类似的场景,同样可以采用本申请实施例所述数据同步方法的流程,只需要将其中任务细分以及数据处理部分进行替换即可。
其中,类似的场景为:所述全量数据同步时的目标数据中包括多个层级的数据,且根据上一层级的数据中的数据标识,能够划分出下一层级数据的同步块。
例如,当要实现钉钉中的全量数据同步时,可以按照以下策略划分任务,实现任务细分,划分出各个层级粒度的数据块:全量数据更新开始后,更新企业的架构,再按照部门ID将一个部门的员工列表信息划分一个数据块;获取员工列表后,按照员工ID,将每个员工详情划分为一个数据块;将每个员工所管理的群划分为一个数据块。
请参照图6,本申请实施例还提供一种数据同步装置,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述装置包括:
第一获取模块601,用于在所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
发送模块602,用于使获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
分发模块603,用于使所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
第二获取模块604,用于使所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
本申请实施例提供一种数据同步装置,将全量同步任务进行拆分,拆分为多个细粒度的同步块,并分发到集群中的多个服务节点上,通过事件分发的方式对同步任务进行分治,使得多个服务节点同时进行数据全量同步任务,让整个集群能够协同完成全量同步任务,解决了现有方案中同步任务只能由单台节点完成的问题,合理的利用有限的资源,加快了全量数据同步的速度。
在一些实施例中,所述第一获取模块,在根据所述同步触发信息的类型,确定待同步的当前层级数据标识时,具体用于:
当所述同步触发信息为终端发送的全量数据更新请求时,根据预先配置的目标数据的数据层级结构,确定待同步的当前层级数据标识;
当所述同步触发信息为分发节点发送的同步任务时,从所述同步任务中提取出待同步的当前层级数据标识。
在一些实施例中,所述发送模块,在将所述下一级数据标识发送给所述分发节点时,当下一级数据标识对应多种类型的下一级目标数据时,具体用于:将所述下一级数据标识分别发送至所述分发节点的预先配置的对应类型的消息队列中;
相应的,所述分发模块,在使所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点时,具体用于:
使所述分发节点根据每种类型的消息队列,确定每种类型的同步任务,并根据同步任务生成的顺序依次将每种类型的同步任务分发至服务节点。
在一些实施例中,所述的数据同步装置,还包括:
创造模块,用于在所述同步平台响应接收到全量数据更新请求,创建全量更新锁,以在所述全量更新锁存在时,停止处理接收到的增量数据更新事件;
释放模块,用于在所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件。
所述数据同步装置,在全量数据同步开始时,设置全量同步锁,停止对增量数据同步的处理,并在全量数据同步结束后,通过对企业微信的接口回调进行梳理,提供了回放历史事件,准确更新增量数据的能力,保证了全量同步与增量同步的数据准确性。
在一些实施例中,所述释放模块,在所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件时,具体用于:
响应释放所述全量更新锁,同步平台的每个服务节点根据记录的增量数据更新事件的状态标识,确定该服务节点中处于未处理状态增量数据更新事件;其中,所述状态标识是根据该服务节点接收到增量数据更新事件时,根据是否存在全量更新锁为所述增量数据更新事件添加的;
所述每个服务节点获取目标服务器中增量数据更新事件对应的数据,以完成全量数据同步期间的增量数据更新事件。
在一些实施例中,所述数据同步装置,还包括:
接收模块,具体用于使所述同步平台的服务节点接收到的增量数据更新事件;具体的,用于使所述同步平台的目标服务节点接收到目标服务器推送的增量数据更新事件;
所述同步平台的目标服务节点根据接收到的增量数据更新事件发送至分发节点,以使所述分发节点将所述增量数据更新事件重新分发至同步平台中的任一服务节点,以使每个服务节点中的增量数据更新事件数量均衡。
在一些实施例中,所述数据同步装置所要同步的所述目标数据为业务管理平台的目标服务器中储存的、目标企业的目标数据。
请参照图7,本申请实施例还提供一种电子设备700,包括:处理器702、存储器701和总线,所述存储器701存储有所述处理器702可执行的机器可读指令,当电子设备700运行时,所述处理器702与所述存储器701之间通过总线通信,所述机器可读指令被所述处理器702执行时执行所述的数据同步方法的步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述的数据同步方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据同步方法,其特征在于,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述方法包括以下步骤:
所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
2.根据权利要求1所述的数据同步方法,其特征在于,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,包括:
当所述同步触发信息为终端发送的全量数据更新请求时,根据预先配置的目标数据的数据层级结构,确定待同步的当前层级数据标识;
当所述同步触发信息为分发节点发送的同步任务时,从所述同步任务中提取出待同步的当前层级数据标识。
3.根据权利要求1所述的数据同步方法,其特征在于,将所述下一级数据标识发送给所述分发节点,包括:
当下一级数据标识对应多种类型的下一级目标数据时,将所述下一级数据标识分别发送至所述分发节点的预先配置的对应类型的消息队列中;
所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点,包括:
所述分发节点根据每种类型的消息队列,确定每种类型的同步任务,并根据同步任务生成的顺序依次将每种类型的同步任务分发至服务节点。
4.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括以下步骤:
所述同步平台响应接收到全量数据更新请求,创建全量更新锁,以在所述全量更新锁存在时,停止处理接收到的增量数据更新事件;
所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件。
5.根据权利要求4所述的数据同步方法,其特征在于,所述同步平台响应目标数据同步完成,释放所述全量更新锁,以开始处理在全量数据同步期间接收到的增量数据更新事件,包括:
响应释放所述全量更新锁,同步平台的每个服务节点根据记录的增量数据更新事件的状态标识,确定该服务节点中处于未处理状态增量数据更新事件;其中,所述状态标识是根据该服务节点接收到增量数据更新事件时,根据是否存在全量更新锁为所述增量数据更新事件添加的;
所述每个服务节点获取目标服务器中增量数据更新事件对应的数据,以完成全量数据同步期间的增量数据更新事件。
6.根据权利要求5所述的数据同步方法,其特征在于,所述同步平台的服务节点接收到的增量数据更新事件,是通过以下方法获取的:
所述同步平台的目标服务节点接收到目标服务器推送的增量数据更新事件;
所述同步平台的目标服务节点根据接收到的增量数据更新事件发送至分发节点,以使所述分发节点将所述增量数据更新事件重新分发至同步平台中的任一服务节点,以使每个服务节点中的增量数据更新事件数量均衡。
7.根据权利要求1所述的数据同步方法,其特征在于,所述目标数据为业务管理平台的目标服务器中储存的、目标企业的目标数据。
8.一种数据同步装置,其特征在于,应用于同步平台,所述同步平台包括分发节点和多个服务节点;所述装置包括:
第一获取模块,用于在所述多个服务节点中的任一服务节点在接收到针对目标数据的同步触发信息后,根据所述同步触发信息的类型,确定待同步的当前层级数据标识,并从所述目标数据所在目标服务器中获取所述当前层级数据标识对应的当前层级目标数据;
发送模块,用于使获取到当前层级目标数据的服务节点根据所述当前层级目标数据,确定所述当前层级数据标识的下一级数据标识,并将所述下一级数据标识发送给所述分发节点;
分发模块,用于使所述分发节点根据所述下一级数据标识确定同步任务,并将所述同步任务分发至所述多个服务节点;
第二获取模块,用于使所述多个服务节点根据接收到的同步任务确定下一级数据标识,从所述目标服务器中获取所述下一级数据标识对应的下一级目标数据,以将所述目标服务器中的下一级目标数据同步到所述服务节点中。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至7任意一项所述的数据同步方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任意一项所述的数据同步方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210721592.0A CN115017233A (zh) | 2022-06-17 | 2022-06-17 | 一种数据同步方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210721592.0A CN115017233A (zh) | 2022-06-17 | 2022-06-17 | 一种数据同步方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115017233A true CN115017233A (zh) | 2022-09-06 |
Family
ID=83075973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210721592.0A Pending CN115017233A (zh) | 2022-06-17 | 2022-06-17 | 一种数据同步方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115017233A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166754A (zh) * | 2023-04-20 | 2023-05-26 | 梅州客商银行股份有限公司 | 半实时数据批量同步的方法、装置和电子设备 |
-
2022
- 2022-06-17 CN CN202210721592.0A patent/CN115017233A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166754A (zh) * | 2023-04-20 | 2023-05-26 | 梅州客商银行股份有限公司 | 半实时数据批量同步的方法、装置和电子设备 |
CN116166754B (zh) * | 2023-04-20 | 2023-08-04 | 梅州客商银行股份有限公司 | 半实时数据批量同步的方法、装置和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634970B (zh) | 表数据同步方法、设备、存储介质及装置 | |
CN110737442A (zh) | 一种边缘应用管理方法及*** | |
CN107357688A (zh) | 分布式***及其故障恢复方法和装置 | |
CN111736994B (zh) | 资源编排方法、***及存储介质和电子设备 | |
CN111090587A (zh) | 投产点服务测试方法、装置、设备及存储介质 | |
CN110032444B (zh) | 一种分布式***及分布式任务处理方法 | |
CN112380225B (zh) | 时序数据同步方法、装置、设备及存储介质 | |
CN115017233A (zh) | 一种数据同步方法、装置、电子设备及介质 | |
CN110196780B (zh) | 确定服务器状态的方法、装置、存储介质和电子装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯*** | |
CN111654671B (zh) | 视频数据的存储方法、装置、设备及存储介质 | |
CN110225077A (zh) | 变更供应数据的同步方法、装置、计算机设备及计算机存储介质 | |
CN116775756A (zh) | 基于Uliweb的数据同步方法、装置及*** | |
CN116010388A (zh) | 数据校验方法、数据采集服务端及数据校验*** | |
CN112822528B (zh) | 直播列表服务***、直播列表管理方法、服务器及介质 | |
CN114780217A (zh) | 任务调度方法、装置、计算机设备以及介质 | |
CN113760538A (zh) | 一种基于ai平台的加速卡类型管控方法、***及装置 | |
CN113127292A (zh) | 一种适用于多云管理的运维、监控方法 | |
CN110569231B (zh) | 数据迁移方法、装置、设备和介质 | |
CN111885206A (zh) | 一种支持多电商平台并向指定环境推送数据的云平台 | |
CN107168685B (zh) | 更新脚本的方法及装置、计算机终端 | |
CN113364864B (zh) | 一种服务器数据同步方法、***及存储介质 | |
CN115185673B (zh) | 分布式定时任务调度方法、***、存储介质及程序产品 | |
CN114785862B (zh) | 自定义路由信息的处理方法和相关装置 | |
CN116401317B (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 |