CN110213314B - 确定存储节点的方法、装置、服务器 - Google Patents

确定存储节点的方法、装置、服务器 Download PDF

Info

Publication number
CN110213314B
CN110213314B CN201810450178.4A CN201810450178A CN110213314B CN 110213314 B CN110213314 B CN 110213314B CN 201810450178 A CN201810450178 A CN 201810450178A CN 110213314 B CN110213314 B CN 110213314B
Authority
CN
China
Prior art keywords
storage node
random number
target
data
data request
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
CN201810450178.4A
Other languages
English (en)
Other versions
CN110213314A (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
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing 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, Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810450178.4A priority Critical patent/CN110213314B/zh
Publication of CN110213314A publication Critical patent/CN110213314A/zh
Application granted granted Critical
Publication of CN110213314B publication Critical patent/CN110213314B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种确定存储节点的方法、装置、服务器,属于电子技术领域。所述方法包括:获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;将所述目标标识作为随机数种子,生成至少一个随机数序列;在所述至少一个随机数序列中,根据每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。采用本发明,可以提高确定存储节点的效率。

Description

确定存储节点的方法、装置、服务器
技术领域
本发明涉及电子技术领域,特别涉及一种确定存储节点的方法、装置、服务器。
背景技术
随着电子技术和互联网技术的发展,越来越多的业务数据需要存储到网络侧。为了存储更多的业务数据,网络侧往往部署有多个用于存储业务数据的存储节点和用于执行存储和读取业务数据处理的接入层(access)设备。相应的,各业务服务器可以通过接入层设备将自身的业务数据存储到相应的存储节点中,或者,通过接入层设备从相应存储节点中读取业务数据。在存储或读取业务数据前,接入层设备可以先确定存储该业务数据的存储节点。
目前,确定存储节点的方法一般是:对于每个业务,接入层设备中可以预先存储有包括每个数据片与存储节点的对应关系的数据表。在存储或读取某业务数据前,接入层设备可以对该业务数据的数据标识进行哈希处理,得到该业务数据对应的哈希值(其中,哈希值是整数),进而,可以将哈希值除以该业务对应的数据片总数,得到余数,将余数作为该业务数据对应的数据片。得到数据片后,可以在上述数据表中,查找确定出的数据片对应的存储节点,以便将业务数据存储到该存储节点或从该存储节点读取业务数据。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
往往数据表的表项比较多,查找数据表花费的时间比较长,从而,导致确定存储节点的效率较低。
发明内容
本发明实施例提供了一种确定存储节点的方法、装置、服务器,可以解决相关技术中存在的确定存储节点的效率较低的问题。所述技术方案如下:
一方面,提供了一种确定存储节点的方法,所述方法包括:
获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;
将所述目标标识作为随机数种子,生成至少一个随机数序列;
在所述至少一个随机数序列中,根据每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;
根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。
一方面,提供了一种确定存储节点的装置,所述装置包括:
第一获取模块,用于获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;
生成模块,用于将所述目标标识作为随机数种子,生成至少一个随机数序列;
第二获取模块,用于在所述至少一个随机数序列中,根据每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;
确定模块,用于根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。
可选的,所述生成模块,用于:
将所述目标标识作为随机数种子,生成所述每个存储节点分别对应的一个指数分布随机数序列;
所述第二获取模块,用于:
在所述每个存储节点对应的一个指数分布随机数序列中,根据所述每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数。
可选的,所述装置还包括:
第三获取模块,用于获取每个存储节点对应的节点权重,所述节点权重与对应的存储节点的存储容量成正比;
所述生成模块,用于:
将所述目标标识作为随机数种子,基于所述每个存储节点对应的节点权重,生成所述每个存储节点对应的一个指数分布随机数序列。
可选的,所述确定模块,用于:
根据所述每个存储节点的目标随机数,将最小的目标随机数对应的存储节点确定为所述数据请求的目标存储节点。
一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述所述的确定存储节点的方法。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述所述的确定存储节点的方法。
本发明实施例提供的技术方案带来的有益效果至少包括:
本发明实施例中,业务服务器在确定目标存储节点时,通过将目标标识作为随机数种子,生成至少一个随机数序列,进而,在至少一个随机数序列中,选取每个存储节点对应的序列位置上的随机数,得到每个存储节点的目标随机数,来确定目标存储节点,从而,可以避免通过查找数据表的方式来确定目标存储节点,由于生成随机数消耗的时间比较短,从而,可以提高确定存储节点的效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(a)是本发明实施例提供的一种***框架示意图;
图1(b)是本发明实施例提供的一种***框架示意图;
图2是本发明实施例提供的一种确定存储节点的方法流程图;
图3(a)是本发明实施例提供的一种每个存储节点的目标随机数的示意图;
图3(b)是本发明实施例提供的一种确定目标存储节点的示意图;
图4是本发明实施例提供的一种确定存储节点的方法流程图;
图5是本发明实施例提供的一种确定存储节点的装置结构示意图;
图6是本发明实施例提供的一种确定存储节点的装置结构示意图;
图7是本发明实施例提供的一种确定存储节点的装置结构示意图;
图8是本发明实施例提供的一种确定存储节点的装置结构示意图;
图9是本发明实施例提供的一种服务器的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种确定存储节点的方法,该方法可以由业务服务器101和各个存储节点(store)102共同实现,***的框架图可以如图1(a)所示。其中,业务服务器101可以是生成业务数据的服务器,可以将自身的业务数据存储到存储节点102,并可以从存储节点102中读取自身的业务数据的服务器。每个存储节点102可以是用于存储各业务数据的节点(其中,每个存储节点可以是用于存储各业务数据的存储服务器,或者,可以是同一服务器中的每个磁盘等存储设备)。另外,***中还可以包括用于管理各存储节点的管理节点(master)103,如图1(b)所示,管理节点103可以与业务服务器101和各存储节点102进行通信,可以存储有各存储节点102的节点权重,比如,可以存储有各存储节点的节点标识与节点权重的对应关系,其中,节点标识可以是存储节点的编号。需要说明的是,采用本方案存储或读取业务数据,不需要接入层设备,各业务服务器可以直接向对应的存储节点存储业务数据、可以直接从对应的存储节点中读取业务数据。
业务服务器101可以包括处理器、存储器、收发器等部件。处理器可以为CPU(Central Processing Unit,中央处理单元)等,可以用于确定数据请求对应目标存储节点的相关处理。存储器可以为RAM(Random Access Memory,随机存取存储器)、Flash(闪存)等,可以用于存储接收到的数据、处理过程所需的数据、处理过程中生成的数据等,如业务标识、每个存储节点对应的序列位置等。收发器可以用于与存储节点进行数据传输。
存储节点102可以包括处理器、存储器、收发器等部件。处理器可以为CPU等,可以用于执行存储业务数据处理和执行读取业务数据处理等。存储器可以为RAM、Flash等,可以用于存储接收到的数据、处理过程所需的数据、处理过程中生成的数据等,如业务数据等。收发器可以用于与业务服务器进行数据传输,例如,接收业务服务器发送的业务数据、向业务服务器发送业务数据等。
本方案中,在存储或读取某业务数据前,可以由业务数据对应的业务服务器自身确定目标存储节点。具体的,服务器可以获取用于标识数据请求对应的业务数据的目标标识(其中,用于标识每个业务数据的目标标识固定不变),将目标标识作为随机数种子,生成至少一个随机数序列,进而,可以在至少一个随机数序列中,选取每个存储节点对应的序列位置上的随机数,得到每个存储节点的目标随机数,最后,可以在各存储节点的目标随机数中,选取目标随机数符合预设选取条件的存储节点,作为数据请求的目标存储节点。这样,网络侧无需部署接入层设备,业务服务器自身即可确定目标存储节点,从而,可以节省资源,并且无需管理节点再进行同步,从而可以简化处理逻辑。另外,本方案中,业务服务器通过生成随机数的方式确定目标存储节点,可以避免通过查找数据表的方式来确定目标存储节点,由于生成随机数消耗的时间比较短,从而,可以提高确定存储节点的效率,并且本方案中元数据比较少(即每个存储节点对应的节点权重),数据管理成本比较少。
例如,业务服务器为即时通讯应用的后台服务器,业务数据为各即时通讯应用账户的头像。在工作过程中,每当获取到某即时通讯应用账户当前登录的终端上传的头像时,业务服务器即可获取到用于请求存储业务数据的数据请求,进而,可以获取用于标识数据请求对应的头像的目标标识。获取到目标标识后,可以按照上述处理方式,确定用于存储该头像的目标存储节点,进而,可以将头像存储到目标存储节点中。每当需要读取某头像时,业务服务器可以获取到用于请求读取业务数据的数据请求,进而,可以按照上述处理方式,确定出存储有该头像的目标存储节点,从目标存储节点中读取该头像。
又例如,业务服务器为音频播放应用的后台服务器,业务数据为各音频文件(比如,可以是各歌曲的音频文件)。在工作过程中,每当获取到终端上传的音频文件时,业务服务器即可获取到用于请求存储业务数据的数据请求,进而,可以获取用于标识数据请求对应的音频文件的目标标识。获取到目标标识后,可以按照上述处理方式,确定用于存储该音频文件的目标存储节点,进而,可以将音频文件存储到目标存储节点中。每当需要读取某音频文件时,业务服务器可以获取到用于请求读取业务数据的数据请求,进而,可以按照上述处理方式,确定出存储有该音频文件的目标存储节点,从目标存储节点中读取该音频文件。
下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,其中,图2所示的处理流程可以由业务服务器执行,内容可以如下:
步骤201,获取数据请求的目标标识,目标标识用于标识数据请求对应的业务数据。
其中,数据请求可以是用于请求存储业务数据的数据请求(此种情况下,可称为数据存储请求),也可以是用于请求读取业务数据的数据请求(此种情况下,可以称为数据读取请求),数据请求可以是业务服务器生成的,也可以是其他设备发送的,数据请求也可称为数据指令、数据命令等。
在实施中,在工作过程中,业务服务器可以将生成的业务数据存储到各存储节点中的某存储节点(可称为目标存储节点)中,也可以读取存储到目标存储节点中的业务数据。在存储业务数据或读取业务数据前,业务服务器可以获取到相应的数据请求,并可以确定数据请求对应的业务数据,进而,可以获取用于标识业务数据的目标标识,其中,每个业务数据对应的目标标识是固定不变的。例如,业务服务器接收到客户端发送的携带有业务数据的数据存储请求时,可以获取用于标识该数据存储请求中携带的业务数据的目标标识。
可选的,目标标识的形式可以多种多样,可以包括业务数据对应的业务标识,也可以包括业务数据所属数据片的标识,相应的,步骤201的处理过程可以如下:根据业务数据的数据标识的哈希值以及业务数据所属业务对应的数据片总数,将业务数据所属数据片的标识获取为目标标识;和/或,将数据请求中的业务标识获取为目标标识。
在实施中,业务服务器可以为各个业务类型配置多个数据片,每个数据片下的各业务数据可以存储到同一存储节点中,此种情况下,业务服务器中可以预先存储有业务对应的数据片总数。针对目标标识包括业务数据所属数据片的标识的情况,业务服务器可以获取数据请求对应的业务数据的数据标识(针对业务数据为头像的情况,数据标识可以是头像所属账户的账户标识,针对业务数据为音频文件的情况,数据标识可以是音频文件的文件名),进而,可以对数据标识进行哈希(hash)处理,得到数据标识对应的哈希值(其中,如果对数据标识进行hash处理后,得到的哈希值为负数,可以将为负数的哈希值取正,得到正数)。除了获取数据标识外,业务服务器还可以获取业务数据所属业务对应的数据片总数。得到数据标识对应的哈希值后,业务服务器可以将哈希值除以获取到的数据片总数,得到余数,作为业务数据所属数据片的标识。针对目标标识包括业务标识的情况,业务服务器可以获取业务数据的业务标识。另外,目标标识也可以包括业务数据的数据标识。
步骤202,将目标标识作为随机数种子,生成至少一个随机数序列。
在实施中,获取到目标标识后,业务服务器可以将目标标识作为随机数种子,通过预设的随机数生成算法,生成至少一个随机数序列。这样,对于同一业务数据,可以保证每次生成的随机数序列是相同的,以便在存储或读取同一业务数据时,均可以通过该方式确定出相应的存储节点。
可选的,业务服务器可以生成一个随机数序列,即此种情况下,业务服务器可以将目标标识作为随机数种子,生成一个随机数序列,其中,随机数序列包含的随机数的数目可以与存储节点的数目一致。
可选的,对于每个存储节点,业务服务器可以均生成其对应的随机数序列,即可以生成多个随机数序列,相应的,步骤202的处理过程可以如下:将目标标识作为随机数种子,生成每个存储节点分别对应的一个指数分布随机数序列。
在实施中,获取到目标标识后,对于每个存储节点,业务服务器可以将目标标识作为随机数种子,通过预设的指数分布随机数生成算法,生成该存储节点对应的一个指数分布随机数序列,其中,通过指数分布随机数生成算法生成的每个指数分布随机数序列中的各随机数服从指数分布。
可选的,对于每个存储节点,指数分布随机数生成算法中的参数(lambda)可以是对应存储节点的节点权重,相应的,业务服务器还可以进行如下处理:获取每个存储节点对应的节点权重,节点权重与对应的存储节点的存储容量成正比。相应的,生成每个存储节点分别对应的一个指数分布随机数序列的处理过程可以如下:将目标标识作为随机数种子,基于每个存储节点对应的节点权重,生成每个存储节点分别对应的一个指数分布随机数序列。
其中,节点权重可以与对应的存储节点的存储容量成正比,用于表征对应存储节点的存储能力。
在实施中,业务服务器可以获取每个存储节点对应的节点权重,其中,节点权重可以是业务服务器中预先存储的,也可以是从管理节点中获取的。获取到节点权重和目标标识后,对于每个存储节点,业务服务器可以将该存储节点对应的节点权重,作为指数分布随机数生成算法中参数(lambda)的值,将目标标识作为随机数种子,通过指数分布随机数生成算法,生成指数分布随机数序列,作为该存储节点对应的一个指数分布随机数序列。例如,各存储节点分别为存储节点A(对应的存储容量为8TB(太字节))、存储节点B(对应的存储容量为4TB)和存储节点C(对应的存储容量为2TB),存储节点A、存储节点B、存储节点C分别对应的节点权重可以是8、4、2,则对于存储节点A,业务服务器可以将8作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为8的指数分布随机数生成算法,生成存储节点A对应的一个指数分布随机数序列;对于存储节点B,业务服务器可以将4作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为4的指数分布随机数生成算法,生成存储节点B对应的一个指数分布随机数序列;对于存储节点C,业务服务器可以将2作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为2的指数分布随机数生成算法,生成存储节点C对应的一个指数分布随机数序列。
另外,每个存储节点对应的随机数序列包含的随机数的数目可以相同,也可以不同,可以大于或等于序列位置对应的数值。例如,存储节点包括存储节点A、存储节点B和存储节点C,分别对应的序列位置为1、2、3,则存储节点A、存储节点B、存储节点C对应的随机数序列包含的随机数的数目可以均是3;或者,存储节点A对应的随机数序列包含的随机数的数目为1、存储节点B对应的随机数序列包含的随机数的数目为2、存储节点C对应的随机数序列包含的随机数的数目为3。
步骤203,在至少一个随机数序列中,根据每个存储节点对应的序列位置,获取每个存储节点的目标随机数。
其中,存储节点对应的序列位置可以用于表示每个存储节点的目标随机数在生成的随机数序列中的位置。
在实施中,业务服务器中可以记录有每个存储节点对应的序列位置,其中,每个存储节点对应的序列位置可以是预先设置在业务服务器中的,也可以是业务服务器向管理节点获取的,比如,业务服务器中可以记录有每个存储节点的节点标识与序列位置的对应关系(其中,针对节点标识为存储节点的编号的情况,每个序列位置可以是对应存储节点的编号),每个存储节点对应的序列位置是固定不变的。业务服务器生成至少一个随机数序列后,可以获取每个存储节点对应的序列位置,进而,可以在至少一个随机数序列中,将每个序列位置上的随机数,确定为对应存储节点的随机数(可称为目标随机数),其中,生成的随机数序列中的每个随机数不相同,每个存储节点的目标随机数也各不相同。
可选的,当生成的随机数序列为一个时,步骤203的处理过程可以如下:当生成的随机数序列为一个时,在一个随机数序列中,根据每个存储节点对应的序列位置,获取每个存储节点的目标随机数。
在实施中,针对上述业务服务器生成一个随机数序列的情况(其中,此种情况下,随机数序列包含的随机数的数目可以是存储节点的数目),业务服务器生成一个随机数序列后,可以生成的一个随机数序列中,获取每个序列位置上的随机数,并将其确定为该序列位置对应的存储节点的目标随机数。例如,存储节点包括存储节点A、存储节点B和存储节点C,分别对应的序列位置为1、2、3,生成的一个随机数序列为0.8、06、0.7,则业务服务器可以将序列位置1上的随机数0.8确定为存储节点A的目标随机数,将序列位置2上的随机数0.6确定为存储节点B的目标随机数,将序列位置3上的随机数0.7确定为存储节点C的目标随机数。
可选的,针对上述对每个存储节点均生成一个指数分布随机数序列的情况,相应的,步骤203的处理过程可以如下:在每个存储节点对应的一个指数分布随机数序列中,根据每个存储节点对应的序列位置,获取每个存储节点的目标随机数。
在实施中,对于每个存储节点,业务服务器基于该存储节点对应的节点权重生成一个指数分布随机数序列后,可以在该存储节点对应的指数分布随机数序列中,选取该存储节点对应的序列位置上的随机数,作为该存储节点的目标随机数。例如,存储节点包括存储节点A和存储节点B,存储节点A和存储节点B分别对应的序列位置为1和2,对应存储节点A的指数分布随机数序列为0.2、0.1、0.3,对应存储节点B的指数分布随机数序列为0.8、0.5、0.6,则对于存储节点A,业务服务器可以在存储节点A对应的指数分布随机数序列0.2、0.1、0.3中,获取序列位置1上的随机数0.2,作为存储节点A的目标随机数;对于存储节点B,业务服务器可以在存储节点B对应的指数分布随机数序列0.8、0.5、0.6中,获取序列位置2上的随机数0.5,作为存储节点B的目标随机数。
可选的,针对每个存储节点分别对应一个指数分布随机数序列的情况,每个存储节点对应的序列位置不同。
步骤204,根据每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为数据请求的目标存储节点。
其中,预设选取条件可以是用于根据目标随机数判断存储节点是否是数据请求对应的存储节点的条件,预设选取条件可以是最小的目标随机数,或者,可以是最大的目标随机数。
在实施中,获取到每个存储节点的目标随机数后,可以在各存储节点的目标随机数中,选取满足预设选取条件的目标随机数,进而,可以将选取出的目标随机数对应的存储节点确定为数据请求对应的存储节点(即目标存储节点)。例如,预设选取条件是最大的目标随机数,存储节点A和存储节点B分别对应的目标随机数为0.2、0.3,则业务服务器可以将0.3对应的存储节点B确定为目标存储节点。
本方案中,对于同一业务数据(或对于同一目标标识),每个存储节点选取对应序列位置上的随机数,这样,当存储节点的数目发生变化时,每个存储节点的目标随机数不会发生变化,在做数据迁移的时候,只需要将删除的存储节点上的业务数据或者将需要迁移到新增存储节点上的业务数据进行迁移,从而,可以减少需要迁移的业务数据的迁移量。例如,预设选取条件是最大的目标随机数,存储节点0、存储节点1、存储节点2、存储节点3、存储节点4、存储节点5分别对应的目标随机数的大小如图3(a)所示,其中,线条越长表示对应的目标随机数越大,由此可见,存储节点1对应的目标随机数最大,如果存储节点2被删除的话,由于存储节点1对应的目标随机数还是最大,因此,存储到存储节点1上的业务数据不需要迁移,只需要迁移存储节点2上的业务数据即可。增加存储节点的情况类似,只要每个存储节点对应的序列位置不变,对于同一业务数据(或同一目标标识),每个存储节点对应的目标随机数即不会变。
可选的,针对上述基于每个存储节点对应的节点权重,生成每个存储节点对应的一个指数分布随机数序列的情况,步骤204的处理过程可以如下:根据每个存储节点的目标随机数,将最小的目标随机数对应的存储节点确定为数据请求的目标存储节点。
在实施中,在每个存储节点对应的指数分布随机数序列中选取出每个存储节点的目标随机数后,业务服务器可以在各个目标随机数中,选取最小的目标随机数,进而,可以将最小的目标随机数对应的存储节点确定为数据请求的目标存储节点。或者,得到每个存储节点对应的目标随机数后,业务服务器可以对每个目标随机数进行取反或取倒数处理,得到处理后的目标随机数,进而,可以将最大的处理后的目标随机数对应的存储节点确定为目标存储节点。
例如,如图3(b)所示,存储节点A的指数分布随机数序列为0.2、0.1、0.3,对应存储节点B的指数分布随机数序列为0.8、0.5、0.6,存储节点A对应的序列位置为1,存储节点B对应的序列位置为2,则业务服务器可以确定出存储节点A的目标随机数为0.2、存储节点B的目标随机数为0.5,目标存储节点是存储节点A。
其中,指数分布随机数序列可以用来模拟存储节点的读写情况,由于指数分布随机数生成算法中lambda越大时,生成较小的随机数的概率即会越大,因此,通过lambda为节点权重的指数分布随机数生成算法生成每个存储节点对应的指数分布随机数序列,并将最小的目标随机数对应的存储节点确定为目标存储节点,可以使得在统计意义上节点权重较大的存储节点存储的业务数据比节点权重较小的存储节点的多,从而,可以支持异构存储***,使得异构存储***中不同存储容量的存储节点均能够得到充分的利用,不会造成资源的浪费和拥塞。
上述过程是确定数据请求对应的目标存储节点的情况,针对数据请求的作用不同,业务服务器还可以继续执行不同的处理。可选的,当数据请求用于请求存储业务数据时,确定出目标存储节点之后业务服务器还可以进行如下处理:将数据请求对应的业务数据存储到目标存储节点。
在实施中,当数据请求用于请求存储业务数据时,业务服务器按照图2所示的处理过程确定出目标存储节点后,可以将数据请求对应的业务数据存储到目标存储节点中。
可选的,当数据请求用于请求读取业务数据时,确定出目标存储节点之后业务服务器还可以进行如下处理:从目标存储节点中读取数据请求对应的业务数据。
在实施中,当数据请求用于请求读取业务数据时,业务服务器按照图2所示的处理过程确定出目标存储节点后,可以从目标存储节点中读取数据请求对应的业务数据。
另外,针对生成的随机数序列是每个存储节点分别对应的指数分布随机数序列的情况,对本方案进行详细的说明,如图4所示。
步骤401,获取数据请求的目标标识,目标标识用于标识数据请求对应的业务数据。
其中,数据请求可以是用于请求存储业务数据的数据请求(此种情况下,可称为数据存储请求),也可以是用于请求读取业务数据的数据请求(此种情况下,可以称为数据读取请求),数据请求可以是业务服务器生成的,也可以是其他设备发送的,数据请求也可称为数据指令、数据命令等。
在实施中,在工作过程中,业务服务器可以将生成的业务数据存储到各存储节点中的某存储节点(可称为目标存储节点)中,也可以读取存储到目标存储节点中的业务数据。在存储业务数据或读取业务数据前,可以获取到相应的数据请求,并可以确定获取数据请求对应的业务数据,进而,可以获取用于标识业务数据的目标标识,其中,每个业务数据对应的目标标识是固定不变的。例如,业务服务器接收到客户端发送的携带有业务数据的数据存储请求时,可以获取用于标识该数据存储请求中携带的业务数据的目标标识。
步骤402,获取每个存储节点对应的节点权重,节点权重与对应的存储节点的存储容量成正比。
其中,节点权重可以与对应的存储节点的存储容量成正比,用于表征对应存储节点的存储能力。
需要说明的是,步骤402和步骤401并无先后执行关系,业务服务器可以同时执行步骤401和步骤402,也可以先执行步骤401,也可以先执行步骤402。
步骤403,将目标标识作为随机数种子,基于每个存储节点对应的节点权重,生成每个存储节点分别对应的一个指数分布随机数序列。
在实施中,业务服务器可以获取每个存储节点对应的节点权重,其中,节点权重可以是业务服务器中预先存储的,也可以是从管理节点中获取的。获取到节点权重和目标标识后,对于每个存储节点,业务服务器可以将该存储节点对应的节点权重,作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过指数分布随机数生成算法,生成指数分布随机数序列,作为该存储节点对应的一个指数分布随机数序列。例如,各存储节点分别为存储节点A(对应的存储容量为8TB)、存储节点B(对应的存储容量为4TB)和存储节点C(对应的存储容量为2TB),存储节点A、存储节点B、存储节点C分别对应的节点权重可以是8、4、2,则对于存储节点A,业务服务器可以将8作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为8的指数分布随机数生成算法,生成存储节点A对应的一个指数分布随机数序列;对于存储节点B,业务服务器可以将4作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为4的指数分布随机数生成算法,生成存储节点B对应的一个指数分布随机数序列;对于存储节点C,业务服务器可以将2作为指数分布随机数生成算法中lambda的值,将目标标识作为随机数种子,通过lambda为2的指数分布随机数生成算法,生成存储节点C对应的一个指数分布随机数序列。
步骤404,在每个存储节点对应的一个指数分布随机数序列中,根据每个存储节点对应的序列位置,获取每个存储节点的目标随机数。
在实施中,对于每个存储节点,业务服务器基于该存储节点对应的节点权重生成一个指数分布随机数序列后,可以在该存储节点对应的指数分布随机数序列中,选取该存储节点对应的序列位置上的随机数,作为该存储节点的目标随机数。例如,存储节点包括存储节点A和存储节点B,存储节点A和存储节点B分别对应的序列位置为1和2,对应存储节点A的指数分布随机数序列为0.2、0.1、0.3,对应存储节点B的指数分布随机数序列为0.8、0.5、0.6,则对于存储节点A,业务服务器可以在存储节点A对应的指数分布随机数序列0.2、0.1、0.3中,获取序列位置1上的随机数0.2,作为存储节点A的目标随机数;对于存储节点B,业务服务器可以在存储节点B对应的指数分布随机数序列0.8、0.5、0.6中,获取序列位置2上的随机数0.5,作为存储节点B的目标随机数。
步骤405,根据每个存储节点的目标随机数,将最小的目标随机数对应的存储节点确定为数据请求的目标存储节点。
在实施中,在每个存储节点对应的指数分布随机数序列中选取出每个存储节点的目标随机数后,业务服务器可以在各个目标随机数中,选取最小的目标随机数,进而,可以将最小的目标随机数对应的存储节点确定为数据请求的目标存储节点。
其中,指数分布随机数序列可以用来模拟存储节点的读写情况,由于指数分布随机数生成算法中lambda越大时,生成较小的随机数的概率即会越大,因此,通过lambda为节点权重的指数分布随机数生成算法生成每个存储节点对应的指数分布随机数序列,并将最小的目标随机数对应的存储节点确定为目标存储节点,可以使得在统计意义上节点权重较大的存储节点存储的业务数据比节点权重较小的存储节点的多,从而,可以支持异构存储***,使得异构存储***中不同存储容量的存储节点均能够得到充分的利用,不会造成资源的浪费和拥塞。
本发明实施例中,业务服务器在确定目标存储节点时,通过将目标标识作为随机数种子,生成至少一个随机数序列,进而,在至少一个随机数序列中,选取每个存储节点对应的序列位置上的随机数,得到每个存储节点的目标随机数,来确定目标存储节点,从而,可以避免通过查找数据表的方式来确定目标存储节点,由于生成随机数消耗的时间比较短,从而,可以提高确定存储节点的效率。
基于相同的技术构思,本发明实施例还提供了一种确定存储节点的装置,该装置可以是上述业务服务器,如图5所示,该装置包括:
第一获取模块510,用于获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;
生成模块520,用于将所述目标标识作为随机数种子,生成至少一个随机数序列;
第二获取模块530,用于在所述至少一个随机数序列中,根据每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;
确定模块540,用于根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。
可选的,所述第一获取模块510,用于:
根据所述业务数据的数据标识的哈希值以及所述业务数据所属业务对应的数据片总数,将所述业务数据所属数据片的标识获取为目标标识;和/或,
将所述数据请求中的业务标识获取为目标标识。
可选的,所述第二获取模块530,用于:
当所述生成的随机数序列为一个时,在所述一个随机数序列中,根据每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数。
可选的,所述生成模块520,用于:
将所述目标标识作为随机数种子,生成所述每个存储节点分别对应的一个指数分布随机数序列;
所述第二获取模块530,用于:
在所述每个存储节点对应的一个指数分布随机数序列中,根据所述每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数。
可选的,如图6所示,所述装置还包括:
第三获取模块550,用于获取每个存储节点对应的节点权重,所述节点权重与对应的存储节点的存储容量成正比;
所述生成模块520,用于:
将所述目标标识作为随机数种子,基于所述每个存储节点对应的节点权重,生成所述每个存储节点对应的一个指数分布随机数序列。
可选的,所述每个存储节点对应的序列位置不同。
可选的,所述确定模块540,用于:
根据所述每个存储节点的目标随机数,将最小的目标随机数对应的存储节点确定为所述数据请求的目标存储节点。
可选的,如图7所示,所述装置还包括:
存储模块560,用于当所述数据请求用于请求存储业务数据时,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点之后,将所述数据请求对应的业务数据存储到所述目标存储节点。
可选的,如图8所示,所述装置还包括:
读取模块570,用于当所述数据请求用于请求读取业务数据时,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点之后,从所述目标存储节点中读取所述数据请求对应的业务数据。
本发明实施例中,业务服务器在确定目标存储节点时,通过将目标标识作为随机数种子,生成至少一个随机数序列,进而,在至少一个随机数序列中,选取每个存储节点对应的序列位置上的随机数,得到每个存储节点的目标随机数,来确定目标存储节点,从而,可以避免通过查找数据表的方式来确定目标存储节点,由于生成随机数消耗的时间比较短,从而,可以提高确定存储节点的效率。
需要说明的是:上述实施例提供的确定存储节点的装置在确定存储节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将业务服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的确定存储节点的装置与确定存储节点的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是本发明实施例提供的一种服务器的结构示意图,该服务器可以是上述业务服务器,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)901和一个或一个以上的存储器902,其中,所述存储器902中存储有至少一条指令,所述至少一条指令由所述处理器901加载并执行以实现上述确定存储节点的方法步骤。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的确定存储节点的方法。
本发明实施例中,业务服务器在确定目标存储节点时,通过将目标标识作为随机数种子,生成至少一个随机数序列,进而,在至少一个随机数序列中,选取每个存储节点对应的序列位置上的随机数,得到每个存储节点的目标随机数,来确定目标存储节点,从而,可以避免通过查找数据表的方式来确定目标存储节点,由于生成随机数消耗的时间比较短,从而,可以提高确定存储节点的效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的一个实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种确定存储节点的方法,其特征在于,所述方法包括:
获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;
将所述目标标识作为随机数种子,生成每个存储节点分别对应的一个指数分布随机数序列;
在所述每个存储节点对应的一个指数分布随机数序列中,根据所述每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;
根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。
2.根据权利要求1所述的方法,其特征在于,所述获取数据请求的目标标识,包括:
根据所述业务数据的数据标识的哈希值以及所述业务数据所属业务对应的数据片总数,将所述业务数据所属数据片的标识获取为目标标识;和/或,
将所述数据请求中的业务标识获取为目标标识。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取每个存储节点对应的节点权重,所述节点权重与对应的存储节点的存储容量成正比;
所述将所述目标标识作为随机数种子,生成所述每个存储节点分别对应的一个指数分布随机数序列,包括:
将所述目标标识作为随机数种子,基于所述每个存储节点对应的节点权重,生成所述每个存储节点对应的一个指数分布随机数序列。
4.根据权利要求1所述的方法,其特征在于,所述每个存储节点对应的序列位置不同。
5.根据权利要求1所述的方法,其特征在于,所述根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点,包括:
根据所述每个存储节点的目标随机数,将最小的目标随机数对应的存储节点确定为所述数据请求的目标存储节点。
6.根据权利要求1-5任意一项所述的方法,其特征在于,当所述数据请求用于请求存储业务数据时,所述将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点之后,还包括:
将所述数据请求对应的业务数据存储到所述目标存储节点。
7.根据权利要求1-5任意一项所述的方法,其特征在于,当所述数据请求用于请求读取业务数据时,所述将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点之后,还包括:
从所述目标存储节点中读取所述数据请求对应的业务数据。
8.一种确定存储节点的装置,其特征在于,所述装置包括:
第一获取模块,用于获取数据请求的目标标识,所述目标标识用于标识所述数据请求对应的业务数据;
生成模块,将所述目标标识作为随机数种子,生成每个存储节点分别对应的一个指数分布随机数序列;
第二获取模块,用于在所述每个存储节点对应的一个指数分布随机数序列中,根据所述每个存储节点对应的序列位置,获取所述每个存储节点的目标随机数;
确定模块,用于根据所述每个存储节点的目标随机数,将目标随机数符合预设选取条件的存储节点确定为所述数据请求的目标存储节点。
9.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的确定存储节点的方法。
CN201810450178.4A 2018-05-11 2018-05-11 确定存储节点的方法、装置、服务器 Active CN110213314B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810450178.4A CN110213314B (zh) 2018-05-11 2018-05-11 确定存储节点的方法、装置、服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810450178.4A CN110213314B (zh) 2018-05-11 2018-05-11 确定存储节点的方法、装置、服务器

