CN109815247B - 信息同步方法、装置、计算机设备和存储介质 - Google Patents

信息同步方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN109815247B
CN109815247B CN201910019612.8A CN201910019612A CN109815247B CN 109815247 B CN109815247 B CN 109815247B CN 201910019612 A CN201910019612 A CN 201910019612A CN 109815247 B CN109815247 B CN 109815247B
Authority
CN
China
Prior art keywords
information
local
remote
collective
member information
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.)
Active
Application number
CN201910019612.8A
Other languages
English (en)
Other versions
CN109815247A (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.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China 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 Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CN201910019612.8A priority Critical patent/CN109815247B/zh
Publication of CN109815247A publication Critical patent/CN109815247A/zh
Application granted granted Critical
Publication of CN109815247B publication Critical patent/CN109815247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及一种信息同步方法、装置、计算机设备和存储介质。所述方法包括:响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。采用本方法能够并行同步多个集体标识所对应的本地成员信息,且仅在远程成员信息和本地成员信息不一致时才更新本地成员信息,提高了信息同步效率。

Description

信息同步方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种信息同步方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,越来越多的信息经常在不同的计算机设备之间进行同步。同时,企业或各种组织内的集体经常发生成员的流动与更新。比如,大型企业经常发生成员的入职、离职和企业内部调动,也可能会有部门的建立或取消。企业或组织的工作运行依赖于组织架构,为了确保企业或组织的正常运转,需要定时进行集体成员信息的同步。
然而,传统的集体成员信息同步的技术,是获取企业或组织内各个集体的全部成员信息进行整体更新。在企业或组织的规模较大的情况下,每次进行信息同步时需要处理的数据量很大,信息同步的效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高信息同步效率的信息同步方法、装置、计算机设备和存储介质。
一种信息同步方法,所述方法包括:
响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
在其中一个实施例中,响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识包括:
当监听到信息同步指令时,遍历存储的标识范围信息;
对于遍历到的标识范围信息,确定遍历到的标识范围信息所对应的集体标识;
从确定的集体标识中并行读取预设数量的集体标识。
在其中一个实施例中,当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态之后,还包括:
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地集体信息和远程集体信息;
根据所述远程集体信息更新所述本地集体信息。
在其中一个实施例中,当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息包括:
在所述远程成员信息和所述本地成员信息中,确定各自的重复成员信息;
分别对所述远程成员信息和所述本地成员信息中,确定的重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息;
当所述去重后的远程成员信息与所述去重后的本地成员信息不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息。
在其中一个实施例中,当所述去重后的远程成员信息与所述去重后的本地成员信息不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息包括:
按照成员编号顺序,分别对所述去重后的远程成员信息和所述去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;
确定所述远程排列信息和所述本地排列信息,各自对应的远程信息字符串和本地信息字符串;
当所述远程信息字符串和所述本地信息字符串不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息。
在其中一个实施例中,当所述远程信息字符串和所述本地信息字符串不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息包括:
验证所述远程信息字符串与所述本地信息字符串是否一致;
当所述远程信息字符串和所述本地信息字符串不一致时,确定所述去重后的远程成员信息与所述去重后的本地成员信息之间的差异信息;
根据确定的差异信息确定所述去重后的本地成员信息的待更新信息;
按照所述待更新信息对所述去重后的本地成员信息进行更新。
一种信息同步装置,所述装置包括:
标识读取模块,用于响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
状态确定模块,用于对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
状态锁定模块,用于当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
信息提取模块,用于从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
信息更新模块,用于当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
上述信息同步方法、装置、计算机设备和存储介质,响应于信息同步指令,从存储的集体标识并行读取预设数量的集体标识,并确定每个读取到的集体标识是否为锁定状态;当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态,处于锁定状态的集体标识对应的本地成员信息仅可由当前节点进行数据处理;再从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息;比较远程成员信息和本地成员信息是否一致,仅在不一致时,才根据远程成员信息更新本地成员信息,不必对本地成员信息整体进行更新,提高了信息同步效率。
附图说明
图1为一个实施例中信息同步方法的应用环境图;
图2为一个实施例中信息同步方法的流程示意图;
图3为一个实施例中遍历标识范围信息的步骤的流程示意图;
图4为一个实施例中更新本地集体信息的步骤的流程示意图;
图5为一个实施例中对重复成员信息进行去重的步骤的流程示意图;
图6为一个实施例中确定远程信息字符串和本地信息字符串的步骤的流程示意图;
图7为一个实施例中确定远程信息字符串和本地信息字符串的示意图;
图8为一个实施例中更新本地成员信息的步骤的流程示意图;
图9为一个实施例中信息同步的时序图;
图10为一个实施例中信息同步装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的信息同步方法,可以应用于如图1所示的应用环境中。其中,本地服务器102与远程服务器104通过网络进行通信,远程服务器104可以是第三方服务器。其中,本地服务器102和远程服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种信息同步方法,以该方法应用于图1中的本地服务器102为例进行说明,包括以下步骤:
步骤202,响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识。
其中,信息同步指令是指示本地服务器进行信息同步的指令。集体标识是各集体的标识,可以是编号,编号可以是数字、字母、特殊符号等结合的字符串。集体是由一定数量的成员组成的团体,比如,集体可以是企业中的某个部门。
具体地,当本地服务器监听到触发的信息同步指令时,本地服务器访问存储在本地数据库中的集体标识,并从访问的集体标识中,并行读取预设数量的集体标识。
在一个实施例中,本地服务器定时触发信息同步指令,比如本地服务器可以在每天的特定时间触发信息同步指令。本地服务器中的操作系统可以是Linux系统,使用Linux中的Cron(定时任务)触发信息同步指令。Cron可以在约定的时间执行特定的任务。
步骤204,对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态。
其中,锁定状态是指集体标识仅可被一个节点进行数据处理的状态。
具体地,对于每一个读取到的集体标识,本地服务器确定每个集体标识是否处于锁定状态。本地服务器可以查询读取到的集体标识的状态标识,通过状态标识确定集体标识是否处于锁定状态。
步骤206,当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态。
具体地,当本地服务器确定读取到的集体标识处于非锁定状态时,触发状态锁定指令,根据状态锁定指令将读取到的集体标识置为锁定状态。本地服务器将读取到的集体标识置为锁定状态后,该集体标识仅可被本地服务器中当前节点进行数据处理。
在一个实施例中,本地服务器是分布式系统中的服务器,本地服务器可以通过分布式锁将读取到的集体标识置为锁定状态。分布式锁的实现可以基于数据库、缓存(比如Redis)和Zookeeper中的至少一种实现。
步骤208,从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息。
其中,本地数据库是本地服务器中的数据库;远程数据库是远程服务器中的数据库;本地成员信息是保存在本地数据库中的,集体中各个成员的成员信息;远程成员信息是保存在远程数据库中的,集体中各个成员的成员信息。本地服务器根据远程数据库中的远程成员信息,对本地数据库中的本地成员信息进行同步。
具体地,本地服务器从本地数据库中提取与读取到的集体标识对应的本地成员信息。本地服务器根据读取到的集体标识生成成员信息获取请求,通过网络将成员信息获取请求发送至远程服务器。远程服务器对接收到的成员信息获取请求进行解析得到集体标识,在远程数据库中查询与集体标识对应的远程成员信息,并将查询到的远程成员信息发送至本地服务器。本地服务器接收远程服务器发送的远程成员信息。
步骤210,当远程成员信息与本地成员信息不一致时,根据远程成员信息更新本地成员信息。
具体地,本地服务器对提取到的远程成员信息和本地成员信息进行比较,当远程成员信息和本地成员信息不一致时,确定远程成员信息和本地成员信息之间的差异信息,并根据差异信息对本地成员信息进行更新,实现本地数据库与远程数据库的信息同步。
在一个实施例中,本地服务器根据远程成员信息对本地成员信息更新完毕后,将读取到的集体标识置为非锁定状态,并按照集体标识顺序,读取后一个集体标识。
在一个实施例中,当远程成员信息和本地成员信息一致时,本地服务器将读取到的集体标识置为非锁定状态,并按照集体标识顺序,读取后一个集体标识。
本实施例中,响应于信息同步指令,从存储的集体标识并行读取预设数量的集体标识,并确定每个读取到的集体标识是否为锁定状态;当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态,处于锁定状态的集体标识对应的本地成员信息仅可由当前节点进行数据处理;再从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息;比较远程成员信息和本地成员信息是否一致,仅在不一致时,才根据远程成员信息更新本地成员信息,不必对本地成员信息整体进行更新,提高了信息同步效率。
如图3所示,在一个实施例中,步骤202具体还包括遍历标识范围信息的步骤,该步骤具体包括如下步骤:
步骤302,当监听到信息同步指令时,遍历存储的标识范围信息。
其中,标识范围信息用于表示预设标识范围内的多个集体标识。
具体地,本地服务器对存储的集体标识进行划分得到多个标识范围,每个标识范围对应有标识范围信息。当本地服务器监听到信息同步指令时,遍历存储的全部标识范围信息。
举例说明,本地服务器存储有200个集体的集体标识,200个集体的集体标识均为数字,且依次编号为1至200。本地服务器将集体标识进行划分得到4个标识范围及4组标识范围信息A、B、C和D。其中,标识范围信息A对应的集体标识为1-50,标识范围信息B对应的集体标识为51-100,标识范围信息C对应的集体标识为101-150,标识范围信息D对应的集体标识为151-200。
步骤304,对于遍历到的标识范围信息,确定遍历到的标识范围信息所对应的集体标识。
具体地,对于每一组遍历到的标识范围信息,本地服务器读取预存的标识范围信息表,在标识范围信息表中查询遍历到的标识范围信息,确定与查询到的标识范围信息对应的集体标识。比如,当本地服务器遍历到的标识范围信息为A时,本地服务器通过标识范围信息表确定与标识范围信息A对应的集体标识为1-50。
在一个实施例中,本地服务器中的节点采用Redis分布式锁,可以通过SETNX命令(SET if Not eXists)设置分布式锁。其中,SETNX命令格式为SETNX key value,当且仅当key不存在时,将key的值设为value;当给定的key已经存在,则SETNX不做任何动作。当节点遍历到一组标识范围信息时,确定遍历到的标识范围信息所对应的集体标识的标识范围,将确定的标识范围作为key值的一部分设置分布式锁。举例说明,当节点遍历到的标识范围信息为A时,根据标识范围1-50作为key值的一部分设置Redis分布式锁。
当SETNX返回1时,节点将标识范围信息置为锁定状态;当SETNX返回0时,表示该范围信息已被本地服务器中的其他节点置为锁定状态,节点将读取后一组标识范围信息。
步骤306,从确定的集体标识中并行读取预设数量的集体标识。
具体地,本地服务器可以是在一台独立的服务器上部署多个节点,也可以在服务器集群中的每个服务器上均部署节点。当监听到信息同步指令时,各节点遍历到不同的标识范围信息,确定与遍历到的标识范围信息所对应的集体标识,并从确定的集体标识中读取一个集体标识,即本地服务器读取到的集体标识的数量数值等于节点的预设数量数值。
本实施例中,当监听到信息同步指令时,遍历存储的标识范围信息;对于每组标识范围信息,确定与标识范围信息所对应的集体标识后,再从确定的集体标识中并行读取预设数量的集体标识,以便根据预设数量的集体标识并行进行信息同步,提高了信息同步的速度。
如图4所示,在一个实施例中,步骤206之后具体还包括更新本地集体信息的步骤,该步骤具体包括如下步骤:
步骤402,从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地集体信息和远程集体信息。
其中,本地集体信息是保存在本地数据库中的集体的信息,可以包括集体名称;远程集体信息是保存在远程数据库中的集体的信息,包括集体名称和集体状态信息中的至少一种。
具体地,本地服务器从本地数据库中提取与读取到的集体标识对应的本地集体信息。本地服务器根据读取到的集体标识生成集体信息获取请求,通过网络将集体信息获取请求发送至远程服务器。远程服务器对接收到的集体信息获取请求进行解析得到集体标识,从远程数据库中查询与集体标识对应的远程集体信息,并将查询到的远程集体信息发送至本地服务器。本地服务器接收远程服务器发送的远程集体信息。
步骤404,根据远程集体信息更新本地集体信息。
具体地,本地服务器从远程集体信息中提取集体状态信息,集体状态信息记录集体是否存在,当通过集体状态信息确定读取到的集体标识对应的集体存在时,从远程集体信息中提取集体名称。当从远程集体信息中提取的集体名称和从本地集体信息中的提取到的集体名称不一致时,本地服务器删除本地集体信息中的集体名称,将从远程集体信息中提取的集体名称保存到本地集体信息中。
在一个实施例中,当本地服务器通过集体状态信息确定读取到的集体标识对应的集体不存在时,删除与读取到的集体标识对应的本地集体信息和本地成员信息。
本实施例中,从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地集体信息和远程集体信息后,根据远程集体信息更新本地集体信息,提高了更新本地集体信息的效率。
如图5所示,在一个实施例中,步骤210具体还包括对重复成员信息进行去重的步骤,该步骤具体包括如下步骤:
步骤502,在远程成员信息和本地成员信息中,确定各自的重复成员信息。
其中,重复成员信息是远程成员信息或本地成员信息中,出现次数大于等于两次的远程成员信息或本地成员信息。
具体地,当集体中某成员有超过两种身份或职位时,本地成员信息或远程成员信息中可能出现重复成员信息。本地服务器遍历提取到的本地成员信息和远程成员信息,并确定本地成员信息和远程成员信息中的重复成员信息。
步骤504,分别对远程成员信息和本地成员信息中,确定的重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息。
具体地,本地服务器确定远程成员信息和本地成员信息中,各自的重复成员信息后,对确定的重复成员信息进行去重处理,仅保留一份远程成员信息或本地成员信息。本地服务器完成去重处理后,得到去重后的远程成员信息和去重后的本地成员信息。
步骤506,当去重后的远程成员信息与去重后的本地成员信息不一致时,根据去重后的远程成员信息更新去重后的本地成员信息。
具体地,本地服务器验证去重后的远程成员信息和去重后的本地成员信息是否一致,当不一致时,本地服务器删除去重后的本地成员信息,将去重后的远程成员信息保存至本地数据库中。
在一个实施例中,当去重后的远程成员信息和去重后的本地成员信息不一致时,本地服务器通过比较得到去重后的远程成员信息和去重后的本地成员信息之间的差异信息,根据差异信息更新去重后的本地成员信息。
在一个实施例中,当去重后的远程成员信息和本地成员信息一致时,本地服务器将读取到的集体标识置为非锁定状态,按照标识顺序,读取后一个集体标识。
本实施例中,在远程成员信息和本地成员信息中,确定各自的重复成员信息,重读成员信息是出现次数大于等于两次的成员信息;再对重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息,去重处理后的各远程成员信息或各本地成员信息互不相同;当去重后的远程成员信息与去重后的本地成员信息不一致时,再根据去重后的远程成员信息更新去重后的本地成员信息,无需直接将去重后的远程成员信息替换本地成员信息,提高了信息同步的效率。
如图6所示,在一个实施例中,步骤506具体还包括确定远程信息字符串和本地信息字符串的步骤,该步骤具体包括如下步骤:
步骤602,按照成员编号顺序,分别对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息。
其中,成员编号是远程成员信息或本地成员信息中,各远程成员信息或各本地成员信息对应的集体成员的编号。远程排列信息是对去重后的远程成员信息中,各成员编号对应的远程成员信息进行排列得到的信息;本地成员信息是对去重后的本地成员信息中,各成员编号对应的本地成员信息进行排列得到的信息。
具体地,本地服务器获取去重后的远程成员信息中,各远程成员信息的成员编号;按照成员编号顺序对各成员编号对应的远程成员信息进行排列,得到远程排列信息。本地服务器获取去重后的本地成员信息中,各本地成员信息的成员编号;按照成员编号顺序对各成员编号对应的本地成员信息进行排列,得到本地排列信息。
在一个实施例中,成员编号为数字,本地服务器按照成员编号从小到大的顺序,对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;本地服务器也可以采用成员编号从大到小的顺序进行排列。
在一个实施例中,本地服务器以去重后的远程成员信息和去重后的本地成员信息中的各成员编号作为远程数组和本地数组,对远程数组和本地数组进行排列,得到远程排列信息和本地排列信息。本地服务器也可以从去重后的远程成员信息和去重后的本地成员信息中,分别提取各成员编号对应的远程成员信息和本地成员信息中的远程成员姓名和本地成员姓名。本地服务器根据各成员编号和与各成员编号对应的远程成员信息中的远程成员姓名得到各远程数组,按照成员编号顺序对各远程数组进行排列得到远程排列信息,并根据同样的方式得到各本地数组和本地排列信息。
步骤604,确定远程排列信息和本地排列信息,各自对应的远程信息字符串和本地信息字符串。
其中,远程信息字符串是对远程排列信息进行哈希运算得到的字符串;本地信息字符串是对本地排列信息进行哈希运算得到的字符串。
具体地,本地服务器得到远程排列信息和本地排列信息后,分别通过哈希函数对远程排列信息和本地排列信息进行哈希运算,得到远程信息字符串和本地信息字符串。
在一个实施例中,本地服务器进行哈希运算时,使用的哈希函数可以是SHA1、MD4和MD5中的至少一种。
图7为一个实施例中确定远程信息字符串和本地信息字符串的示意图,具体地,参照图7,使用的哈希函数为SHA1。SHA1即为安全哈希算法(Secure Hash Algorithm),主要适用于数字签名标准(Digital Signature Standard,DSS)里面定义的数字签名算法(Digital Signature Algorithm,DSA)。本地服务器将远程排列信息或本地排列信息转化为二进制数字表示的明文,再将明文进行分组,每组为512位。
本地服务器将512位的明文划分为16个子明文分组M[i],(i=0,1,……,15),每一组子明文分组为32位,再将16份子明文分组扩展为80份子明文分组,记为W[k],(i=0,1,……,79)。SHA1有四轮运算,每一轮包括20个步骤,一共80个步骤,其中A、B、C、D和E为5个32位的链接变量,Hi-1是第i-1个子明文分组经过轮函数的输出,K_是常数,在每一轮运算中取不同的数值。
步骤606,当远程信息字符串和本地信息字符串不一致时,根据去重后的远程成员信息更新去重后的本地成员信息。
具体地,本地服务器验证远程信息字符串和本地信息字符串是否一致,当一致时,远程排列信息和本地排列信息一致,即去重后的远程成员信息和去重后的本地成员信息一致,无需更新去重后的本地成员信息;当不一致时,远程排列信息和本地排列信息不一致,去重后的远程成员信息和去重后的本地成员信息不一致,本地服务器根据去重后的远程成员信息更新去重后的本地成员信息。
本实施例中,按照成员编号顺序,分别对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;再根据远程排列信息和本地排列信息,得到远程信息字符串和本地信息字符串;通过比较远程信息字符串和本地信息字符串,校验去重后的远程成员信息和去重后的本地成员信息是否一致,无需逐一比对各远程成员信息和本地成员信息,当远程信息字符串和本地信息字符串不一致时,再根据去重后的远程成员信息更新去重后的本地成员信息,提高了信息同步的效率。
如图8所示,在一个实施例中,步骤506具体还包括更新本地成员信息的步骤,该步骤具体包括如下步骤:
步骤802,验证远程信息字符串与本地信息字符串是否一致。
具体地,本地服务器确定远程排列信息和本地排列信息,各自对应的远程信息字符串和本地信息字符串后,比较远程排列信息字符串和本地排列信息字符串,验证远程信息字符串和本地信息字符串是否一致。
步骤804,当远程信息字符串和本地信息字符串不一致时,确定去重后的远程成员信息与去重后的本地成员信息之间的差异信息。
其中,差异信息是去重后的远程成员信息和去重后的本地成员信息之间,相区别的远程成员信息或本地成员信息的集合。
具体地,当远程信息字符串和本地信息字符串不一致时,本地服务器比较去重后的远程成员信息和去重后的本地成员信息,根据去重后的远程成员信息和去重后的本地成员信息之间的区别得到差异信息。
在一个实施例中,本地服务器依次抽取本地排列信息中的各本地数组,在各远程数组中查询抽取到的本地数组,若未查询到与抽取到的本地数组一致的远程数组,则抽取到的本地数组对应的本地成员信息为差异信息;当在各本地数组中为查询到与某远程数组一致的本地数组时,该远程数组对应的远程成员信息也为差异信息。
步骤806,根据确定的差异信息确定去重后的本地成员信息的待更新信息。
其中,待更新信息是本地服务器根据差异信息得到的,指示本地服务器对去重后的本地成员信息进行调整的信息。
具体地,本地服务器确定去重后的远程成员信息和去重后的本地成员信息的差异信息后,将差异信息中的各远程成员信息标识为待添加信息,将差异信息中的各本地成员信息标识为待删除信息,得到去重后的本地成员信息的待更新信息。
步骤808,按照待更新信息对去重后的本地成员信息进行更新。
具体地,本地服务器读取待更新信息中标识为待添加信息的各远程成员信息,将各远程成员信息添加到去重后的本地成员信息中;本地服务器读取待更新信息中标识为待删除信息的各本地成员信息,从去重后的本地成员信息中,删除标识为待删除信息的各本地成员信息。当本地服务器对存储的全部集体标识对应的本地成员信息更新完毕后,本地服务器完成信息同步。
举例说明,远程数组和本地数组中仅为各成员编号,若远程排列信息为[001][002][003],本地排列信息为[004];则差异信息为[001][002][003][004],待更新信息为:“从去重后的本地成员信息中,删除成员编号004对应的本地成员信息,在去重后的远程排列信息中,添加成员编号001、002和003对应的远程排列信息”。
本实施例中,首先验证远程信息字符串与本地信息字符串是否一致,当不一致时,确定去重后的远程成员信息与去重后的本地成员信息之间的差异信息,根据确定的差异信息确定去重后的本地成员信息的待更新信息,待更新信息用于指示本地服务器对去重后的本地成员信息进行添加或删除操作,提高了对本地成员信息进行更新的效率。
如图9所示,在一个实施例中,包括:本地服务器102和远程服务器104。其中,本地服务器102还包括本地数据库和Redis分布式锁。远程服务器104包括远程数据库。本实施例具体包括以下内容:
响应于信息同步指令,本地服务器102并行读取预设数量的集体标识;对于每个读取到的集体标识,当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态。本地服务器102从本地数据库提取与读取到的集体标识对应的本地集体信息;从远程服务器104的远程数据库中获取与读取到的集体标识对应的远程集体信息,根据远程集体信息更新本地集体信息。
本地服务器102从本地数据库中提取与读取到的集体标识对应的本地成员信息,从远程数据库提取与读取到的集体标识对应的远程成员信息。本地服务器102确定远程成员信息和本地成员信息中,各自的重复成员信息,并对确定的重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息。本地服务器102按照成员编号顺序,分别对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息,再确定远程排列信息和本地排列信息,各自对应的远程信息字符串和本地信息字符串。
本地服务器102验证远程信息字符串与本地信息字符串是否一致,当远程信息字符串和本地信息字符串不一致时,根据去重后的远程成员信息更新去重后的本地成员信息。具体可以是本地服务器102确定去重后的远程成员信息与去重后的本地成员信息之间的差异信息,根据确定的差异信息确定去重后的本地成员信息的待更新信息,再按照待更新信息对去重后的本地成员信息进行更新。更新完毕后,本地服务器102将读取到的集体标识置为非锁定状态。
应该理解的是,虽然图2-6和8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6和8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种信息同步装置1000,包括:标识读取模块1002、状态确定模块1004、状态锁定模块1006、信息提取模块1008和信息更新模块1010,其中:
标识读取模块1002,用于响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识。
状态确定模块1004,用于对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态。
状态锁定模块1006,用于当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态。
信息提取模块1008,用于从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息。
信息更新模块1010,用于当远程成员信息与本地成员信息不一致时,根据远程成员信息更新本地成员信息。
本实施例中,响应于信息同步指令,从存储的集体标识并行读取预设数量的集体标识,并确定每个读取到的集体标识是否为锁定状态;当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态,处于锁定状态的集体标识对应的本地成员信息仅可由当前节点进行数据处理;再从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息;比较远程成员信息和本地成员信息是否一致,仅在不一致时,才根据远程成员信息更新本地成员信息,不必对本地成员信息整体进行更新,提高了信息同步效率。
在一个实施例中,标识读取模块1002用于当监听到信息同步指令时,遍历存储的标识范围信息;对于遍历到的标识范围信息,确定遍历到的标识范围信息所对应的集体标识;从确定的集体标识中并行读取预设数量的集体标识。
本实施例中,当监听到信息同步指令时,遍历存储的标识范围信息;对于每组标识范围信息,确定与标识范围信息所对应的集体标识后,再从确定的集体标识中并行读取预设数量的集体标识,以便根据预设数量的集体标识并行进行信息同步,提高了信息同步的速度。
在一个实施例中,信息同步装置1000还包括:集体提取模块和集体更新模块,其中:
集体提取模块,用于从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地集体信息和远程集体信息。
集体更新模块,用于根据远程集体信息更新本地集体信息。
本实施例中,从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地集体信息和远程集体信息后,根据远程集体信息更新本地集体信息,提高了更新本地集体信息的效率。
在一个实施例中,信息更新模块1010用于在远程成员信息和本地成员信息中,确定各自的重复成员信息;分别对远程成员信息和本地成员信息中,确定的重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息;当去重后的远程成员信息与去重后的本地成员信息不一致时,根据去重后的远程成员信息更新去重后的本地成员信息。
本实施例中,在远程成员信息和本地成员信息中,确定各自的重复成员信息,重读成员信息是出现次数大于等于两次的成员信息;再对重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息,去重处理后的各远程成员信息或各本地成员信息互不相同;当去重后的远程成员信息与去重后的本地成员信息不一致时,再根据去重后的远程成员信息更新去重后的本地成员信息,无需直接将去重后的远程成员信息替换本地成员信息,提高了信息同步的效率。
在一个实施例中,信息更新模块1010还用于按照成员编号顺序,分别对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;确定远程排列信息和本地排列信息,各自对应的远程信息字符串和本地信息字符串;当远程信息字符串和本地信息字符串不一致时,根据去重后的远程成员信息更新去重后的本地成员信息。
本实施例中,按照成员编号顺序,分别对去重后的远程成员信息和去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;再根据远程排列信息和本地排列信息,得到远程信息字符串和本地信息字符串;通过比较远程信息字符串和本地信息字符串,校验去重后的远程成员信息和去重后的本地成员信息是否一致,无需逐一比对各远程成员信息和本地成员信息,当远程信息字符串和本地信息字符串不一致时,再根据去重后的远程成员信息更新去重后的本地成员信息,提高了信息同步的效率。
在一个实施例中,信息更新模块1010还用于验证远程信息字符串与本地信息字符串是否一致;当远程信息字符串和本地信息字符串不一致时,确定去重后的远程成员信息与去重后的本地成员信息之间的差异信息;根据确定的差异信息确定去重后的本地成员信息的待更新信息;按照待更新信息对去重后的本地成员信息进行更新。
本实施例中,首先验证远程信息字符串与本地信息字符串是否一致,当不一致时,确定去重后的远程成员信息与去重后的本地成员信息之间的差异信息,根据确定的差异信息确定去重后的本地成员信息的待更新信息,待更新信息用于指示本地服务器对去重后的本地成员信息进行添加或删除操作,提高了对本地成员信息进行更新的效率。
关于信息同步装置的具体限定可以参见上文中对于信息同步方法的限定,在此不再赘述。上述信息同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,用以实现本地服务器102,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储用于信息同步的数据。该计算机设备的网络接口用于与外部的远程服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种信息同步方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述信息同步方法的步骤。此处信息同步方法的步骤可以是上述各个实施例的信息同步方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述信息同步方法的步骤。此处信息同步方法的步骤可以是上述各个实施例的信息同步方法中的步骤。
本实施例中,响应于信息同步指令,从存储的集体标识并行读取预设数量的集体标识,并确定每个读取到的集体标识是否为锁定状态;当读取到的集体标识为非锁定状态时,将读取到的集体标识置为锁定状态,处于锁定状态的集体标识对应的本地成员信息仅可由当前节点进行数据处理;再从本地数据库和远程数据库中,分别提取与读取到的集体标识所对应的本地成员信息和远程成员信息;比较远程成员信息和本地成员信息是否一致,仅在不一致时,才根据远程成员信息更新本地成员信息,不必对本地成员信息整体进行更新,提高了信息同步效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种信息同步方法,所述方法包括:
响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
2.根据权利要求1所述的方法,其特征在于,所述响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识包括:
当监听到信息同步指令时,遍历存储的标识范围信息;
对于遍历到的标识范围信息,确定遍历到的标识范围信息所对应的集体标识;
从确定的集体标识中并行读取预设数量的集体标识。
3.根据权利要求1所述的方法,其特征在于,所述当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态之后,还包括:
从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地集体信息和远程集体信息;
根据所述远程集体信息更新所述本地集体信息。
4.根据权利要求1所述的方法,其特征在于,所述当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息包括:
在所述远程成员信息和所述本地成员信息中,确定各自的重复成员信息;
分别对所述远程成员信息和所述本地成员信息中,确定的重复成员信息进行去重处理,得到去重后的远程成员信息和去重后的本地成员信息;
当所述去重后的远程成员信息与所述去重后的本地成员信息不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息。
5.根据权利要求4所述的方法,其特征在于,所述当所述去重后的远程成员信息与所述去重后的本地成员信息不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息包括:
按照成员编号顺序,分别对所述去重后的远程成员信息和所述去重后的本地成员信息中,各成员编号对应的远程成员信息和本地成员信息进行排列,得到远程排列信息和本地排列信息;
确定所述远程排列信息和所述本地排列信息,各自对应的远程信息字符串和本地信息字符串;
当所述远程信息字符串和所述本地信息字符串不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息。
6.根据权利要求5所述的方法,其特征在于,所述当所述远程信息字符串和所述本地信息字符串不一致时,根据所述去重后的远程成员信息更新所述去重后的本地成员信息包括:
验证所述远程信息字符串与所述本地信息字符串是否一致;
当所述远程信息字符串和所述本地信息字符串不一致时,确定所述去重后的远程成员信息与所述去重后的本地成员信息之间的差异信息;
根据确定的差异信息确定所述去重后的本地成员信息的待更新信息;
按照所述待更新信息对所述去重后的本地成员信息进行更新。
7.一种信息同步装置,其特征在于,所述装置包括:
标识读取模块,用于响应于信息同步指令,从存储的集体标识中并行读取预设数量的集体标识;
状态确定模块,用于对于每个读取到的集体标识,确定读取到的集体标识是否为锁定状态;
状态锁定模块,用于当所述读取到的集体标识为非锁定状态时,将所述读取到的集体标识置为锁定状态;
信息提取模块,用于从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地成员信息和远程成员信息;
信息更新模块,用于当所述远程成员信息与所述本地成员信息不一致时,根据所述远程成员信息更新所述本地成员信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
集体提取模块,用于从本地数据库和远程数据库中,分别提取与所述读取到的集体标识所对应的本地集体信息和远程集体信息;
集体更新模块,用于根据所述远程集体信息更新所述本地集体信息。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN201910019612.8A 2019-01-09 2019-01-09 信息同步方法、装置、计算机设备和存储介质 Active CN109815247B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910019612.8A CN109815247B (zh) 2019-01-09 2019-01-09 信息同步方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910019612.8A CN109815247B (zh) 2019-01-09 2019-01-09 信息同步方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN109815247A CN109815247A (zh) 2019-05-28
CN109815247B true CN109815247B (zh) 2021-05-07

Family

ID=66604164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910019612.8A Active CN109815247B (zh) 2019-01-09 2019-01-09 信息同步方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN109815247B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110888739B (zh) * 2019-11-22 2020-10-20 南京甄视智能科技有限公司 延迟任务的分布式处理方法与装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107070919A (zh) * 2011-09-09 2017-08-18 甲骨文国际公司 用于数据库事务的幂等性
CN107357920A (zh) * 2017-07-21 2017-11-17 北京奇艺世纪科技有限公司 一种增量式的多副本数据同步方法及系统
CN107426319A (zh) * 2015-01-30 2017-12-01 卓普网盘股份有限公司 存储受约束的共享内容项同步
EP3416354A1 (en) * 2017-06-13 2018-12-19 Tritan Software International Method and apparatus for bi-directional communication and data replication between multiple locations during intermittent connectivity

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797273B2 (en) * 2006-03-27 2010-09-14 Emoze Ltd. System and a method for reliable symmetric data synchronization
US10560361B2 (en) * 2017-01-10 2020-02-11 Wigwag Inc. Distributed database for synchronizing the accessibility of nodes and shared devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107070919A (zh) * 2011-09-09 2017-08-18 甲骨文国际公司 用于数据库事务的幂等性
CN107426319A (zh) * 2015-01-30 2017-12-01 卓普网盘股份有限公司 存储受约束的共享内容项同步
EP3416354A1 (en) * 2017-06-13 2018-12-19 Tritan Software International Method and apparatus for bi-directional communication and data replication between multiple locations during intermittent connectivity
CN107357920A (zh) * 2017-07-21 2017-11-17 北京奇艺世纪科技有限公司 一种增量式的多副本数据同步方法及系统

Also Published As

Publication number Publication date
CN109815247A (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
CN111209346B (zh) 一种区块链数据归档方法、装置和计算机可读存储介质
JP7090972B2 (ja) データ処理方法、装置、コンピュータ機器、及びコンピュータプログラム
US10277608B2 (en) System and method for verification lineage tracking of data sets
CN110572287B (zh) 数据容灾方法、装置、计算机设备和存储介质
CN108696356B (zh) 一种基于区块链的数字证书删除方法、装置及系统
CN110727724B (zh) 数据抽取方法、装置、计算机设备和存储介质
CN109492049B (zh) 用于区块链网络的数据处理、区块生成及同步方法
CN109815247B (zh) 信息同步方法、装置、计算机设备和存储介质
CN110597541A (zh) 基于区块链的接口更新处理方法、装置、设备及存储介质
CN110737719A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN111984732A (zh) 在区块链上实现去中心化检索的方法、节点及区块链网络
CN108389124B (zh) 数据处理方法、装置、计算机设备和存储介质
CN112632187B (zh) 一种基于计数布隆过滤器的属性隐藏与撤销方法
CN113470229A (zh) 开锁控制方法及装置、设备及存储介质
CN110049049B (zh) 一种dns区数据校验的方法和装置
CN110569240B (zh) 数据存储方法、装置、计算机设备和存储介质
CN113742681B (zh) 一种账户管理方法、装置、计算机设备和存储介质
CN111291001A (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
JP6992309B2 (ja) 送信装置、受信装置、及び通信方法
CN112559546B (zh) 数据库同步方法、装置、计算机设备及可读存储介质
CN111767168B (zh) 基于区块链的便于数据回溯的存储系统
CN113127519A (zh) 文件的查询方法、装置、计算机设备及存储介质
CN111309689A (zh) 文件查重方法及装置
CN111079199B (zh) 基于区块链技术的企业信用数据截图防篡改方法
CN112948406B (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
GR01 Patent grant
GR01 Patent grant