CN108958967B - 一种数据处理的方法以及服务器 - Google Patents

一种数据处理的方法以及服务器 Download PDF

Info

Publication number
CN108958967B
CN108958967B CN201710347924.2A CN201710347924A CN108958967B CN 108958967 B CN108958967 B CN 108958967B CN 201710347924 A CN201710347924 A CN 201710347924A CN 108958967 B CN108958967 B CN 108958967B
Authority
CN
China
Prior art keywords
sequence number
data
target
target sequence
server
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
CN201710347924.2A
Other languages
English (en)
Other versions
CN108958967A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710347924.2A priority Critical patent/CN108958967B/zh
Publication of CN108958967A publication Critical patent/CN108958967A/zh
Application granted granted Critical
Publication of CN108958967B publication Critical patent/CN108958967B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例公开了一种数据处理的方法,包括:在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号;若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;在所述目标进程中,对所述第一数据进行备份处理。本发明实施例还提供一种服务器。本发明实施例当服务器进行数据备份时,可以在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。

Description

一种数据处理的方法以及服务器
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据处理的方法以及服务器。
背景技术
云存储是一种新兴的网络存储技术,它是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问。
目前,Redis云存储采用如图1所示的流程进行业务处理,请参阅图1,在步骤101中,服务器开启Redis进程,Redis是一个键——值对(Key-Value)存储系统。在执行步骤102时,Redis进程需要通过调用Bgsave命令来触发关系数据库(Relational Database,RDB)数据的备份,于是服务器在步骤103中调用Fork函数,以此生成一个子进程,由这个子进程执行RDB数据的备份任务,而父进程则根据RDB数据处理相关业务。
然而,由于子进程需要继承父进程的数据来进行备份,因此,Redis云存储中的服务器至少要预留出50%的内存给子进程执行数据备份,这样的话,就会导致一台服务器最多只能使用50%的内存进行正常业务的处理,从而导致内存利用率较低。
发明内容
本发明实施例提供了一种数据处理的方法以及服务器,当服务器进行数据备份时,可以直接在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。
有鉴于此,本发明第一方面提供一种数据处理的方法,包括:
在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号;
若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
在所述目标进程中,对所述第一数据进行备份处理。
本发明第二方面提供一种服务器,包括:
第一接收模块,用于在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号;
第一更新模块,用于若所述第一接收模块接收的所述第一数据的所述第一序列号小于第一目标序列号,则在所述目标进程中根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
第一备份模块,用于在所述目标进程中,对所述第一接收模块接收的所述第一数据进行备份处理。
本发明第三方面提供一种服务器,包括存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,具体包括如下步骤:
在目标进程中,控制所述收发器接收第一数据,其中,所述第一数据中携带第一序列号;
若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
在所述目标进程中,对所述第一数据进行备份处理;
所述总线系统用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,提供了一种数据处理的方法,首先服务器在目标进程中,接收第一数据,其中,第一数据中携带了第一序列号,如果第一序列号小于第一目标序列号,那么服务器可以根据第一目标序列号将第一序列号更新为第二序列号,其中,第二序列号与第一目标序列号相等,最后服务器在该目标进程中,对第一数据进行备份处理。通过上述方法,当服务器进行数据备份时,可以直接在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。
附图说明
图1为现有技术中业务处理的一个流程示意图;
图2为本发明实施例中同时进行业务处理及数据备份的一个流程示意图;
图3为本发明实施例中数据处理的方法一个实施例示意图;
图4为应用场景中进行业务处理及数据备份的示意图;
图5为本发明实施例中服务器一个实施例示意图;
图6为本发明实施例中服务器另一个实施例示意图;
图7为本发明实施例中服务器另一个实施例示意图;
图8为本发明实施例中服务器另一个实施例示意图;
图9为本发明实施例中服务器另一个实施例示意图;
图10为本发明实施例中服务器另一个实施例示意图;
图11为本发明实施例中服务器一个结构示意图。
具体实施方式
本发明实施例提供了一种数据处理的方法以及服务器,当服务器进行数据备份时,可以直接在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明应用于Redis云存储系统,Redis云存储系统是一个键-值对(key-value)存储系统,它支持存储的value类型较多多,包括字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和哈希类型(hash)。这些数据类型都支持增加、删除、修改及取交集并集和差集等更丰富的操作。在此基础上,Redis云存储系统持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。Redis云存储系统会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。
其中,Redis云存储系统中单机内存放的数据比物理内存小,比如一个中型网站有100万注册用户,如果这些资料要用Redis云存储系统来存储,内存的容量必须能够容纳这100万用户。但是业务实际情况是100万用户只有5万活跃用户,1周来访问过1次的也只有15万用户,因此全部100万用户的数据都放在内存有不合理之处,随机存取存储器(RandomAccess Memory,RAM)需要为冷数据买单。这跟操作系统非常相似,操作系统所有应用访问的数据都在内存,但是如果物理内存容纳不下新的数据,操作系统会智能将部分长期没有访问的数据交换到磁盘,为新的应用留出空间。现代操作系统给应用提供的并不是物理内存,而是虚拟内存(Virtual Memory,VM)的概念。基于相同的考虑,Redis云存储系统也增加了VM特性。让Redis数据容量突破了物理内存的限制,并实现了数据冷热分离。
需要说明的是,本方案以应用于Redis云存储系统为例进行介绍,在实际应用中,本方案还可以应用于其他的存储系统,此处仅为一个示意,并不应理解为对本发明的限定。
应理解,本发明可以应用于Linux操作系统,Linux操作系统一个基于可移植操作系统接口(Portable Operating System Interface of UNIX,POSIX)和UNIX的多用户、多任务、支持多线程和多中央处理器(Central Processing Unit,CPU)的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
可以理解的是,在实际应用中,本方案还可以应用于其他的操作系统中,此处仅为一个示意,并不应理解为对本发明的限定。
为了便于理解,请参阅图2,图2为本发明实施例中同时进行业务处理及数据备份的一个流程示意图,如图2所示,具体地:
步骤201中,先启动Redis进程,Redis进程从本质上讲是一个单进程的服务,通过一个进程对外提供请求。但是在整个Redis云存储系统中存在多个进程,一些核心操作是通过进程的方式执行的。当我们输入Redis启动命令,Redis首先会设置语言类型以及初始化以后hash所要使用的种子,然后通过调用initServerConfig初始化配置redisServer,把所有属性都初始化为默认值。对于Redis这样一个服务器来说,其可支持的配置也是很多;
步骤202中,接下来调用Bgsave命令执行RDB文件的备份,服务器在Bgsave命令执行期间仍然可以继续处理客户端的请求。与现有方案不同的是,Redis云存储系统在经过改进后,进行RDB文件的备份时不再调用Linux的Fork函数来实现。这样的话,在一个进程中就可以同时处理正常业务和备份任务。
可以理解的是,Redis云存储系统在进行快照(snapshotting)的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的。这使得我们可以通过定时备份RDB文件来实现Redis云存储系统的数据库备份。RDB文件是经过压缩的二进制格式,所以占用的空间会小于内存中的数据大小,更加利于传输。
步骤203中,同一个进程,既要处理正常业务又要处理做备份任务,那就需要判断哪些数据是采用正常业务逻辑来处理的,哪些数据是采用备份任务逻辑来处理的。
首先整个Redis进程有一个全局的序号(sequence,SQE),每个数据的键(key)的初始值由全局SQE来赋值。当Redis云存储系统中的服务器接收到数据时,需要判断数据的key与全局SQE之间的大小,如果key的SQE小于全局SQE,那么就由备份任务逻辑来处理这些数据,备份完成后,把这个key的赋值更新为全局SQE,这样下次就知道这个key无需备份了。
如果key的SQE等于全局SQE说明该数据无需备份,可以直接采用正常业务逻辑来处理。
步骤204中,在一个父进程中即可对数据采用正常业务逻辑来处理,或者采用备份任务逻辑来处理。
下面将从服务器的角度,对本发明中数据处理的方法进行介绍,请参阅图3,本发明实施例中数据处理的方法一个实施例包括:
301、在目标进程中,接收第一数据,其中,第一数据中携带第一序列号;
本实施例中,服务器在目标进程中接收客户端发送的第一数据,其中,第一数据对应有key,key即携带了第一序列号,即第一SEQ。假设第一数据有多个,且每个第一数据对应一个key,每个key对应一个第一序列号,具体可以如下表1所示:
表1
第一数据 第一序列号 第一目标序列号
数据A 0 1
数据B 0 1
数据C 0 1
数据D 0 1
数据E 0 1
数据F 0 1
数据G 0 1
可以理解的是,第一数据也可以只包括一个数据,例如数据A,此处仅为一个示意,并不应理解为对本发明的限定。
302、若第一序列号小于第一目标序列号,则根据第一目标序列号将第一序列号更新为第二序列号,其中,第二序列号与第一目标序列号相等;
本实施例中,如果第一数据中数据对应的第一序列号小于第一目标序列号,以表1为例,则第一序列号0小于第一目标序列号1,于是需要将第一序列号更新为第二序列号,并且进入步骤303。
更新后的第一数据所对应的key携带了第二序列号,即第二SEQ。具体可以如下表2所示:
表2
第一数据 第二序列号 第一目标序列号
数据A 1 1
数据B 1 1
数据C 1 1
数据D 1 1
数据E 1 1
数据F 1 1
数据G 1 1
303、在目标进程中,对第一数据进行备份处理。
本实施例中,第一序列号小于第一目标序列号的第一数据需要进行备份处理,即服务器在该目标进程中对第一数据进行备份处理。
第一目标序列号可以认为是一个全局SEQ,其初始值可设置为0,而数据也是有序号的,第一数据的第一序列号初始值是由全局SEQ赋值的,即第一序列号的初始值也为0。在对数据进行处理时,首先需要对数据进行备份,备份后再进行业务处理,这样即使业务处理失败,也可以获取备份过的数据再次进行业务处理。备份后的数据会更新其对应的序列号,也就是将第一序列号更新为第二序列号,其中,第二序列号等于第一目标序列号。
本发明实施例中,提供了一种数据处理的方法,首先服务器在目标进程中,接收第一数据,其中,第一数据中携带了第一序列号,如果第一序列号小于第一目标序列号,那么服务器可以根据第一目标序列号将第一序列号更新为第二序列号,其中,第二序列号与第一目标序列号相等,最后服务器在该目标进程中,对第一数据进行备份处理。通过上述方法,当服务器进行数据备份时,可以直接在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。
可选地,在上述图3对应的实施例的基础上,本发明实施例提供的数据处理的方法第一个可选实施例中,接收第一数据之后,还可以包括:
若第一序列号等于第一目标序列号,则在目标进程中根据第一数据进行业务处理。
本实施例中,上述实施例中介绍了第一序列号小于第一目标序列号时候的处理方式,即在目标进程中对第一数据进行备份处理。那么在本实施例中将接收第一序列号等于第一目标序列号时候的处理方式,即在目标进程中对第一数据进行业务处理。具体可以如下表3所示:
表3
第一数据 第一序列号 第一目标序列号
数据A 1 1
数据B 1 1
数据C 1 1
数据D 1 1
数据E 1 1
数据F 1 1
数据G 1 1
如果第一数据中包含多个数据,且这些数据的第一序列号与第一目标序列号相等,可以说明第一数据已经备份过了,于是服务器判定无需再次备份第一数据,即直接在目标进程中对第一数据进行相应的业务处理。
其次,本发明实施例中,说明了当第一序列号等于第一目标序列号时,服务器可以直接在目标进程中根据第一数据进行相应的业务处理。通过上述方式,服务器能够通过第一数据所携带的序列号确定是否需要对其进行备份,或者判断是否需要对其进行业务处理,然后在同一个目标进程中进行备份处理或者业务处理即可,从而大幅度地提升了服务器的利用率。
可选地,在上述图3对应的实施例的基础上,本发明实施例提供的数据处理的方法第二个可选实施例中,根据第一目标序列号将第一序列号更新为第二序列号之后,还可以包括:
将第一目标序列号更新为第二目标序列号,其中,第一目标序列号为N,第二目标序列号为M,N为大于或等于0的整数,M为大于N的正整数。
本实施例中,服务器将第一序列号更新为第二序列号之后,还需要同步将第一目标序列号更新为第二目标序列号。假设第一目标序列号为N,那么第二目标序列号为M,M大于N,通常情况下,N比M大1。请参阅表4,具体如下表4所示:
表4
第一数据 第二序列号 第二目标序列号
数据A 1 2
数据B 1 2
数据C 1 2
数据D 1 2
数据E 1 2
数据F 1 2
数据G 1 2
其次,本发明实施例中,在服务器根据第一目标序列号将第一序列号更新为第二序列号之后,还可以将第一目标序列号更新为第二目标序列号,其中,第一目标序列号为N,第二目标序列号为M,N为大于或等于0的整数,M为大于N的正整数。通过上述方式,服务器还需要提升一个全局SEQ,即提升第一目标序列号,这样的话,服务器可以对每一次获取到的数据都进行一次序列号大小的判断,以此确定对数据的处理方式。同时,由于目标序列号会不断提升,若需要进行数据备份,则应采用全局备份的方式,从而提升方案的可靠性。
可选地,在上述图3对应的第二个实施例的基础上,本发明实施例提供的数据处理的方法第三个可选实施例中,对第一数据进行备份处理之后,还可以包括:
接收第二数据,其中,第二数据中携带第三序列号;
若第三序列号小于第二目标序列号,则根据第二目标序列号将第三序列号更新为第四序列号,并对第二数据进行备份处理,其中,第四序列号与第二目标序列号相等;
若第三序列号等于第二目标序列号,则根据第二数据进行业务处理。
本实施例中,当服务器处理完第一数据之后,还会继续接收客户端后续发送的第二数据,第二数据中携带了第三序列号,通常情况下,第二数据中也可以包含多个数据,假设这些数据都对应第三序列号,那么具体可以如下表5所示:
表5
第二数据 第三序列号 第二目标序列号
数据a 1 2
数据b 1 2
数据c 1 2
数据d 1 2
数据e 1 2
数据f 1 2
数据g 1 2
于是在第三序列号小于第二目标序列号时,即可将第三序列号更新为第四序列号,即将“1”更新为“2”,并且对第二数据进行备份处理。
假设第二数据所对于的第三序列号如下表6所示:
表6
Figure GDA0001343507280000101
Figure GDA0001343507280000111
根据上述表6所示的内容,可以确定第三序列号等于第二目标序列号,则采用第二数据进行业务处理。
在实际应用中,第二数据中可能混杂着携带不同序列号的数据,具体如表7所示:
表7
第二数据 第三序列号 第二目标序列号
数据a 0 2
数据b 0 2
数据c 1 2
数据d 1 2
数据e 2 2
数据f 2 2
数据g 2 2
那么通过表7所示的内容,可以将数据a、数据b、数据c和数据d进行备份处理,并且在处理完成后,将数据a、数据b、数据c和数据d所对应的第三序列号更新为第二目标序列号,即更新为“2”。而对数据e、数据f和数据g进行正常的业务处理。
再次,本发明实施例中,服务器在对第一数据进行备份处理之后,还可以接收第二数据,其中,第二数据中携带第三序列号,若第三序列号小于第二目标序列号,则根据第二目标序列号将第三序列号更新为第四序列号,并对第二数据进行备份处理,其中,第四序列号与第二目标序列号相等,若第三序列号等于第二目标序列号,则根据第二数据进行业务处理。通过上述方式,在服务器后续收到新的数据时,仍然可以根据第二数据中所携带的第三序列号来判断数据的处理方式,并且在目标进程中进行相应的处理,从而进一步提升服务器的内存利用率。
可选地,在上述图3对应的实施例的基础上,本发明实施例提供的数据处理的方法第四个可选实施例中,对第一数据进行备份处理之前,还可以包括:
检测第一数据对应的标志位信息,其中,标志位用于表示第一数据的哈希表结构状态;
对第一数据进行备份处理,可以包括:
若标志位信息为第一标志位,则对第一数据进行备份处理,其中,第一标志位用于表示第一数据对应的哈希表结构为锁定状态。
本实施例中,由于数据对应的key都是通过hash表来管理的,所以本方案可以采用一个全局标志位来固定整个hash表,不让这个hash表的结构变化。
具体地,在服务器对第一数据进行备份处理之前,需要先锁住第一数据的key所对应的hash表,以防止hash表在数据在备份的过程中被恶意篡改。于是,服务器先检测第一数据对应的标志位信息,其中,标志位用于表示第一数据的哈希表结构状态。如果标志位信息为第一标志位,则说明第一数据对应的hash表结构为锁定状态。
其中,hash表又称散列表,是根据key-value而直接进行访问的数据结构。也就是说,它通过把key-value映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做hash表。hash表把key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
其次,本发明实施例中,服务器对第一数据进行备份处理之前,需要先检测第一数据对应的标志位信息,其中,标志位用于表示第一数据的hash表结构状态,若标志位信息为第一标志位,则对第一数据进行备份处理,第一标志位用于表示第一数据对应的哈希表结构为锁定状态。通过上述方式,在对数据进行备份时,可以有效地提升数据的安全性,防止数据对应的hash表结构被篡改,以此提升方案的可靠性。
可选地,在上述图3对应的第四个实施例的基础上,本发明实施例提供的数据处理的方法第五个可选实施例中,对第一数据进行备份处理之后,还可以包括:
将第一标志位更新为第二标志位,其中,第二标志位用于表示第一数据对应的哈希表结构为解锁状态;
根据第二标志位确定第一数据已经完成备份处理。
本实施例中,在服务器对第一数据进行备份处理之后,也就意味着遍历完了第一数据对应的hash表,这个时候就可以解锁hash表,并且运行根据实际情况对hash表进行变动。
具体地,在服务器对第一数据进行备份处理之后,需要将第一标志位更新为第二标志位,例如将第一标志位“1”更新为第二标志位“0”,第二标志位用于表示第一数据的hash表结构为解锁状态。同时,在服务器检测到第二标志位时,即确定第一数据已经完成了数据的备份处理。
此外,如果后续服务器接收到新的数据,可以采用hash开链法插入这些新的数据,这样就不会影响正常业务的进行。hash开链法的基本思路是,先给一个数组,这个数组中存的是指针数组,每个指针数组都指向一个数组。再用元素除以存储指针数组的数组的大小,余数与指针数组下标相同的,都链到数组指针指向的这一个数组。
再次,本发明实施例中,服务器对第一数据进行备份处理之后,可以先将第一标志位更新为第二标志位,其中,第二标志位用于表示第一数据对应的哈希表结构为解锁状态,然后服务器根据第二标志位确定第一数据已经完成备份处理。通过上述方式,在对数据进行备份完成之后,可以解锁数据对应的hash表结构,一方面可以让服务器根据第二标志位确定数据已经完成备份,从而提升方案的可行性,另一方面,在数据备份完后可以解锁hash表的结构,从而根据实际情况对hash表进行更新,以此提升方案的灵活性。
为便于理解,下面以一个具体应用场景对本发明中一种数据处理的方法进行详细描述,请参阅图4,图4为应用场景中进行业务处理及数据备份的示意图,具体地,假设服务器接收到的第一数据包含了8个数据,且这8个数据对应key的初始值均为0。
当第一数据中key小于第一目标序列号“1”时,则需要对这些第一数据进行备份。服务器执行全量备份操作,需要先将第一数据对应的hash表结构对应的标志位设为“1”,同时,将第一目标序列号做加1的处理,得到第二目标序列号“2”。
后续,服务器又接收第二数据,其中,第二数据中也包含了8个数据,这些数据的key有“0”、“1”和“2”,而由于服务器已经提升了第一目标序列号,并得到第二目标序列号,于是需要分别比较第二数据中各个数据对应的key与第二目标序列号之间的大小。序列号小于“2”的数据需要进行备份,同时将序列号更新为“2”,而序列号为“2”的数据之间进行业务处理即可。
服务器完成对第二数据的处理后,再次提升第二目标序列号,即得到第三目标序列号“3”,过程如上述内容,此处不做赘述。
下面对本发明中的服务器进行详细描述,请参阅图5,图5为本发明实施例中服务器一个实施例示意图,服务器40包括:
第一接收模块401,用于在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号;
第一更新模块402,用于若所述第一接收模块401接收的所述第一数据的所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
第一备份模块403,用于在所述目标进程中,对所述第一接收模块401接收的所述第一数据进行备份处理。
本实施例中,在目标进程中,第一接收模块401接收第一数据,其中,所述第一数据中携带第一序列号,若所述第一接收模块401接收的所述第一数据的所述第一序列号小于第一目标序列号,则第一更新模块402根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等,第一备份模块403在所述目标进程中,对所述第一接收模块401接收的所述第一数据进行备份处理。
本发明实施例中,提供了一种服务器,首先该服务器在目标进程中,接收第一数据,其中,第一数据中携带了第一序列号,如果第一序列号小于第一目标序列号,那么服务器可以根据第一目标序列号将第一序列号更新为第二序列号,其中,第二序列号与第一目标序列号相等,最后服务器在该目标进程中,对第一数据进行备份处理。通过上述方法,当服务器进行数据备份时,可以直接在目标进程中,根据当前第一数据的第一序列号来判断是否需要对该第一数据进行备份,如满足条件则进行数据备份,这样的话,就不需要服务器预留一半的内存给另一个进程来做数据备份,从而提升服务器的内存利用率。
可选地,在上述图5对应的实施例的基础上,请参阅图6,本发明实施例提供的服务器另一实施例中,所述服务器40还包括:
第一处理模块404,用于所述第一接收模块401接收第一数据之后,若所述第一序列号等于所述第一目标序列号,则根据所述第一数据进行业务处理。
其次,本发明实施例中,说明了当第一序列号等于第一目标序列号时,服务器可以直接在目标进程中根据第一数据进行相应的业务处理。通过上述方式,服务器能够通过第一数据所携带的序列号确定是否需要对其进行备份,或者判断是否需要对其进行业务处理,然后在同一个目标进程中进行备份处理或者业务处理即可,从而大幅度地提升了服务器的利用率。
可选地,在上述图5对应的实施例的基础上,请参阅图7,本发明实施例提供的服务器另一实施例中,所述服务器40还包括:
第二更新模块405,用于所述第一更新模块402根据所述第一目标序列号将所述第一序列号更新为所述第二序列号之后,将所述第一目标序列号更新为第二目标序列号,其中,所述第一目标序列号为N,所述第二目标序列号为M,所述N为大于或等于0的整数,所述M为大于所述N的正整数。
其次,本发明实施例中,在服务器根据第一目标序列号将第一序列号更新为第二序列号之后,还可以将第一目标序列号更新为第二目标序列号,其中,第一目标序列号为N,第二目标序列号为M,N为大于或等于0的整数,M为大于N的正整数。通过上述方式,服务器还需要提升一个全局SEQ,即提升第一目标序列号,这样的话,服务器可以对每一次获取到的数据都进行一次序列号大小的判断,以此确定对数据的处理方式。同时,由于目标序列号会不断提升,若需要进行数据备份,则应采用全局备份的方式,从而提升方案的可靠性。
可选地,在上述图7对应的实施例的基础上,请参阅图8,本发明实施例提供的服务器另一实施例中,所述服务器40还包括:
第二接收模块406,用于所述第一备份模块403对所述第一数据进行备份处理之后,接收第二数据,其中,所述第二数据中携带第三序列号;
第二备份模块407,用于若所述第二接收模块406接收的所述第三序列号小于所述第二目标序列号,则根据所述第二目标序列号将所述第三序列号更新为所述第四序列号,并对所述第二数据进行备份处理,其中,所述第四序列号与所述第二目标序列号相等;
第二处理模块408,用于若所述第二接收模块406接收的所述第三序列号等于所述第二目标序列号,则根据所述第二数据进行业务处理。
再次,本发明实施例中,服务器在对第一数据进行备份处理之后,还可以接收第二数据,其中,第二数据中携带第三序列号,若第三序列号小于第二目标序列号,则根据第二目标序列号将第三序列号更新为第四序列号,并对第二数据进行备份处理,其中,第四序列号与第二目标序列号相等,若第三序列号等于第二目标序列号,则根据第二数据进行业务处理。通过上述方式,在服务器后续收到新的数据时,仍然可以根据第二数据中所携带的第三序列号来判断数据的处理方式,并且在目标进程中进行相应的处理,从而进一步提升服务器的内存利用率。
可选地,在上述图5对应的实施例的基础上,请参阅图9,本发明实施例提供的服务器另一实施例中,所述服务器40还包括:
检测模块409,用于所述第一备份模块403对所述第一数据进行备份处理之前,检测所述第一数据对应的标志位信息,其中,所述标志位用于表示所述第一数据的哈希表结构状态;
所述第一备份模块403包括:
备份单元4031,用于若所述标志位信息为第一标志位,则对所述第一数据进行备份处理,其中,所述第一标志位用于表示第一数据对应的哈希表结构为锁定状态。
其次,本发明实施例中,服务器对第一数据进行备份处理之前,需要先检测第一数据对应的标志位信息,其中,标志位用于表示第一数据的hash表结构状态,若标志位信息为第一标志位,则对第一数据进行备份处理,第一标志位用于表示第一数据对应的哈希表结构为锁定状态。通过上述方式,在对数据进行备份时,可以有效地提升数据的安全性,防止数据对应的hash表结构被篡改,以此提升方案的可靠性。
可选地,在上述图9对应的实施例的基础上,请参阅图10,本发明实施例提供的服务器另一实施例中,所述服务器40还包括:
第三更新模块409A,用于所述备份单元4031对所述第一数据进行备份处理之后,将所述第一标志位更新为第二标志位,其中,所述第二标志位用于表示第一数据对应的哈希表结构为解锁状态;
确定模块409B,用于根据所述第三更新模块409A更新的所述第二标志位确定所述第一数据已经完成备份处理。
再次,本发明实施例中,服务器对第一数据进行备份处理之后,可以先将第一标志位更新为第二标志位,其中,第二标志位用于表示第一数据对应的哈希表结构为解锁状态,然后服务器根据第二标志位确定第一数据已经完成备份处理。通过上述方式,在对数据进行备份完成之后,可以解锁数据对应的hash表结构,一方面可以让服务器根据第二标志位确定数据已经完成备份,从而提升方案的可行性,另一方面,在数据备份完后可以解锁hash表的结构,从而根据实际情况对hash表进行更新,以此提升方案的灵活性。
图11是本发明实施例提供的一种服务器结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。
服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图11所示的服务器结构。
其中,CPU 522用于执行如下步骤:
在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号;
若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为所述第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
在所述目标进程中,对所述第一数据进行备份处理。
CPU 522还用于执行如下步骤:
若所述第一序列号等于所述第一目标序列号,则在所述目标进程中根据所述第一数据进行业务处理。
CPU 522还用于执行如下步骤:
将所述第一目标序列号更新为第二目标序列号,其中,所述第一目标序列号为N,所述第二目标序列号为M,所述N为大于或等于0的整数,所述M为大于所述N的正整数。
CPU 522还用于执行如下步骤:
接收第二数据,其中,所述第二数据中携带第三序列号;
若所述第三序列号小于所述第二目标序列号,则根据所述第二目标序列号将所述第三序列号更新为所述第四序列号,并对所述第二数据进行备份处理,其中,所述第四序列号与所述第二目标序列号相等;
若所述第三序列号等于所述第二目标序列号,则根据所述第二数据进行业务处理。
CPU 522还用于执行如下步骤:
检测所述第一数据对应的标志位信息,其中,所述标志位用于表示所述第一数据的哈希表结构状态;
CPU 522具用于执行如下步骤:
若所述标志位信息为第一标志位,则对所述第一数据进行备份处理,其中,所述第一标志位用于表示第一数据对应的哈希表结构为锁定状态。
CPU 522还用于执行如下步骤:
将所述第一标志位更新为第二标志位,其中,所述第二标志位用于表示第一数据对应的哈希表结构为解锁状态;
根据所述第二标志位确定所述第一数据已经完成备份处理。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (9)

1.一种数据处理的方法,其特征在于,包括:
在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号,所述第一数据包括一个或多个数据,每个所述数据对应一个所述第一序列号;
若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
在所述目标进程中,对所述第一数据进行备份处理;
所述根据所述第一目标序列号将所述第一序列号更新为所述第二序列号之后,所述方法还包括:
将所述第一目标序列号更新为第二目标序列号,其中,所述第一目标序列号为N,所述第二目标序列号为M,所述N为大于或等于0的整数,所述M为大于所述N的正整数;所述接收第一数据之后,所述方法还包括:
若所述第一序列号等于所述第一目标序列号,则在所述目标进程中根据所述第一数据进行业务处理。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一数据进行备份处理之后,所述方法还包括:
接收第二数据,其中,所述第二数据中携带第三序列号;
若所述第三序列号小于所述第二目标序列号,则根据所述第二目标序列号将所述第三序列号更新为第四序列号,并对所述第二数据进行备份处理,其中,所述第四序列号与所述第二目标序列号相等;
若所述第三序列号等于所述第二目标序列号,则根据所述第二数据进行业务处理。
3.根据权利要求1所述的方法,其特征在于,所述对所述第一数据进行备份处理之前,所述方法还包括:
检测所述第一数据对应的标志位信息,其中,所述标志位用于表示所述第一数据的哈希表结构状态;
所述对所述第一数据进行备份处理,包括:
若所述标志位信息为第一标志位,则对所述第一数据进行备份处理,其中,所述第一标志位用于表示第一数据对应的哈希表结构为锁定状态。
4.根据权利要求3所述的方法,其特征在于,所述对所述第一数据进行备份处理之后,所述方法还包括:
将所述第一标志位更新为第二标志位,其中,所述第二标志位用于表示第一数据对应的哈希表结构为解锁状态;
根据所述第二标志位确定所述第一数据已经完成备份处理。
5.一种服务器,其特征在于,包括:
第一接收模块,用于在目标进程中,接收第一数据,其中,所述第一数据中携带第一序列号,所述第一数据包括一个或多个数据,每个所述数据对应一个所述第一序列号;
第一更新模块,用于若所述第一接收模块接收的所述第一数据的所述第一序列号小于第一目标序列号,则在所述目标进程中根据所述第一目标序列号将所述第一序列号更新为第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
第一备份模块,用于在所述目标进程中,对所述第一接收模块接收的所述第一数据进行备份处理;
所述服务器还包括:
第二更新模块,用于所述第一更新模块根据所述第一目标序列号将所述第一序列号更新为所述第二序列号之后,将所述第一目标序列号更新为第二目标序列号,其中,所述第一目标序列号为N,所述第二目标序列号为M,所述N为大于或等于0的整数,所述M为大于所述N的正整数;第一处理模块,用于所述第一接收模块接收第一数据之后,若所述第一序列号等于所述第一目标序列号,则根据所述第一数据进行业务处理。
6.根据权利要求5所述的服务器,其特征在于,所述服务器还包括:
第二接收模块,用于所述第一备份模块对所述第一数据进行备份处理之后,接收第二数据,其中,所述第二数据中携带第三序列号;
第二备份模块,用于若所述第二接收模块接收的所述第三序列号小于所述第二目标序列号,则根据所述第二目标序列号将所述第三序列号更新为第四序列号,并对所述第二数据进行备份处理,其中,所述第四序列号与所述第二目标序列号相等;
第二处理模块,用于若所述第二接收模块接收的所述第三序列号等于所述第二目标序列号,则根据所述第二数据进行业务处理。
7.一种服务器,其特征在于,包括存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,具体包括如下步骤:
在目标进程中,控制所述收发器接收第一数据,其中,所述第一数据中携带第一序列号,所述第一数据包括一个或多个数据,每个所述数据对应一个所述第一序列号;
若所述第一序列号小于第一目标序列号,则根据所述第一目标序列号将所述第一序列号更新为第二序列号,其中,所述第二序列号与所述第一目标序列号相等;
在所述目标进程中,对所述第一数据进行备份处理;
所述总线系统用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信;
所述处理器还用于执行如下步骤:
将所述第一目标序列号更新为第二目标序列号,其中,所述第一目标序列号为N,所述第二目标序列号为M,所述N为大于或等于0的整数,所述M为大于所述N的正整数;若所述第一序列号等于所述第一目标序列号,则在所述目标进程中根据所述第一数据进行业务处理。
8.根据权利要求7所述的服务器,其特征在于,所述处理器还用于执行如下步骤:
接收第二数据,其中,所述第二数据中携带第三序列号;
若所述第三序列号小于所述第二目标序列号,则根据所述第二目标序列号将所述第三序列号更新为第四序列号,并对所述第二数据进行备份处理,其中,所述第四序列号与所述第二目标序列号相等;
若所述第三序列号等于所述第二目标序列号,则根据所述第二数据进行业务处理。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-4任一项所述的方法。
CN201710347924.2A 2017-05-17 2017-05-17 一种数据处理的方法以及服务器 Active CN108958967B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710347924.2A CN108958967B (zh) 2017-05-17 2017-05-17 一种数据处理的方法以及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710347924.2A CN108958967B (zh) 2017-05-17 2017-05-17 一种数据处理的方法以及服务器

Publications (2)

Publication Number Publication Date
CN108958967A CN108958967A (zh) 2018-12-07
CN108958967B true CN108958967B (zh) 2023-01-24

Family

ID=64462506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710347924.2A Active CN108958967B (zh) 2017-05-17 2017-05-17 一种数据处理的方法以及服务器

Country Status (1)

Country Link
CN (1) CN108958967B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110958225B (zh) * 2019-11-08 2022-02-15 杭州安恒信息技术股份有限公司 基于流量识别网站指纹的方法
CN112269690B (zh) * 2020-11-17 2024-05-24 珠海大横琴科技发展有限公司 一种数据备份的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11220718A (ja) * 1998-01-29 1999-08-10 Nec Corp ビデオオンデマンドシステム、ビデオクライアント、ビデオサーバ、ビデオクライアント用ソフトウエアを記憶した記憶媒体およびビデオサーバ用ソフトウエアを記憶した記憶媒体
CN104063293A (zh) * 2014-07-04 2014-09-24 华为技术有限公司 一种数据备份方法及流计算系统
CN105740104A (zh) * 2016-02-03 2016-07-06 网易(杭州)网络有限公司 数据库中数据备份方法、装置及游戏系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9613046B1 (en) * 2015-12-14 2017-04-04 Netapp, Inc. Parallel optimized remote synchronization of active block storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11220718A (ja) * 1998-01-29 1999-08-10 Nec Corp ビデオオンデマンドシステム、ビデオクライアント、ビデオサーバ、ビデオクライアント用ソフトウエアを記憶した記憶媒体およびビデオサーバ用ソフトウエアを記憶した記憶媒体
CN104063293A (zh) * 2014-07-04 2014-09-24 华为技术有限公司 一种数据备份方法及流计算系统
CN105740104A (zh) * 2016-02-03 2016-07-06 网易(杭州)网络有限公司 数据库中数据备份方法、装置及游戏系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Access 数据库系统开发下的数据库备份操作实现;张桃林;《信息与电脑》;20160731(第7期);第116-117页 *