Publications (2)

Publication Number Publication Date
CN110213314A CN110213314A (zh) 2019-09-06
CN110213314B true CN110213314B (zh) 2021-10-08

Family

ID=67778831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810450178.4A Active CN110213314B (zh) 2018-05-11 2018-05-11 确定存储节点的方法、装置、服务器

Country Status (1)

Country Link
CN (1) CN110213314B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101471771A (zh) * 2007-12-29 2009-07-01 华为技术有限公司 一种基于p2p网络媒体传送的方法、媒体加密的方法及***
CN102737719A (zh) * 2011-04-15 2012-10-17 三星电子株式会社 非易失性存储器器件、其操作方法以及包括其的***
CN103246659A (zh) * 2012-02-06 2013-08-14 阿里巴巴集团控股有限公司 键值数据查询的方法和装置
US8874908B2 (en) * 2012-11-07 2014-10-28 Wolfgang Raudaschl Process for storing data on a central server
CN105117401A (zh) * 2015-07-15 2015-12-02 天脉聚源(北京)教育科技有限公司 一种并行传输图片的方法、装置及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101471771A (zh) * 2007-12-29 2009-07-01 华为技术有限公司 一种基于p2p网络媒体传送的方法、媒体加密的方法及***
CN102737719A (zh) * 2011-04-15 2012-10-17 三星电子株式会社 非易失性存储器器件、其操作方法以及包括其的***
CN103246659A (zh) * 2012-02-06 2013-08-14 阿里巴巴集团控股有限公司 键值数据查询的方法和装置
US8874908B2 (en) * 2012-11-07 2014-10-28 Wolfgang Raudaschl Process for storing data on a central server
CN105117401A (zh) * 2015-07-15 2015-12-02 天脉聚源(北京)教育科技有限公司 一种并行传输图片的方法、装置及***

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ASURA: Scalable and Uniform Data Distribution Algorithm for Storage Clusters;Ken-ichiro Ishikawa;《https://arxiv.org/ftp/arxiv/papers/1309/1309.7720.pdf》;20131231;全文 *
Ceph源码解析:CRUSH算法;陈小跑;《博客园https://www.cnblogs.com/chenxianpao/archive/2016/06.html》;20160630;全文 *
适配海量小文件的分布式文件***关键技术研究及***实现;李其力;《中国优秀硕士学位论文全文数据库 信息科技辑》;20151215(第12期);全文 *

