CN105468718A - 数据一致性处理方法、装置和系统 - Google Patents
数据一致性处理方法、装置和系统 Download PDFInfo
- Publication number
- CN105468718A CN105468718A CN201510811694.1A CN201510811694A CN105468718A CN 105468718 A CN105468718 A CN 105468718A CN 201510811694 A CN201510811694 A CN 201510811694A CN 105468718 A CN105468718 A CN 105468718A
- Authority
- CN
- China
- Prior art keywords
- request
- serial number
- write
- sequence number
- data
- 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
Links
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
Abstract
本发明涉及一种数据一致性处理方法,包括:接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与第一请求序列号关联存储至请求序号队列;广播第一请求序列号和对应的第一写请求至代理服务器,以使代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;将返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器,保证读取的数据和写入的数据的一致性,此外,还提供了另一种数据一致性处理方法、装置和系统。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种数据一致性处理方法、装置和系统。
背景技术
随着计算机技术的发展,大量的数据在互联网上传播和存储,往往采用分布式系统进行海量数据处理。
现有的分布式数据存储系统往往采用主从的架构,采用部署一台主机,多台备机的方式,在主机上进行读写,在备机上进行读,而主机写之后通过binlog文件同步到备机。备机解析相应的binlog文件还原在主机上的写操作,从而能得到跟主机一样的操作结果,备份结点采用复制的方式进行还原写操作,使得主机和备机的数据一致性存在一定的延迟,使得终端在备机上读取的数据不一定是最新的,从而产生数据不一致问题。
发明内容
基于此,有必要针对上述技术问题,提供一种数据一致性处理方法、装置和系统,保证读取的数据和写入的数据的一致性。
一种数据一致性处理方法,所述方法包括:
接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列;
广播所述第一请求序列号和对应的第一写请求至代理服务器,以使所述代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
一种数据一致性处理装置,所述装置包括:
写请求处理模块,用于接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列;
广播模块,用于广播所述第一请求序列号和对应的第一写请求至代理服务器,以使所述代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
响应处理模块,用于将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
上述数据一致性处理方法和装置,通过接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与第一请求序列号关联存储至请求序号队列,广播第一请求序列号和对应的第一写请求至代理服务器,以使代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号,将返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器,通过广播第一请求序列号和对应的第一写请求至代理服务器使得代理服务器在本地请求序列号和第一请求序列号不连续时,将间断的数据补齐,保证了数据写入的一致性,且在读取数据时通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
一种数据一致性处理方法,所述方法包括:
接收接入服务器广播的第一请求序列号和对应的第一写请求,所述第一请求序列号为所述第一写请求对应的全局递增序列号;
获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续;
当数据写入成功时返回最大请求序列号,以使接入服务器将所述返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时所述接入服务器选择代理服务器。
一种数据一致性处理装置,所述装置包括:
接收模块,用于接收接入服务器广播的第一请求序列号和对应的第一写请求,所述第一请求序列号为所述第一写请求对应的全局递增序列号;
数据写入模块,用于获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续;
返回模块,用于当数据写入成功时返回最大请求序列号,以使接入服务器将所述返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时所述接入服务器选择代理服务器。
上述数据一致性处理方法和装置,通过接收接入服务器广播的第一请求序列号和对应的第一写请求,第一请求序列号为所述第一写请求对应的全局递增序列号,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号,以使接入服务器将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,数据写入成功,最大请求序列号用于读取数据时接入服务器选择代理服务器,在本地请求序列号和第一请求序列号不连续时,通过将间断的数据补齐,保证了数据写入的一致性,且返回最大的请求序列号以使得在读取数据时接入服务器通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
一种数据一致性处理系统,所述系统包括:
接入服务器,用于接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列,广播所述第一请求序列号和对应的第一写请求至代理服务器;
至少2个代理服务器,用于接收第一请求序列号和对应的第一写请求,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
接入服务器还用于将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
上述所述数据一致性处理系统,通过接入服务器和代理服务器配合,接入服务器广播第一请求序列号和对应的第一写请求至代理服务器,代理服务器在本地请求序列号和第一请求序列号不连续时,将间断的数据补齐,保证了数据写入的一致性,且在读取数据时接入服务器通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
附图说明
图1为一个实施例中数据一致性处理方法的应用环境图;
图2为一个实施例中图1中接入服务器的内部结构图;
图3为一个实施例中图1中代理服务器的内部结构图;
图4为一个实施例中数据一致性处理方法的流程图;
图5为一个实施例中请求序号队列的示意图;
图6为一个实施例中另一种数据一致性处理方法的流程图;
图7为一个实施例中写入数据的流程图;
图8为一个实施例中本地序号队列的示意图;
图9为一个实施例中更新后的本地序号队列的示意图;
图10为一个实施例中数据一致性处理系统的结构框图;
图11为一个实施例中接入服务器上完成数据一致性处理方法的步骤示意图;
图12为一个实施例中代理服务器上完成数据一致性处理方法的步骤示意图;
图13为一个实施例中数据一致性处理装置的结构框图;
图14为另一个实施例中数据一致性处理装置的结构框图;
图15为再一个实施例中数据一致性处理装置的结构框图;
图16为一个实施例中另一种数据一致性处理装置的结构框图;
图17为一个实施例中数据写入模块的结构框图。
具体实施方式
图1为一个实施例中数据一致性处理方法运行的应用环境图。如图1所示,该应用环境包括终端110、接入服务器120和代理服务器130,其中接入服务器120和终端110、代理服务器130通过网络进行通信。
终端110可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。终端110向接入服务器120发送读请求和写请求,接入服务器120广播写请求至代理服务器130,并且选择接收读请求的代理服务器,代理服务器130可以响应接入服务器120发送的请求。
在一个实施例中,图1中的接入服务器120的内部结构如图2所示,该接入服务器120包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该接入服务器120的存储介质存储有操作系统、数据库和第一数据一致性处理装置,数据库用于存储数据,第一数据一致性处理装置用于实现一种适用于接入服务器120的数据一致性处理方法。该接入服务器120的处理器用于提供计算和控制能力,支撑整个接入服务器120的运行。该接入服务器120的内存为存储介质中的第一数据一致性处理装置的运行提供环境。该接入服务器120的网络接口用于与外部的终端110和代理服务器130通过网络连接通信,比如接收终端110发送的请求以及向代理服务器130发送请求等。
在一个实施例中,图1中的代理服务器130的内部结构如图3所示,该代理服务器120包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该代理服务器130的存储介质存储有操作系统、数据库和第二数据一致性处理装置,数据库用于存储数据,第二数据一致性处理装置用于实现一种适用于代理服务器130的数据一致性处理方法。该代理服务器130的处理器用于提供计算和控制能力,支撑整个代理服务器130的运行。该代理服务器130的内存为存储介质中的第二数据一致性处理装置的运行提供环境。该代理服务器130的网络接口用于与外部的接入服务器120通过网络连接通信,比如接收接入服务器120发送的请求以及向接入服务器120返回数据等。
如图4所示,在一个实施例中,提供了一种数据一致性处理方法,以应用于上述应用环境中的接入服务器120来举例说明,包括如下步骤:
步骤S210,接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与第一请求序列号关联存储至请求序号队列。
具体的,全局递增序列号是指不同的系统或是同一个系统的不同主机之间发送的请求对应的序列号按照时间顺序递增,且局唯一。全局递增序列号可通过zookeeper对各个写请求分配,zookeeper分布式服务框架用于分布式应用中进行数据管理,获取zookeeper通过分布式锁操作为每个写请求分配的全局的序列号来保证写操作的时序性。由于分布式锁在不同的系统或是同一个系统的不同主机之间互斥操作共享资源,使得每个写请求分配的序列号具备全局唯一性且递增,有效区分了各个写请求。每个写请求都有对应的请求序列号,且随着写请求发送时间的先后顺序递增。将第一写请求与第一请求序列号关联存储至请求序号队列,可以理解的是,当第一写请求包括多个写请求时,可按照第一请求序列号中从小到大的顺序依次写入请求序号队列,请求序号队列可采用第三方key-value工具进行缓存,如redis数据库,memcache高速缓存系统。如图5所示,为一个请求序号队列的示意图,其中seq0-6表示请求序列号,writerequest0-6为与请求序列号对应的写请求。
步骤S220,广播第一请求序列号和对应的第一写请求至代理服务器,以使代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号。
具体的,本地请求序列号是当前代理服务器中历史接收到的最大请求序列号。为了方便的获取本地请求序列号,代理服务器可以将各个接收到的请求序列号按从小到大的顺序存入本地序号队列,则本地序号队列队尾的请求序列号就是序号最大的。可以理解的是,为了节约存储空间,可定期删除本地序号队列中已经完成数据写入的历史请求序列号,只保留最近更新的请求序列号。如果本地请求序列号和第一请求序列号连续,则根据第一请求序列号对应的第一写请求写入数据。如果本地请求序列号和第一请求序列号不连续,则可能是上次接入服务器广播请求序列号和对应的写请求时出现了丢包,导致代理服务器的本地请求序列号与第一请求序列号不连续,也有可能是接入服务器发送了多个写请求,而序列号大的写请求先到达了代理服务器,无论是哪种情况导致的不连续,代理服务器都会获取本地请求序列号和第一请求序列号之间间断的请求序列号,然后根据间断的请求序列号对应的写入请求写入数据,最后再根据第一请求序列号对应的写请求写入数据,使得写入的数据对应的写入请求的请求序列号连续。间断的请求序列号和对应的写入请求都可从请求序号队列中获取。可以理解的是,对于对写请求的顺序有严格要求的情况下,按照请求序列号从小到大的顺序依次写入数据。将不连续的请求序列号对应的写请求补齐的操作,保证了写入数据的正确性和一致性。当所有的写请求写入数据成功时,返回最大的请求序列号,其中所有的写请求包括本地请求序列号和第一请求序列号之间间断的请求序列号,其中所有的写请求对应的请求序列号之间必须是连续的。
步骤S230,将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器。
具体的,只要有任一代理服务器返回了最大请求序列号,则说明有代理服务器已经根据写请求完成了数据写入,即使其它的代理服务器还没有完成数据写入,也判断为数据写入成功,可进入读操作,使得响应速度快。因为只需要将读请求发送至已经完成数据写入的代理服务器即可。将返回的最大请求序列号与代理服务器关联,就可在接收到读请求时,根据最大请求序列号选择代理服务器,将读请求下发到最大请求序列号中最大的序列号对应的代理服务器,因为此代理服务器对应的数据是最新的,保证了数据读取的正确性和一致性。当最大请求序列号中存在多个并列最大的序列号时,可发送读请求至任一个并列最大的序列号对应的代理服务器。在一个实施例中,将代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号进行比较,当任一代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号相同时,才判断为数据写入成功,因为当两者相同时表明代理服务器正确写入了包括最大请求序列号的所有写请求对应的数据,证明请求序号队列中的最大请求序列号在发送时没有丢失,进一步提高了数据写入和读取的正确性和一致性。
本实施例中,通过接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与第一请求序列号关联存储至请求序号队列,广播第一请求序列号和对应的第一写请求至代理服务器,以使代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号,将返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器,通过广播第一请求序列号和对应的第一写请求至代理服务器使得代理服务器在本地请求序列号和第一请求序列号不连续时,将间断的数据补齐,保证了数据写入的一致性,且在读取数据时通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
在一个实施例中,所述方法还包括:接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选最大请求序列号中的最大值对应的代理服务器为目标代理服务器,发送读请求至目标代理服务器。
具体的,代理服务器返回的请求序列号越大,表明其存储的数据越新,选择最大请求序列号中的最大值对应的代理服务器为目标代理服务器,保证了目标代理服务器上的数据是根据最新的写入请求写入数据后的数据,从而保证了读取数据的正确性和一致性。在一个实施例中,当代理服务器的数量较多时,获取各个代理服务器对应的最大请求序列号的最大值较为耗时,可在代理服务器对应的最大请求序列号中查找与请求序号队列中的最大请求序列号相同的请求序列号,当查找得到时,直接发送读请求至此请求序列号对应的代理服务器,可提高请求发送的速度。
在一个实施例中,在所有步骤之后,还包括:获取各个代理服务器对应的最大请求序列号,当所有代理服务器对应的最大请求序列号都小于请求序号队列中的最大请求序列号时,发送提示信息。
具体的,如果所有代理服务器对应的最大请求序列号都小于请求序号队列中的最大请求序列号,则说明请求序号队列中的最大请求序列号没有发送成功,或代理服务器在写入数据时没有写入成功请求序号队列中的最大请求序列号对应的写入请求的数据,此时所有代理服务器中的数据都不是最新的,可发送警告信息,或重新广播请求序号队列中的最大请求序列号至代理服务器,可在丢包或数据写入不成功时及时发现错误,进一步提高了数据写入和读取的正确性和一致性。
在一个实施例中,如图6所示,提供了一种数据一致性处理方法,以应用于上述应用环境中的代理服务器举例说明,包括以下步骤:
步骤S310,接收接入服务器广播的第一请求序列号和对应的第一写请求,第一请求序列号为第一写请求对应的全局递增序列号。
具体的,全局递增序列号是指不同的系统或是同一个系统的不同主机之间发送的请求对应的序列号按照时间顺序递增,且局唯一。全局递增序列号可通过zookeeper对各个写请求分配,zookeeper分布式服务框架用于分布式应用中进行数据管理,获取zookeeper通过分布式锁操作为每个写请求分配的全局的序列号来保证写操作的时序性。由于分布式锁在不同的系统或是同一个系统的不同主机之间互斥操作共享资源,使得每个写请求分配的序列号具备全局唯一性且递增,有效区分了各个写请求。每个写请求都有对应的请求序列号,且随着写请求发送时间的先后顺序递增。第一请求序列号和对应的第一写请求可为一个或多个。
步骤S320,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续。
具体的,本地请求序列号是当前代理服务器中存储的历史接收到的最大请求序列号。为了方便的获取本地请求序列号,代理服务器可以将各个接收到的请求序列号按从小到大的顺序存入本地序号队列,则本地序号队列队尾的请求序列号就是序号最大的。可以理解的是,为了节约存储空间,可定期删除本地序号队列中已经完成数据写入的历史请求序列号,只保留最近更新的请求序列号。如果本地请求序列号和第一请求序列号连续,则根据第一请求序列号对应的第一写请求写入数据。如果本地请求序列号和第一请求序列号不连续,则可能是上次接入服务器广播请求序列号和对应的写请求时出现了丢包,导致代理服务器的本地请求序列号与第一请求序列号不连续,也有可能是接入服务器发送了多个写请求,而序列号大的写请求先到达了代理服务器,无论是哪种情况导致的不连续,代理服务器都会获取本地请求序列号和第一请求序列号之间间断的请求序列号,然后根据间断的请求序列号对应的写入请求写入数据,最后再根据第一请求序列号对应的写请求写入数据,使得写入的数据对应的写入请求的请求序列号连续。间断的请求序列号和对应的写入请求都可从请求序号队列中获取。可以理解的是,对于对写请求的顺序有严格要求的情况下,按照请求序列号从小到大的顺序依次写入数据。将不连续的请求序列号对应的写请求补齐的操作,保证了写入数据的正确性和一致性。
步骤S330,当数据写入成功时返回最大请求序列号,以使接入服务器将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,数据写入成功,最大请求序列号用于读取数据时接入服务器选择代理服务器。
具体的,当所有的写请求写入数据成功时,返回最大的请求序列号,其中所有的写请求包括本地请求序列号和第一请求序列号之间间断的请求序列号,其中所有的写请求对应的请求序列号之间必须是连续的。只要有任一代理服务器返回了最大请求序列号,则说明有代理服务器已经根据写请求完成了数据写入,即使其它的代理服务器还没有完成数据写入,也判断为数据写入成功,可进入读操作,使得响应速度快。因为只需要将读请求发送至已经完成数据写入的代理服务器即可。将返回的最大请求序列号与代理服务器关联,就可在接收到读请求时,根据最大请求序列号选择代理服务器,将读请求下发到最大请求序列号中最大的序列号对应的代理服务器,因为此代理服务器对应的数据是最新的,保证了数据读取的正确性和一致性。当最大请求序列号中存在多个并列最大的序列号时,可发送读请求至任一个并列最大的序列号对应的代理服务器。在一个实施例中,将代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号进行比较,当任一代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号相同时,才判断为数据写入成功,因为当两者相同时表明代理服务器正确写入了包括最大请求序列号的所有写请求对应的数据,证明请求序号队列中的最大请求序列号在发送时没有丢失,进一步提高了数据写入和读取的正确性和一致性。
本实施例中,通过接收接入服务器广播的第一请求序列号和对应的第一写请求,第一请求序列号为所述第一写请求对应的全局递增序列号,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号,以使接入服务器将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,数据写入成功,最大请求序列号用于读取数据时接入服务器选择代理服务器,在本地请求序列号和第一请求序列号不连续时,通过将间断的数据补齐,保证了数据写入的一致性,且返回最大的请求序列号以使得在读取数据时接入服务器通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
在一个实施例中,如图7所示,步骤S320包括:
步骤S321,获取本地序号队列队尾的本地请求序列号,判断本地请求序列号是否与第一请求序列号连续,如果是,则进入步骤S322,否则进入步骤S323。
具体的,本地序号队列按照从小到大的顺序存储了各个请求序列号,队列队尾的请求序列号最大,为本地请求序列号。如图8所示,为一个本地序号队列的示意图,410为队尾,存储了本地请求序列号seq2,请求序列号seq0、seq1、seq2中最大的。
步骤S322,将第一请求序列号写入本地序号队列,并根据第一写请求写入数据。
具体的,当第一请求序列号与本地序列号连续时,可直接将第一请求序列号写入本地序号队列,并根据第一写请求写入数据。如第一请求序列号为seq3与seq2连续,则将seq3直接写入本地序号队列。
步骤S323,从请求序号队列获取本地请求序列号与第一请求序列号之间的第二请求序列号,并按顺序将第二请求序列号、第一请求序列号写入本地序号队列,根据第一请求序列号和第二请求序列号对应的写请求写入数据。
具体的,当第一请求序列号与本地序列号不连续时,如第一请求序列号为seq6,而本地请求序列号为seq2,则获取本地请求序列号与第一请求序列号之间的第二请求序列号,可通过请求序号队列获取,请求序号队列中存储了各个写请求和对应的请求序列号,缓存在第三方key-value工具,如redis数据库、memcache高速缓存系统中。如从图5所示的请求序号队列中获取第二请求序列号seq3-5和对应的第二写请求writerequest3-5,并按顺序将第二请求序列号、第一请求序列号写入本地序号队列,如按seq3-6的顺序写入本地序号队列,如图9所示,为更新的本地序号队列,此时本地序列号也更新为seq6。并根据第一请求序列号和第二请求序列号对应的写请求写入数据。通过将请求序列号按顺序存入本地序号队列的方式,方便管理各个请求序列号,并可快速从队尾获取本地请求序列号。
在一个实施例中,如图10所示,提供了一种数据一致性处理系统,包括:
接入服务器510,用于接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与所述第一请求序列号关联存储至请求序号队列,广播第一请求序列号和对应的第一写请求至代理服务器520。
具体的,全局递增序列号是指不同的系统或是同一个系统的不同主机之间发送的请求对应的序列号按照时间顺序递增,且局唯一。全局递增序列号可通过zookeeper对各个写请求分配,zookeeper分布式服务框架用于分布式应用中进行数据管理,获取zookeeper通过分布式锁操作为每个写请求分配的全局的序列号来保证写操作的时序性。由于分布式锁在不同的系统或是同一个系统的不同主机之间互斥操作共享资源,使得每个写请求分配的序列号具备全局唯一性且递增,有效区分了各个写请求。每个写请求都有对应的请求序列号,且随着写请求发送时间的先后顺序递增。将第一写请求与第一请求序列号关联存储至请求序号队列,可以理解的是,当第一写请求包括多个写请求时,可按照第一请求序列号中从小到大的顺序依次写入请求序号队列,请求序号队列可采用第三方key-value工具进行缓存,如redis数据库,memcache高速缓存系统。
代理服务器520,用于接收第一请求序列号和对应的第一写请求,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号,代理服务器520包括代理服务器521和代理服务器522。
具体的,代理服务器520包括代理服务器521和代理服务器522,其数量可为更多,体现分布式系统。本地请求序列号是当前代理服务器中历史接收到的最大请求序列号。为了方便的获取本地请求序列号,代理服务器可以将各个接收到的请求序列号按从小到大的顺序存入本地序号队列,则本地序号队列队尾的请求序列号就是序号最大的。可以理解的是,为了节约存储空间,可定期删除本地序号队列中已经完成数据写入的历史请求序列号,只保留最近更新的请求序列号。如果本地请求序列号和第一请求序列号连续,则根据第一请求序列号对应的第一写请求写入数据。如果本地请求序列号和第一请求序列号不连续,则可能是上次接入服务器广播请求序列号和对应的写请求时出现了丢包,导致代理服务器的本地请求序列号与第一请求序列号不连续,也有可能是接入服务器发送了多个写请求,而序列号大的写请求先到达了代理服务器,无论是哪种情况导致的不连续,代理服务器都会获取本地请求序列号和第一请求序列号之间间断的请求序列号,然后根据间断的请求序列号对应的写入请求写入数据,最后再根据第一请求序列号对应的写请求写入数据,使得写入的数据对应的写入请求的请求序列号连续。间断的请求序列号和对应的写入请求都可从请求序号队列中获取。可以理解的是,对于对写请求的顺序有严格要求的情况下,按照请求序列号从小到大的顺序依次写入数据。将不连续的请求序列号对应的写请求补齐的操作,保证了写入数据的正确性和一致性。当所有的写请求写入数据成功时,返回最大的请求序列号,其中所有的写请求包括本地请求序列号和第一请求序列号之间间断的请求序列号,其中所有的写请求对应的请求序列号之间必须是连续的。
接入服务器510还用于将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器。
具体的,只要有任一代理服务器返回了最大请求序列号,则说明有代理服务器已经根据写请求完成了数据写入,即使其它的代理服务器还没有完成数据写入,也判断为数据写入成功,可进入读操作,使得响应速度快。因为只需要将读请求发送至已经完成数据写入的代理服务器即可。将返回的最大请求序列号与代理服务器关联,就可在接收到读请求时,根据最大请求序列号选择代理服务器,将读请求下发到最大请求序列号中最大的序列号对应的代理服务器,因为此代理服务器对应的数据是最新的,保证了数据读取的正确性和一致性。当最大请求序列号中存在多个并列最大的序列号时,可发送读请求至任一个并列最大的序列号对应的代理服务器。在一个实施例中,将代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号进行比较,当任一代理服务器返回的最大请求序列号与请求序号队列中的最大请求序列号相同时,才判断为数据写入成功,因为当两者相同时表明代理服务器正确写入了包括最大请求序列号的所有写请求对应的数据,证明请求序号队列中的最大请求序列号在发送时没有丢失,进一步提高了数据写入和读取的正确性和一致性。
本实施例中,通过接入服务器和代理服务器配合,接入服务器广播第一请求序列号和对应的第一写请求至代理服务器,代理服务器在本地请求序列号和第一请求序列号不连续时,将间断的数据补齐,保证了数据写入的一致性,且在读取数据时接入服务器通过返回的最大请求序列号选择数据写入符合要求的代理服务器,不需要等待所有代理服务器全部完成数据写入就可进入读操作,在保证速度的同时保证了数据写入和读取的一致性。
在一个实施例中,接入服务器510还用于接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选最大请求序列号中的最大值对应的代理服务器为目标代理服务器,发送读请求至目标代理服务器。
具体的,代理服务器返回的请求序列号越大,表明其存储的数据越新,选择最大请求序列号中的最大值对应的代理服务器为目标代理服务器,保证了目标代理服务器上的数据是根据最新的写入请求写入数据后的数据,从而保证了读取数据的正确性和一致性。在一个实施例中,当代理服务器的数量较多时,获取各个代理服务器对应的最大请求序列号的最大值较为耗时,接入服务器510还用于在代理服务器对应的最大请求序列号中查找与请求序号队列中的最大请求序列号相同的请求序列号,当查找得到时,直接发送读请求至此请求序列号对应的代理服务器,可提高请求发送的速度。
在一个实施例中,代理服务器还用于获取本地序号队列队尾的本地请求序列号,判断本地请求序列号是否与第一请求序列号连续,如果是,则将第一请求序列号写入本地序号队列,并根据第一写请求写入数据,如果不连续,则从请求序号队列获取本地请求序列号与所述第一请求序列号之间的第二请求序列号,并按顺序将第二请求序列号、第一请求序列号写入本地序号队列,根据第一请求序列号和第二请求序列号对应的写请求写入数据。
具体的,本地序号队列按照从小到大的顺序存储了各个请求序列号,队列队尾的请求序列号最大,为本地请求序列号。当第一请求序列号与本地序列号连续时,代理服务器用于直接将第一请求序列号写入本地序号队列,并根据第一写请求写入数据。当第一请求序列号与本地序列号不连续时,如第一请求序列号为seq6,而本地请求序列号为seq2,则获取本地请求序列号与第一请求序列号之间的第二请求序列号,可通过请求序号队列获取,请求序号队列中存储了各个写请求和对应的请求序列号,缓存在第三方key-value工具,如redis数据库、memcache高速缓存系统中。通过将请求序列号按顺序存入本地序号队列的方式,方便管理各个请求序列号,并可快速从队尾获取本地请求序列号。
在一个具体的实施例中,代理服务器中采用MySQL数据库存储写入的数据,数据一致性处理方法通过接入服务器和代理服务器配合完成,结合图11所示,接入服务器上进行的步骤如下:
1、接收终端发送的第一写请求,将第一写请求依次写入待处理写队列作为待处理写任务;
2、写线程从待处理写队列获取待处理写任务。
3、将第一写请求和对应的第一请求序列号关联存储至请求序号队列。
4、写线程将各个待处理写任务下发至代理服务器,当任一代理服务器返回请求序列号时,判断为数据写入成功。
5、第一请求序列号加1作为新的写请求对应的请求序列号作为zookeeper待分配的请求序列号。
6、接收终端发送的读请求,将读请求依次写入待处理读队列作为待处理读任务。
7、读线程从待处理读队列中获取待处理读任务,根据各个代理服务器返回请求序列号的大小,将待处理读任务分配至合适的代理服务器执行读请求。
结合图12所示,代理服务器上进行的步骤如下:
1、接收接入服务器发送的第一写请求。
2、将第一写请求依次写入文件队列。
3、数据库执行单元读取文件队列,判断本地请求序列号是否与读取的请求序列号连续,如果是,则将请求序列号写入本地序号队列,并根据写请求写入数据至数据库,并记录各个写入数据的位置偏移和对应的请求序列号。如果不是,则从请求序号队列获取本地请求序列号与读取的请求序列号之间的第二请求序列号,按顺序将第二请求序列号、读取的请求序列号写入本地序号队列,根据读取的请求序列号和第二请求序列号对应的写请求写入数据至数据库,并记录各个写入数据的位置偏移和对应的请求序列号。
4、写入数据成功后返回最大的请求序列号。
在一个实施例中,如图13所示,提供了一种数据一致性处理装置,包括:
写请求处理模块610,用于接收终端发送的第一写请求,获取第一写请求对应的全局递增第一请求序列号,将第一写请求与第一请求序列号关联存储至请求序号队列。
广播模块620,用于广播所述第一请求序列号和对应的第一写请求至代理服务器,以使代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号。
响应处理模块630,用于将返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,最大请求序列号用于读取数据时选择代理服务器。
在一个实施例中,如图14所示,所述装置还包括:
读请求处理模块640,用于接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选最大请求序列号中的最大值对应的代理服务器为目标代理服务器,发送读请求至所述目标代理服务器。
在一个实施例中,如图15所示,所述装置还包括:
提醒模块650,用于获取各个代理服务器对应的最大请求序列号,当所有代理服务器对应的最大请求序列号都小于请求序号队列中的最大请求序列号时,发送提示信息。
在一个实施例中,如图16所示,提供了一种数据一致性处理装置,包括:
接收模块710,用于接收接入服务器广播的第一请求序列号和对应的第一写请求,所述第一请求序列号为所述第一写请求对应的全局递增序列号。
数据写入模块720,用于获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续。
返回模块730,用于当数据写入成功时返回最大请求序列号,以使接入服务器将所述返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时所述接入服务器选择代理服务器。
在一个实施例中,如图17所示,数据写入模块720包括:
获取单元721,用于获取本地序号队列队尾的本地请求序列号。
判断单元722,用于判断本地请求序列号是否与第一请求序列号连续,如果是,则进入写入单元,否则进入处理单元。
写入单元723,用于将第一请求序列号写入本地序号队列,并根据第一写请求写入数据。
处理单元724,用于从请求序号队列获取本地请求序列号与第一请求序列号之间的第二请求序列号,并按顺序将所述第二请求序列号、第一请求序列号写入本地序号队列,根据第一请求序列号和第二请求序列号对应的写请求写入数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述程序可存储于一计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种数据一致性处理方法,所述方法包括:
接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列;
广播所述第一请求序列号和对应的第一写请求至代理服务器,以使所述代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选所述最大请求序列号中的最大值对应的代理服务器为目标代理服务器;
发送所述读请求至所述目标代理服务器。
3.根据权利要求1所述的方法,其特征在于,在所有步骤之后,还包括:
获取所述各个代理服务器对应的最大请求序列号,当所有代理服务器对应的最大请求序列号都小于所述请求序号队列中的最大请求序列号时,发送提示信息。
4.一种数据一致性处理方法,所述方法包括:
接收接入服务器广播的第一请求序列号和对应的第一写请求,所述第一请求序列号为所述第一写请求对应的全局递增序列号;
获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续;
当数据写入成功时返回最大请求序列号,以使接入服务器将所述返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时所述接入服务器选择代理服务器。
5.根据权利要求4所述的方法,其特征在于,所述根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续的步骤包括:
获取本地序号队列队尾的本地请求序列号;
判断所述本地请求序列号是否与所述第一请求序列号连续,如果是,则将所述第一请求序列号写入所述本地序号队列,并根据所述第一写请求写入数据;
如果不连续,则从请求序号队列获取本地请求序列号与所述第一请求序列号之间的第二请求序列号,并按顺序将所述第二请求序列号、第一请求序列号写入本地序号队列,根据所述第一请求序列号和第二请求序列号对应的写请求写入数据。
6.一种数据一致性处理装置,其特征在于,所述装置包括:
写请求处理模块,用于接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列;
广播模块,用于广播所述第一请求序列号和对应的第一写请求至代理服务器,以使所述代理服务器根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
响应处理模块,用于将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
读请求处理模块,用于接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选所述最大请求序列号中的最大值对应的代理服务器为目标代理服务器,发送所述读请求至所述目标代理服务器。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
提醒模块,用于获取所述各个代理服务器对应的最大请求序列号,当所有代理服务器对应的最大请求序列号都小于所述请求序号队列中的最大请求序列号时,发送提示信息。
9.一种数据一致性处理装置,其特征在于,所述装置包括:
接收模块,用于接收接入服务器广播的第一请求序列号和对应的第一写请求,所述第一请求序列号为所述第一写请求对应的全局递增序列号;
数据写入模块,用于获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续;
返回模块,用于当数据写入成功时返回最大请求序列号,以使接入服务器将所述返回的最大请求序列号与代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时所述接入服务器选择代理服务器。
10.根据权利要求9所述的装置,其特征在于,所述数据写入模块包括:
获取单元,用于获取本地序号队列队尾的本地请求序列号;
判断单元,用于判断所述本地请求序列号是否与所述第一请求序列号连续,如果是,则进入写入单元,否则进入处理单元;
写入单元,用于将所述第一请求序列号写入所述本地序号队列,并根据所述第一写请求写入数据;
处理单元,用于从请求序号队列获取本地请求序列号与所述第一请求序列号之间的第二请求序列号,并按顺序将所述第二请求序列号、第一请求序列号写入本地序号队列,根据所述第一请求序列号和第二请求序列号对应的写请求写入数据。
11.一种数据一致性处理系统,其特征在于,所述系统包括:
接入服务器,用于接收终端发送的第一写请求,获取所述第一写请求对应的全局递增第一请求序列号,将所述第一写请求与所述第一请求序列号关联存储至请求序号队列,广播所述第一请求序列号和对应的第一写请求至代理服务器;
至少2个代理服务器,用于接收第一请求序列号和对应的第一写请求,获取本地请求序列号,根据本地请求序列号和第一请求序列号的连续性写入数据,使所述写入的数据对应的写入请求的请求序列号连续,当数据写入成功时返回最大请求序列号;
所述接入服务器还用于将所述返回的最大请求序列号与所述代理服务器关联,当任一代理服务器返回最大请求序列号时,判断为数据写入成功,所述最大请求序列号用于读取数据时选择代理服务器。
12.根据权利要求11所述的系统,其特征在于,所述接入服务器还用于接收终端发送的读请求,比较各个代理服务器对应的最大请求序列号,筛选所述最大请求序列号中的最大值对应的代理服务器为目标代理服务器,发送所述读请求至所述目标代理服务器。
13.根据权利要求11所述的系统,其特征在于,所述接入服务器还用于获取所述各个代理服务器对应的最大请求序列号,当所有代理服务器对应的最大请求序列号都小于所述请求序号队列中的最大请求序列号时,发送提示信息。
14.根据权利要求11所述的系统,其特征在于,所述代理服务器还用于获取本地序号队列队尾的本地请求序列号,判断所述本地请求序列号是否与所述第一请求序列号连续,如果是,则将所述第一请求序列号写入所述本地序号队列,并根据所述第一写请求写入数据,如果不连续,则从请求序号队列获取本地请求序列号与所述第一请求序列号之间的第二请求序列号,并按顺序将所述第二请求序列号、第一请求序列号写入本地序号队列,根据所述第一请求序列号和第二请求序列号对应的写请求写入数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510811694.1A CN105468718B (zh) | 2015-11-18 | 2015-11-18 | 数据一致性处理方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510811694.1A CN105468718B (zh) | 2015-11-18 | 2015-11-18 | 数据一致性处理方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105468718A true CN105468718A (zh) | 2016-04-06 |
CN105468718B CN105468718B (zh) | 2020-09-08 |
Family
ID=55606419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510811694.1A Active CN105468718B (zh) | 2015-11-18 | 2015-11-18 | 数据一致性处理方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105468718B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395559A (zh) * | 2017-05-27 | 2017-11-24 | 北京五八信息技术有限公司 | 基于redis的数据处理方法及设备 |
CN107766354A (zh) * | 2016-08-17 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 一种用于保证数据正确性的方法与设备 |
CN109828979A (zh) * | 2019-01-31 | 2019-05-31 | 浙江小泰科技有限公司 | 一种数据一致性检测方法及系统 |
CN110651246A (zh) * | 2017-10-25 | 2020-01-03 | 华为技术有限公司 | 一种数据读写方法、装置和存储服务器 |
CN111291424A (zh) * | 2020-02-19 | 2020-06-16 | 望海康信(北京)科技股份公司 | 标识号生成方法、装置、计算机设备及存储介质 |
WO2021098555A1 (zh) * | 2019-11-22 | 2021-05-27 | 北京金山云网络技术有限公司 | 一种分布式表格存储的处理方法、装置及系统 |
CN114594907A (zh) * | 2022-02-24 | 2022-06-07 | 百果园技术(新加坡)有限公司 | 一种数据读写处理方法、装置、设备及存储介质 |
CN115174527A (zh) * | 2022-07-12 | 2022-10-11 | 腾讯科技(深圳)有限公司 | 序列号处理方法和装置、计算设备、存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564517A (zh) * | 2004-03-26 | 2005-01-12 | 清华大学 | 内存-网络内存-磁盘高速可靠存储系统及其读写方法 |
US20070106707A1 (en) * | 2005-11-08 | 2007-05-10 | Nec Corporation | File management method for log-structured file system for sequentially adding and storing log of file access |
CN101751415A (zh) * | 2008-12-09 | 2010-06-23 | 中国移动通信集团公司 | 元数据服务系统、元数据同步方法与写服务器更新方法 |
US7953120B2 (en) * | 2008-03-31 | 2011-05-31 | International Business Machines Corporation | Efficient synchronization of a sliding buffer window to prevent packet re-injection in an internet protocol (IP) network |
CN102981779A (zh) * | 2012-11-22 | 2013-03-20 | 华为技术有限公司 | 数据处理方法和设备 |
CN103164418A (zh) * | 2011-12-12 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 一种序列号的处理方法及设备 |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
CN103580906A (zh) * | 2012-08-09 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 一种数据备份的方法、系统及服务器 |
CN103853827A (zh) * | 2014-03-07 | 2014-06-11 | 浪潮电子信息产业股份有限公司 | 一种保证数据一致性的数据库备份方法 |
CN104283956A (zh) * | 2014-09-30 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 强一致性分布式数据存储方法、装置及系统 |
CN104361065A (zh) * | 2014-11-04 | 2015-02-18 | 福建亿榕信息技术有限公司 | 基于Zookeeper的分布式系统的有序序列号生成方法 |
CN104951519A (zh) * | 2015-06-04 | 2015-09-30 | 无锡天脉聚源传媒科技有限公司 | 一种生成序列号的方法及装置 |
-
2015
- 2015-11-18 CN CN201510811694.1A patent/CN105468718B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564517A (zh) * | 2004-03-26 | 2005-01-12 | 清华大学 | 内存-网络内存-磁盘高速可靠存储系统及其读写方法 |
US20070106707A1 (en) * | 2005-11-08 | 2007-05-10 | Nec Corporation | File management method for log-structured file system for sequentially adding and storing log of file access |
US7953120B2 (en) * | 2008-03-31 | 2011-05-31 | International Business Machines Corporation | Efficient synchronization of a sliding buffer window to prevent packet re-injection in an internet protocol (IP) network |
CN101751415A (zh) * | 2008-12-09 | 2010-06-23 | 中国移动通信集团公司 | 元数据服务系统、元数据同步方法与写服务器更新方法 |
CN103164418A (zh) * | 2011-12-12 | 2013-06-19 | 阿里巴巴集团控股有限公司 | 一种序列号的处理方法及设备 |
CN103580906A (zh) * | 2012-08-09 | 2014-02-12 | 腾讯科技(深圳)有限公司 | 一种数据备份的方法、系统及服务器 |
CN102981779A (zh) * | 2012-11-22 | 2013-03-20 | 华为技术有限公司 | 数据处理方法和设备 |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
CN103853827A (zh) * | 2014-03-07 | 2014-06-11 | 浪潮电子信息产业股份有限公司 | 一种保证数据一致性的数据库备份方法 |
CN104283956A (zh) * | 2014-09-30 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 强一致性分布式数据存储方法、装置及系统 |
CN104361065A (zh) * | 2014-11-04 | 2015-02-18 | 福建亿榕信息技术有限公司 | 基于Zookeeper的分布式系统的有序序列号生成方法 |
CN104951519A (zh) * | 2015-06-04 | 2015-09-30 | 无锡天脉聚源传媒科技有限公司 | 一种生成序列号的方法及装置 |
Non-Patent Citations (1)
Title |
---|
彭鑫: "一种基于事务内存的分布式编程框架", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766354A (zh) * | 2016-08-17 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 一种用于保证数据正确性的方法与设备 |
CN107395559A (zh) * | 2017-05-27 | 2017-11-24 | 北京五八信息技术有限公司 | 基于redis的数据处理方法及设备 |
CN110651246A (zh) * | 2017-10-25 | 2020-01-03 | 华为技术有限公司 | 一种数据读写方法、装置和存储服务器 |
CN110651246B (zh) * | 2017-10-25 | 2020-12-25 | 华为技术有限公司 | 一种数据读写方法、装置和存储服务器 |
US11397668B2 (en) | 2017-10-25 | 2022-07-26 | Huawei Technologies Co., Ltd. | Data read/write method and apparatus, and storage server |
CN109828979A (zh) * | 2019-01-31 | 2019-05-31 | 浙江小泰科技有限公司 | 一种数据一致性检测方法及系统 |
WO2021098555A1 (zh) * | 2019-11-22 | 2021-05-27 | 北京金山云网络技术有限公司 | 一种分布式表格存储的处理方法、装置及系统 |
CN111291424A (zh) * | 2020-02-19 | 2020-06-16 | 望海康信(北京)科技股份公司 | 标识号生成方法、装置、计算机设备及存储介质 |
CN111291424B (zh) * | 2020-02-19 | 2023-03-24 | 望海康信(北京)科技股份公司 | 标识号生成方法、装置、计算机设备及存储介质 |
CN114594907A (zh) * | 2022-02-24 | 2022-06-07 | 百果园技术(新加坡)有限公司 | 一种数据读写处理方法、装置、设备及存储介质 |
CN115174527A (zh) * | 2022-07-12 | 2022-10-11 | 腾讯科技(深圳)有限公司 | 序列号处理方法和装置、计算设备、存储介质 |
CN115174527B (zh) * | 2022-07-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 序列号处理方法和装置、计算设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105468718B (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468718A (zh) | 数据一致性处理方法、装置和系统 | |
US11614867B2 (en) | Distributed storage system-based data processing method and storage device | |
CN107943594B (zh) | 数据获取方法和装置 | |
CN105338078B (zh) | 用于存储系统的数据存储方法和装置 | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
CN110166523B (zh) | 内容更新方法、装置、设备和计算机可读存储介质 | |
CN104202375A (zh) | 同步数据的方法及系统 | |
CN106775498B (zh) | 一种缓存数据同步方法及系统 | |
CN112328185B (zh) | 一种基于分布式存储的智能预读方法 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN110377577B (zh) | 数据同步方法、装置、系统和计算机可读存储介质 | |
CN110096336A (zh) | 数据监控方法、装置、设备和介质 | |
CN102790784A (zh) | 分布式缓存方法及系统、缓存解析方法及解析系统 | |
CN103856516A (zh) | 数据存储、读取方法及数据存储、读取装置 | |
WO2019041670A1 (zh) | 一种降低功能页面请求次数的方法、存储介质、设备及系统 | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
US8693449B2 (en) | Method of allocating and withdrawing time slot using position movement of time slot and TDMA communication system using the same | |
CN112084264A (zh) | 一种日志数据同步方法、装置及服务器 | |
CN102325051B (zh) | 基于简单网络管理协议的EoC网络设备管理方法 | |
CN103714059A (zh) | 一种更新数据的方法及装置 | |
CN110851411B (zh) | 一种基于文件同步的dns动态变更系统及方法 | |
CN106357764A (zh) | 移动终端的数据同步方法、及服务器 | |
CN112052104A (zh) | 基于多机房实现的消息队列的管理方法及电子设备 | |
CN112818166A (zh) | 一种视频信息查询方法、装置、电子设备和存储介质 | |
CN113742376A (zh) | 一种同步数据的方法、第一服务器以及同步数据的系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221116 Address after: 1402, Floor 14, Block A, Haina Baichuan Headquarters Building, No. 6, Baoxing Road, Haibin Community, Xin'an Street, Bao'an District, Shenzhen, Guangdong 518100 Patentee after: Shenzhen Yayue Technology Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |