CN110502583A - 分布式数据同步方法、装置、设备及可读存储介质 - Google Patents

分布式数据同步方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN110502583A
CN110502583A CN201910799567.2A CN201910799567A CN110502583A CN 110502583 A CN110502583 A CN 110502583A CN 201910799567 A CN201910799567 A CN 201910799567A CN 110502583 A CN110502583 A CN 110502583A
Authority
CN
China
Prior art keywords
data
synchronized
channel
distributed
update log
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.)
Granted
Application number
CN201910799567.2A
Other languages
English (en)
Other versions
CN110502583B (zh
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN201910799567.2A priority Critical patent/CN110502583B/zh
Publication of CN110502583A publication Critical patent/CN110502583A/zh
Priority to PCT/CN2020/106360 priority patent/WO2021036684A1/zh
Application granted granted Critical
Publication of CN110502583B publication Critical patent/CN110502583B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

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

Abstract

本发明涉及金融科技领域,并公开了一种分布式数据同步方法,包括:在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道;通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。本发明还公开了一种分布式数据同步装置、设备和可读存储介质。本发明在通过应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中后,实现容灾效果,并且,当上游应用系统或者下游应用系统的数据出问题时,通过应用通道和更新日志通道,对数据的同步延迟无任何影响。

Description

分布式数据同步方法、装置、设备及可读存储介质
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及金融行业的分布式数据同步方法、装置、设备及可读存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(如分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,越来越多的技术应用于金融行业。金融行业的开发人员,通常会用到分布式系统,现有技术的分布式系统的数据同步方案,将数据从上游A系统,同步到下游B系统中,主要采用以下方案:
第一种是使用支持事务的MessageQueue中间件,系统A对数据进行修改时,在数据修改的事务中启用分布式两阶段提交事务,保证数据插入联机事务数据库,同时,把数据持久化同步到MessageQueue中间件中,并且,系统B,启动分布式两阶段提交事务,接收到MessageQueue中间件中的数据,并提交到系统B的本地库后,才提交事务。然而,该方案使用分布式事务,对性能的损耗很大。
为了解决上述问题,现有技术提出了第二种方案,具体为:抽取Binlog日志并发送到分布式消息系统Kafka,且数据接收端准实时处理分布式消息系统Kafka中的消息,从而实现准实时地把数据从系统A同步到系统B的目的。但是,该方案的Kafka集群存在丢失消息的可能性,以及存在Kafka集群整体不可用而导致数据同步中断的可能,无法满足高可靠、高可用的要求。
现有技术还提出了第三种方案,通过ETL工具,定时连接系统A和系统B的联机事务数据库,定义并执行数据抽取任务,从而把数据从系统A到系统B,然而,该方案的数据延迟太长,达不到快速同步中的秒级速度。
发明内容
本发明的主要目的在于提出一种分布式数据同步方法、装置、设备及可读存储介质,旨在解决现有技术中在将上游系统的数据同步到下游系统时无法满足高可靠、高可用要求的问题。
为实现上述目的,本发明提供一种分布式数据同步方法,所述分布式数据同步方法包括如下步骤:
在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
可选地,所述通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道的步骤包括:
通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
可选地,所述通过所述拦截器将所述待同步数据发送至更新日志通道的步骤包括:
通过所述拦截器将所述待同步数据保存到联机事务数据库中;
在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
可选地,所述存储模块为分布式存储系统Hbase中的唯一主键;所述通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中的步骤包括:
通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;
将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中。
可选地,所述通过所述联机事务数据库获取所述待同步数据对应的更新日志信息的步骤之后,所述分布式数据同步方法包括:
通过所述联机事务数据库,在预设时间范围内将所述更新日志信息发送至离线数据库;
通过所述离线数据库,将所述更新日志信息转换为第二预设格式;
通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中。
可选地,所述通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中的步骤之后,所述分布式数据同步方法包括:
通过所述第三分布式应用集群对所述第二转换值进行消费处理得到第三数据结构;
将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中。
可选地,所述将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中的步骤之后,所述分布式数据同步方法包括:
获取所述第二预设格式对应的第二转换值;
通过所述分布式存储系统Hbase获取所述第三数据结构;
比较所述第二转换值及第三数据结构;
若所述第三数据结构与所述第二转换值一致,则判定所述第二转换值全部保存在所述分布式存储系统Hbase中。
此外,为实现上述目的,本发明还提供一种分布式数据同步装置,所述分布式数据同步装置包括:
拦截模块,在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
发送模块,用于通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
保存模块,用于通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
可选地,所述发送模块还用于:
通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
可选地,所述发送模块还用于:
通过所述拦截器将所述待同步数据保存到联机事务数据库中;
在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
此外,为实现上述目的,本发明还提供一种分布式数据同步设备,所述分布式数据同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式数据同步程序,所述分布式数据同步程序被所述处理器执行时实现如上所述的分布式数据同步方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有分布式数据同步程序,所述分布式数据同步程序被处理器执行时实现如上所述的分布式数据同步方法的步骤。
本发明提出的分布式数据同步方法,在上游应用系统添加一个拦截器,当检测到上游应用系统发出待同步数据时,拦截器拦截到待同步数据后,将待同步数据分别发送至应用通道和更新日志通道,并且,所述应用通道和更新日志通道分别属于不同的下游应用系统,即,同一条待同步数据采用冗余双发的形式,有效降低分布式应用系统Kafka的消息丢失几率;再者,分别发送至不同的下游应用系统中,可以是同城不同中心,也可以是异地,在通过应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到下游应用系统对应的存储模块中后,实现容灾效果,并且,当上游应用系统或者下游应用系统的数据出问题时,通过应用通道和更新日志通道,对数据的同步延迟无任何影响。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明分布式数据同步方法第一实施例的流程示意图;
图3为本发明分布式数据同步方法第二实施例的流程示意图;
图4为本发明分布式数据同步方法第三实施例的流程示意图;
图5为本发明分布式数据同步方法第四实施例的流程示意图;
图6为本发明分布式数据同步方法第四实施例的流程框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例分布式数据同步设备可以是PC机或服务器设备。
如图1所示,该分布式数据同步设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及分布式数据同步程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的分布式数据同步程序,并执行下述分布式数据同步方法各个实施例中的操作。
基于上述硬件结构,提出本发明分布式数据同步方法实施例。
参照图2,图2为本发明分布式数据同步方法第一实施例的流程示意图,所述方法包括:
步骤S10,在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
本实施例中,上游应用系统和下游应用系统均属于分布式系统,分布式系统,是由一群独立计算机和系统集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样,如此,一群独立的计算机和系统就是一个分布式系统,分布式系统是为了提高整个系统的性能、可靠性、可用性及可维护性。
现有的分布式消息系统,如Kafka系统,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,该分布式消息系统的最大特性就是可以实时的处理大量数据以满足各种需求场景,比如基于hadoop的批处理系统、低延迟的实时系统,尤其适合应用在金融行业的银行核心业务系统Core Banking System。
现有技术的分布式消息系统Kafka,在把数据从上游系统A,同步到下游系统B时,采用抽取更新日志Binlog的方式,其中,Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里。且数据接收端准实时处理分布式消息系统Kafka中的消息,从而实现准实时地把数据从系统A同步到系统B的目的。
然而,现有技术直接抽取更新日志Binlog的方式,很容易导致Kafka系统集群丢失信息的可能。
本案中,在上游应用系统中,添加一个拦截器MyBatis Intercepter,即在银行核心业务系统Core Banking System中添加一个insert/update/delete方法的AOP的拦截器MyBatis Intercepter,其中,AOP为面向切面的编程技术,用于定义拦截器MyBatisIntercepter。拦截器MyBatis Intercepter用于拦截待同步数据,避免待同步数据直接被抽取更新日志Binlog,而导致Kafka系统集群丢失信息的问题。
步骤S20,通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
该步骤中,通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,拦截器将待同步数据发送至应用通道具体为:通过所述拦截器将所述待同步数据发送至数据同步器中;在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
需要说明的是,应用通道即app通道,更新日志通道即Binlog通道。Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里。
拦截器将待同步数据发送至更新日志通道具体为:通过所述拦截器将所述待同步数据保存到联机事务数据库中;在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
通过将待同步数据进行冗余双发,即待同步数据不但发送到下游应用系统中第一应用系统配置的应用通道中,还发送至联机事务数据库进行一系列处理后发送至下游应用系统中第二应用系统配置的更新日志通道中,一份数据进行两个不同中心的分布式应用集群的发送处理,并且,应用通道与更新日志通道处理的数据结构一致,为相同的数据,因此,有效降低了待同步数据发送到下游应用系统时丢失的可能性。
步骤S30,通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
该步骤中,在应用通道和更新日志通道分别接收到待同步数据后,应用通道及更新日志通道分别对所述待同步数据进行消费处理,并保存到所述下游应用系统对应的存储模块中。具体为:通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中。
在分布式应用集群中,设置两个实例,分别配置接受app通道,Binlog通道,由于app通道与Binlog通道的数据的结构一致,相同的数据,会保存到Hbase(分布式存储系统)同一个rowkey(唯一主键)中,因此达到了幂等处理的效果,不会造成数据重复,并且,由于下游应用系统中第一应用系统即app通道kafka集群,下游应用系统中第二应用系统即binglog通道kafka集群分布在同城不同中心,或者异地,这样达到了容灾的效果,并且当某一个数据中心出现问题时,对数据的同步延迟没有影响。
需要说明的是,Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。属于Hadoop生态圈。分布式KV数据库,用于海量数据的存储与查询。
本发明提出的分布式数据同步方法,在上游应用系统添加一个拦截器,当检测到上游应用系统发出待同步数据时,拦截器拦截到待同步数据后,将待同步数据分别发送至应用通道和更新日志通道,并且,所述应用通道和更新日志通道分别属于不同的下游应用系统,即,同一条待同步数据采用冗余双发的形式,有效降低分布式应用系统Kafka的消息丢失几率;再者,分别发送至不同的分布式应用集群中,可以是同城不同中心,也可以是异地,在通过应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中后,实现容灾效果,并且,当上游应用系统或者下游应用系统的数据出问题时,通过应用通道和更新日志通道,对数据的同步延迟无任何影响。
进一步地,基于本发明分布式数据同步方法的第一实施例,提出本发明分布式数据同步方法的第二实施例;所述下游应用系统包括第一应用系统;如图3所示,步骤S20可以包括:
步骤S21,通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
步骤S22,在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
本实施例中,通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道具体为:通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
应用通道即app通道,更新日志通道即Binlog通道。Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里。
通过所述拦截器将所述待同步数据发送至应用通道具体为:拦截器MyBatisIntercepter将待同步数据拦截下来后,发送至数据同步器DateSyne中,数据同步器DateSyne在接收到待同步数据后,异步发出该待同步数据至应用通道,即下游应用系统中第一应用系统Kafka的APP通道中,从而使得在下游应用系统中第一应用系统Kafka中的数据能够保持完整性。
进一步地,基于本发明分布式数据同步方法的第二实施例,提出本发明分布式数据同步方法的第三实施例;所述下游应用系统还包括第二应用系统;如图4所示,步骤S21可以包括:
步骤S211,通过所述拦截器将所述待同步数据保存到联机事务数据库中;
步骤S212,在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
步骤S213,通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
步骤S214,通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
步骤S215,通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
在本实施例中,通过所述拦截器将所述待同步数据发送至更新日志通道具体为:通过所述拦截器将所述待同步数据保存到联机事务数据库中;在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
需要说明的是,OLTP(On-Line Transaction Processing,联机事务处理过程),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一;DB为数据库。
在拦截器拦截到待同步数据后,把待同步数据中的insert/update/delete的数据内容保存进联机事务数据库OLTP DB后,联机事务数据库OLTP DB获取所述待同步数据对应的更新日志信息,即抽取Binlog日志。
联机事务数据库将所述更新日志信息转换为第一预设格式,即将Binlog日志转化为第一预设格式,可选地,第一预设格式为json格式,其中,json(JavaScript ObjectNotation,JS对象简谱)是一种轻量级的数据交换格式,它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得JSON成为理想的数据交换语言,具有易于人阅读和编写、同时也易于机器解析和生成,并有效地提升网络传输效率的特点。
在将Binlog日志转换为json格式后,得到对应的第一转换值,且将第一转换值发送至日志连接器Binlog Connector,在日志连接器Binlog Connector接收到第一转换值后,将第一转换值发送至下游应用系统中第二应用系统配置的更新日志通道中,即发送到下游应用系统中第二应用系统Kafka的Binlog通道中。
并且,在发送第一转换值至下游应用系统中第二应用系统Kafka的Binlog通道中时,采用调用下游应用系统中第二应用系统kafka接口的方式,进行第一转换值发送。
通过将所述待同步数据发送至更新日志通道,且将待同步数据发送至应用通道,实现对待同步数据的冗余双发,一份数据进行两个不同中心的分布式应用集群的发送处理,并且,应用通道与更新日志通道处理的数据结构一致,为相同的数据,因此,有效降低了待同步数据发送到下游应用系统时丢失的可能性。
进一步地,所述存储模块为分布式存储系统Hbase中的唯一主键;步骤S30可以包括:
通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;
将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中。
本实施例中,在应用通道和更新日志通道分别接收到待同步数据后,应用通道及更新日志通道分别对所述待同步数据进行消费处理,并保存到所述下游应用系统对应的存储模块中。具体为:通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键rowkey中。
在下游应用系统分布式应用集群Kafka中,同一套spark streaming应用,配置两个实例,分别配置app通道,Binlog通道,用于接收待同步数据。由于app通道与Binlog通道的数据的结构一致,相同的数据,会保存到Hbase(分布式存储系统)同一个rowkey(唯一主键)中,达到了幂等处理的效果,不会造成数据重复。
具体地,在分布式存储系统Hbase中,有rowkey这种类似唯一主键的约束,数据覆盖写这种操作很很容易就能实现。即使出现一批数据没有完全写完,出现流式计算崩溃,这种场景也没有问题,下次重启再写一次覆盖就可以了,不会出现脏数据。但是对于修改操作,多个线程并行修改,只要有一个没有完成,系统挂掉,在重启之前需要将上个批次没有修改完成的数据回复到最后一次修改完成的状态。
需要说明的是,由于第一数据结构及第二数据结构保存到Hbase使用key-value的保存格式,对同一条数据,生成的key以及value一致,因此,不管插多少次,数据总量是不变的,因此,不会造成数据重复。
幂等处理就是,在数据不变的情况下,一个操作,无论执行多少次,结果都是一样的。在本案中,由于app通道与Binlog通道的数据的结构一致,数据相同,会保存到Hbase(分布式存储系统)同一个rowkey中,因此能够实现幂等处理的效果。
分布式存储系统Hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。属于Hadoop生态圈。分布式KV数据库,用于海量数据的存储与查询。
由于app通道kafka集群,binglog通道kafka集群分布在同城不同中心,或者异地,这样达到了容灾的效果,并且当某一个数据中心出现问题时,对数据的同步延迟没有影响。
进一步地,基于本发明分布式数据同步方法的第三实施例,提出本发明分布式数据同步方法的第四实施例;如图5所示,步骤S212之后,所述分布式数据同步方法包括:
步骤S2121,通过所述联机事务数据库,在预设时间范围内将所述更新日志信息发送至离线数据库;
步骤S2122,通过所述离线数据库,将所述更新日志信息转换为第二预设格式;
步骤S2123,通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中。
在本实施例中,为了保证每个待同步数据都能够保存到分布式存储系统Hbase中,进行T+1补数通道处理,具体为:通过所述联机事务数据库,在预设时间范围内将所述更新日志信息发送至离线数据库;通过所述离线数据库,将所述更新日志信息转换为第二预设格式;通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中。
具体为:通过联机事务数据库OLTP DB,T日(当日)数据准备好后,通过Sqoop等工具抽取到离线数据库Hive中;其中,离线数据库Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
抽取完成后,把将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中对应的程序,启动为spark应用程序,数据源为步骤a的Hive仓库。结合相应hive表的表头信息,把Hive中的一条条数据也会转换为第二预设格式,如json格式。
由于T+1(次日)兜底补数应用生成的数据结构与app通道还有Binlog通道的数据的结构一致,相同的数据,会保存到Hbase同一个rowkey中,达到了幂等处理的效果,不会造成数据重复。
进一步地,步骤S2123之后,分布式数据同步方法还可以包括:
通过所述第三分布式应用集群对所述第二转换值进行消费处理得到第三数据结构;
将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中。
在本实施例中,在将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中之后,通过所述第三分布式应用集群对所述第二转换值进行消费处理得到第三数据结构;并且,将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中。
T+1补数通道的数据来源是上游应用系统落库了的每条记录,再在第二天通过调度程序,批量全量往下游应用系统对应的联机事务数据库OLTP DB导入一次,并且,可以再做数据校验,这样就可以保证上游应用系统所有待同步数据都同步到了下游应用系统。
进一步地,步骤S2123之后,请参阅图6,分布式数据同步方法还可以包括:
获取所述第二预设格式对应的第二转换值;
通过所述分布式存储系统Hbase获取所述第三数据结构;
比较所述第二转换值及第三数据结构;
若所述第三数据结构与所述第二转换值一致,则判定所述第二转换值全部保存在所述分布式存储系统Hbase中。
本实施例中,为了保证上游应用系统的待同步数据全部同步到下游应用系统,需要进行一个数据校验过程,具体为:获取所述第二预设格式对应的第二转换值;通过所述分布式存储系统Hbase获取所述第三数据结构;比较所述第二转换值及第三数据结构;若所述第三数据结构与所述第二转换值一致,则判定所述第二转换值全部保存在所述分布式存储系统Hbase中。
当第三数据结构与所述第二转换值一致时,可判定第二转换值全部保存在所述分布式存储系统Hbase中,当第三数据结构与所述第二转换值不一致时,可判定第二转换值未全部保存在所述分布式存储系统Hbase中,此时,可以进行再次T+1补数通道处理。
本发明还提供一种分布式数据同步装置。本发明所述分布式数据同步装置包括:
拦截模块,在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
发送模块,用于通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
保存模块,用于通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
进一步地,所述发送模块还用于:
通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
进一步地,所述发送模块还用于:
通过所述拦截器将所述待同步数据保存到联机事务数据库中;
在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
进一步地,所述存储模块为分布式存储系统Hbase中的唯一主键;所述保存模块还用于:
通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;
将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中。
进一步地,所述发送模块还用于:
通过所述联机事务数据库,在预设时间范围内将所述更新日志信息发送至离线数据库;
通过所述离线数据库,将所述更新日志信息转换为第二预设格式;
通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中。
进一步地,所述发送模块执行将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中的步骤之后,所述分布式数据同步装置还包括存储模块,用于:
通过所述第三分布式应用集群对所述第二转换值进行消费处理得到第三数据结构;
将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中。
进一步地,所述存储模块在执行将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中的步骤之后,所述分布式数据同步装置还包括验证模块,用于:
获取所述第二预设格式对应的第二转换值;
通过所述分布式存储系统Hbase获取所述第三数据结构;
比较所述第二转换值及第三数据结构;
若所述第三数据结构与所述第二转换值一致,则判定所述第二转换值全部保存在所述分布式存储系统Hbase中。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有分布式数据同步程序,所述分布式数据同步程序被处理器执行时实现如上所述的分布式数据同步方法的步骤。
其中,在所述处理器上运行的分布式数据同步程序被执行时所实现的方法可参照本发明分布式数据同步方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台分布式数据同步设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (12)

1.一种分布式数据同步方法,其特征在于,所述分布式数据同步方法包括如下步骤:
在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
2.如权利要求1所述的分布式数据同步方法,其特征在于,所述下游应用系统包括第一应用系统;所述通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道的步骤包括:
通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
3.如权利要求2所述的分布式数据同步方法,其特征在于,所述下游应用系统还包括第二应用系统;所述通过所述拦截器将所述待同步数据发送至更新日志通道的步骤包括:
通过所述拦截器将所述待同步数据保存到联机事务数据库中;
在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
4.如权利要求3所述的分布式数据同步方法,其特征在于,所述存储模块为分布式存储系统Hbase中的唯一主键;所述通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中的步骤包括:
通过所述应用通道对所述待同步数据进行消费处理得到第一数据结构,且通过所述更新日志通道对所述第一转换值进行消费处理得到第二数据结构;
将所述第一数据结构及所述第二数据结构保存至分布式存储系统Hbase中的唯一主键中。
5.如权利要求4所述的分布式数据同步方法,其特征在于,所述通过所述联机事务数据库获取所述待同步数据对应的更新日志信息的步骤之后,所述分布式数据同步方法包括:
通过所述联机事务数据库,在预设时间范围内将所述更新日志信息发送至离线数据库;
通过所述离线数据库,将所述更新日志信息转换为第二预设格式;
通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中。
6.如权利要求5所述的分布式数据同步方法,其特征在于,所述通过所述离线数据库,将所述第二预设格式对应的第二转换值发送至第三分布式应用集群中的步骤之后,所述分布式数据同步方法包括:
通过所述第三分布式应用集群对所述第二转换值进行消费处理得到第三数据结构;
将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中。
7.如权利要求6所述的分布式数据同步方法,其特征在于,所述将所述第三数据结构保存至所述分布式存储系统Hbase中的唯一主键中的步骤之后,所述分布式数据同步方法包括:
获取所述第二预设格式对应的第二转换值;
通过所述分布式存储系统Hbase获取所述第三数据结构;
比较所述第二转换值及第三数据结构;
若所述第三数据结构与所述第二转换值一致,则判定所述第二转换值全部保存在所述分布式存储系统Hbase中。
8.一种分布式数据同步装置,其特征在于,所述分布式数据同步装置包括:
拦截模块,在检测到上游应用系统发出待同步数据时,通过拦截器拦截所述待同步数据;
发送模块,用于通过所述拦截器将所述待同步数据分别发送至应用通道及更新日志通道,其中,所述应用通道和更新日志通道分别属于不同的下游应用系统;
保存模块,用于通过所述应用通道及更新日志通道分别对所述待同步数据进行消费处理后,保存到所述下游应用系统对应的存储模块中。
9.如权利要求8所述的分布式数据同步装置,其特征在于,所述发送模块还用于:
通过所述拦截器将所述待同步数据发送至更新日志通道,且通过所述拦截器将所述待同步数据发送至数据同步器中;
在所述数据同步器接收到所述待同步数据后,通过所述数据同步器将所述待同步数据异步发送至所述下游应用系统中第一应用系统的应用通道中。
10.如权利要求9所述的分布式数据同步装置,其特征在于,所述发送模块还用于:
通过所述拦截器将所述待同步数据保存到联机事务数据库中;
在所述联机事务数据库接收到所述待同步数据后,通过所述联机事务数据库获取所述待同步数据对应的更新日志信息;
通过所述联机事务数据库将所述更新日志信息转换为第一预设格式;
通过所述联机事务数据库将所述第一预设格式对应的第一转换值发送至日志连接器;
通过所述日志连接器将所述第一转换值发送至所述下游应用系统中第二应用系统的更新日志通道中。
11.一种分布式数据同步设备,其特征在于,所述分布式数据同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的分布式数据同步程序,所述分布式数据同步程序被所述处理器执行时实现如权利要求1至7中任一项所述的分布式数据同步方法的步骤。
12.一种可读存储介质,其特征在于,所述可读存储介质上存储有分布式数据同步程序,所述分布式数据同步程序被处理器执行时实现如权利要求1至7中任一项所述的分布式数据同步方法的步骤。
CN201910799567.2A 2019-08-27 2019-08-27 分布式数据同步方法、装置、设备及可读存储介质 Active CN110502583B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910799567.2A CN110502583B (zh) 2019-08-27 2019-08-27 分布式数据同步方法、装置、设备及可读存储介质
PCT/CN2020/106360 WO2021036684A1 (zh) 2019-08-27 2020-07-31 分布式数据同步方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910799567.2A CN110502583B (zh) 2019-08-27 2019-08-27 分布式数据同步方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN110502583A true CN110502583A (zh) 2019-11-26
CN110502583B CN110502583B (zh) 2024-05-17

Family

ID=68589980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910799567.2A Active CN110502583B (zh) 2019-08-27 2019-08-27 分布式数据同步方法、装置、设备及可读存储介质

Country Status (2)

Country Link
CN (1) CN110502583B (zh)
WO (1) WO2021036684A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021036684A1 (zh) * 2019-08-27 2021-03-04 深圳前海微众银行股份有限公司 分布式数据同步方法、装置、设备及可读存储介质
CN112597242A (zh) * 2020-12-16 2021-04-02 四川新网银行股份有限公司 一种基于涉及批量任务的应用系统数据切片的抽取方法
CN112910970A (zh) * 2021-01-21 2021-06-04 中国工商银行股份有限公司 异地灾备数据同步方法、装置及系统
CN112910971A (zh) * 2021-01-21 2021-06-04 中国工商银行股份有限公司 多站点数据同步方法、装置及系统
CN112988897A (zh) * 2021-03-30 2021-06-18 工银科技有限公司 系统升级场景下的数据双向同步方法及装置
CN113392161A (zh) * 2021-07-08 2021-09-14 苏州海管家物流科技有限公司 数据双向实时同步系统
CN113704212A (zh) * 2020-05-22 2021-11-26 深信服科技股份有限公司 服务器的数据同步方法、装置、设备及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220612A1 (en) * 2016-01-11 2017-08-03 Webtrends, Inc. Query-as-a-service system that provides query-result data to remote clients
WO2018234265A1 (en) * 2017-06-19 2018-12-27 The Glue SYSTEM AND APPARATUS FOR TREATMENT GUARANTEED EXACTLY ONCE OF AN EVENT IN AN ENVIRONMENT MANAGED BY A DISTRIBUTED EVENT
CN109635039A (zh) * 2018-11-23 2019-04-16 金色熊猫有限公司 多数据中心数据同步方法及系统
CN110162571A (zh) * 2019-04-26 2019-08-23 厦门市美亚柏科信息股份有限公司 一种异构数据库之间数据同步的系统、方法、存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830233B2 (en) * 2016-01-29 2017-11-28 Netapp, Inc. Online backup to an object service using bulk export
CN107590182B (zh) * 2017-08-03 2020-06-19 华南理工大学 一种分布式日志收集方法
CN110502583B (zh) * 2019-08-27 2024-05-17 深圳前海微众银行股份有限公司 分布式数据同步方法、装置、设备及可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220612A1 (en) * 2016-01-11 2017-08-03 Webtrends, Inc. Query-as-a-service system that provides query-result data to remote clients
WO2018234265A1 (en) * 2017-06-19 2018-12-27 The Glue SYSTEM AND APPARATUS FOR TREATMENT GUARANTEED EXACTLY ONCE OF AN EVENT IN AN ENVIRONMENT MANAGED BY A DISTRIBUTED EVENT
CN109635039A (zh) * 2018-11-23 2019-04-16 金色熊猫有限公司 多数据中心数据同步方法及系统
CN110162571A (zh) * 2019-04-26 2019-08-23 厦门市美亚柏科信息股份有限公司 一种异构数据库之间数据同步的系统、方法、存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021036684A1 (zh) * 2019-08-27 2021-03-04 深圳前海微众银行股份有限公司 分布式数据同步方法、装置、设备及可读存储介质
CN113704212A (zh) * 2020-05-22 2021-11-26 深信服科技股份有限公司 服务器的数据同步方法、装置、设备及计算机存储介质
CN112597242A (zh) * 2020-12-16 2021-04-02 四川新网银行股份有限公司 一种基于涉及批量任务的应用系统数据切片的抽取方法
CN112597242B (zh) * 2020-12-16 2023-06-06 四川新网银行股份有限公司 一种基于涉及批量任务的应用系统数据切片的抽取方法
CN112910970A (zh) * 2021-01-21 2021-06-04 中国工商银行股份有限公司 异地灾备数据同步方法、装置及系统
CN112910971A (zh) * 2021-01-21 2021-06-04 中国工商银行股份有限公司 多站点数据同步方法、装置及系统
CN112910970B (zh) * 2021-01-21 2023-04-07 中国工商银行股份有限公司 异地灾备数据同步方法、装置及系统
CN112910971B (zh) * 2021-01-21 2023-04-07 中国工商银行股份有限公司 多站点数据同步方法、装置及系统
CN112988897A (zh) * 2021-03-30 2021-06-18 工银科技有限公司 系统升级场景下的数据双向同步方法及装置
CN113392161A (zh) * 2021-07-08 2021-09-14 苏州海管家物流科技有限公司 数据双向实时同步系统

Also Published As

Publication number Publication date
WO2021036684A1 (zh) 2021-03-04
CN110502583B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN110502583A (zh) 分布式数据同步方法、装置、设备及可读存储介质
KR101956236B1 (ko) 데이터베이스 관리 시스템에서의 데이터 복제 기법
CN109034993A (zh) 对账方法、设备、系统及计算机可读存储介质
US20190034465A1 (en) Blockchain logging of data from multiple systems
US11442920B2 (en) Graph database system
CN101277272B (zh) 一种海量广播数据入库的实现方法
CN110019267A (zh) 一种元数据更新方法、装置、系统、电子设备及存储介质
US20230074102A1 (en) Method and apparatus for processing data based on block chain, device and readable storage medium
US11232071B2 (en) Regressable differential data structures
CN108681569A (zh) 一种数据自动分析系统及其方法
WO2020160186A1 (en) Real-time event detection on social data streams
WO2021184761A1 (zh) 数据访问方法和装置、数据存储方法和装置
CN109657007A (zh) 基于异步提交的数据库数据同步并行执行方法及设备
US20220050712A1 (en) Distributed streaming system supporting real-time sliding windows
CN111625552B (zh) 数据收集方法、装置、设备和可读存储介质
CN109033109A (zh) 数据处理方法及系统
CN106959996A (zh) 一种基于互联网电视的后台数据同步方法
US20220245093A1 (en) Enhanced search performance using data model summaries stored in a remote data store
CN104636395A (zh) 一种计数处理方法及装置
CN104462342B (zh) 数据库快照同步处理方法及装置
CN110727700A (zh) 多源流式数据整合成事务型流数据的方法及系统
KR20190022600A (ko) 데이터베이스 관리 시스템에서의 데이터 복제 기법
Li et al. Stabilizer: Geo-replication with user-defined consistency
US11841827B2 (en) Facilitating generation of data model summaries
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set

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
GR01 Patent grant
GR01 Patent grant