Also Published As

Publication number Publication date
CN108958967A (zh) 2018-12-07

Similar Documents

Publication Publication Date Title
US20240004834A1 (en) Directory structure for a distributed storage system
US11093468B1 (en) Advanced metadata management
EP3410288B1 (en) Online upgrade method, device and system
CN111078147B (zh) 一种缓存数据的处理方法、装置、设备及存储介质
US8954391B2 (en) System and method for supporting transient partition consistency in a distributed data grid
US20190324865A1 (en) Snapshot for grouping and elastic replication of virtual machines
US20130232489A1 (en) Register Mapping
US6968382B2 (en) Activating a volume group without a quorum of disks in the volume group being active
CN107153643B (zh) 数据表连接方法及装置
EP3786802B1 (en) Method and device for failover in hbase system
US20200311039A1 (en) System and method for supporting versioned objects
CN110851474A (zh) 数据查询方法、数据库中间件、数据查询设备及存储介质
CN110019530A (zh) 基于分布式数据库的事务处理方法及装置
US11960442B2 (en) Storing a point in time coherently for a distributed storage system
US11954362B2 (en) Flash registry with on-disk hashing
CN112148693A (zh) 一种数据处理方法、装置及存储介质
CN111651424B (zh) 一种数据处理方法、装置、数据节点及存储介质
CN108958967B (zh) 一种数据处理的方法以及服务器
US8458509B1 (en) Multipath failover
US11797206B2 (en) Hash migration using a gold image library management system
US8719274B1 (en) Method, system, and apparatus for providing generic database services within an extensible firmware interface environment
US9703788B1 (en) Distributed metadata in a high performance computing environment
CN115756549A (zh) 一种大数据中台数据的下载方法、装置及存储介质
CN115438025A (zh) 数据处理方法及装置
CN104715349A (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
TG01 Patent term adjustment