Also Published As

Publication number Publication date
CN110213314A (zh) 2019-09-06

Similar Documents

Publication Publication Date Title
CN106325998B (zh) 一种基于云计算的应用部署的方法和装置
CN106407207B (zh) 一种实时新增数据更新方法和装置
US10187255B2 (en) Centralized configuration data in a distributed file system
CN111163072B (zh) 机器学习模型中特征值的确定方法、装置及电子设备
CN110427386B (zh) 数据处理方法、装置及计算机存储介质
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN109766318B (zh) 文件读取方法及装置
CN109787884B (zh) 一种消息推送方法和装置
CN113672375B (zh) 资源分配预测方法、装置、设备及存储介质
CN114461407B (zh) 数据处理方法、装置、分发服务器、***及存储介质
CN111694639A (zh) 进程容器地址的更新方法、装置和电子设备
CN111008071A (zh) 任务调度***、方法和服务器
CN111008873A (zh) 一种用户确定方法、装置、电子设备及存储介质
CN108111598B (zh) 云盘数据的下发方法、装置及存储介质
CN116089477B (zh) 分布式训练方法及***
CN110765125B (zh) 一种存储数据的方法及装置
CN110213314B (zh) 确定存储节点的方法、装置、服务器
CN115934354A (zh) 在线存储方法和装置
CN116303418A (zh) 基于物联网平台的海量规则处理方法、***及存储介质
CN115827280A (zh) 消息处理方法、装置、电子设备及存储介质
CN115129789A (zh) 一种分布式对象存储***的桶索引存储方法、装置及介质
CN108920658B (zh) 一种移动设备桌面搬家方法、装置及电子设备
CN112910988A (zh) 一种资源获取方法及资源调度装置
CN110968267A (zh) 数据管理方法、装置、服务器及***
CN113595829B (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