CN105208096A - 分布式缓存***和方法 - Google Patents
分布式缓存***和方法 Download PDFInfo
- Publication number
- CN105208096A CN105208096A CN201510521786.6A CN201510521786A CN105208096A CN 105208096 A CN105208096 A CN 105208096A CN 201510521786 A CN201510521786 A CN 201510521786A CN 105208096 A CN105208096 A CN 105208096A
- Authority
- CN
- China
- Prior art keywords
- write
- read
- adjustment
- nodes
- threshold value
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (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
技术领域
本发明涉及数据处理技术领域,具体地,涉及一种分布式缓存***和一种分布式缓存方法。
背景技术
CAP理论是分布式***的重要定理。它是指分布式***的三个特性:Consistency一致性、Availability可用性、Partition-tolerance分区可容忍性。一致性是指分布式***各节点对数据读写有一致的副本。可用性是指保证读写操作的完整以及读写速度。分区可容忍性可理解为***的扩展性,在一些节点产生网络中断的情况下,仍然可以对外提供服务并满足可用性和一致性。对于分布式***最多可以同时满足其中的两个,或者在三者间做一个平衡,而不能同时完美的兼顾这三个特性。
目前行业内的分布式产品,都根据自己的使用场景和业务需求在这三个特性之间做了取舍或者做了折中的平衡。比如传统的关系型数据库设计就选择了C(一致性)与A(可用性)而放弃了P(分区可容忍性),因为传统数据库的ACID模型拥有高一致性和可用性,所以很难进行分区。
而对于传统的互联网公司(例如一些门户网站),因为服务器数量比较多,且部署比较分散,发生网络故障是正常现象。而在必然要保证可用性的情况下,都会优先考虑分区容忍性与可用性,从而在一致性的方面做一些让步。所以常见的高可用服务器都是放弃C而选择AP。
以在当前互联网行业中应用广泛的分布式缓存为例,在当前主流的分布式缓存的产品上,也都在这三者之间做了一个折中。作为分布式产品,一般都需要考虑分区可容忍性,因此,大部分产品都在一致性与可用性之间做了取舍,比如目前非常流行的Apache基金会的Zookeeper等产品,实际也就是加强可用性,而在一致性方面做了让步,放弃了强一致性(强一致性是指,数据一旦写入,能保证之后任意的操作都能读到最新值),而采取了最终一致性,作为zookeeper集群,当半数以上的集群完成数据更新后被认为是写操作完成,但是读操作,会随机选择一个节点来完成,所以无法保证读操作能读到最新的数据。另外,一些搜索产品为了考虑性能而采用了异步冗余的方式,对外体现的就是实现了弱一致性,也是采用了放弃一致性而优先倾向于可用性。
对于不同的业务使用场景,当前没有一种分布式产品能通用,因为不同的业务对CAP策略要求不同。为了适应不同的开发产品需要,在这里,我们提出了一种可以动态调节数据备份节点的CAP策略的分布式***,这样,对于不同客户都只需要采用相同的部署方式,只需要实施人员根据客户需要调整实施策略即可满足不同的客户需要。
因此,需要一种新的分布式缓存技术,可以在现有的分布式缓存方式基础上,充分利用单对象类型完成多对象类型元数据的分布式缓存,建立多对象类型元数据参与的面向复杂类型分布式缓存的通用、统一缓存思路。
发明内容
本发明正是基于上述问题,提出了一种新的分布式缓存技术,可以在现有的分布式缓存方式基础上,充分利用单对象类型完成多对象类型元数据的分布式缓存,建立多对象类型元数据参与的面向复杂类型分布式缓存的通用、统一缓存思路。
有鉴于此,本发明提出了一种分布式缓存***,包括:数据定位单元,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;场景平衡单元,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;策略调整单元,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。在该技术方案中,可以根据实际的业务场景需要,在分布式***中分区容忍性,一致性与可用性之间取得一个平衡。
在上述技术方案中,优选地,所述数据定位单元将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,所述策略调整单元对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。在该技术方案中,可以满足不同的业务场景需要。
在上述技术方案中,优选地,所述数据定位单元,具体包括:一致性定位模块,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;数据写入模块,用于将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;数据读取模块,用于进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。在该技术方案中,可以通过一些***既有的定制方案或者更深入的精确调节方案来动态调整分布式缓存服务器的读写策略,分区可容忍性以及可用性的策略调整。
在上述技术方案中,优选地,所述场景平衡单元,具体包括:写入节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;读取节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;总节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。在该技术方案中,可以根据对分布式***使用的实际场景进行分析,达到对实际业务场景的一致性。
在上述技术方案中,优选地,所述策略调整单元,具体包括:冲突自处理模块,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;读写性能兼顾模块,用于进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;读写性能自调整模块,用于进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;工作节点数自调整模块,用于进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。在该技术方案中,可以动态调整CAP策略,根据实际的业务场景需要,在分布式***中分区容忍性,分区可容忍性以及可用性的策略调整。
根据本发明的又一个方面,还提出了一种分布式缓存方法,包括:步骤202:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;步骤204:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;步骤206:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。在该技术方案中,可以根据实际的业务场景需要,在分布式***中分区容忍性,一致性与可用性之间取得一个平衡。
在上述技术方案中,优选地,所述步骤202将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,所述步骤206对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。在该技术方案中,可以满足不同的业务场景需要。
在上述技术方案中,优选地,所述步骤202,具体包括:步骤302:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;步骤304:将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;步骤306:进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。在该技术方案中,可以通过一些***既有的定制方案或者更深入的精确调节方案来动态调整分布式缓存服务器的读写策略,分区可容忍性以及可用性的策略调整。
在上述技术方案中,优选地,所述步骤204,具体包括:步骤402:基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;步骤404:基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;步骤406:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。在该技术方案中,可以根据对分布式***使用的实际场景进行分析,达到对实际业务场景的一致性。
在上述技术方案中,优选地,所述步骤206,具体包括:步骤502:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;步骤504:进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;步骤506:进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;步骤508:进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。在该技术方案中,可以动态调整CAP策略,根据实际的业务场景需要,在分布式***中分区容忍性,分区可容忍性以及可用性的策略调整。
通过以上技术方案,可以在现有的分布式缓存方式基础上,充分利用单对象类型完成多对象类型元数据的分布式缓存,建立多对象类型元数据参与的面向复杂类型分布式缓存的通用、统一缓存思路。
附图说明
图1示出了根据本发明的实施例的分布式缓存***的框图;
图2示出了根据本发明的实施例的分布式缓存方法的流程图;
图3示出了根据本发明的实施例的数据定位单元的流程图;
图4示出了根据本发明的实施例的场景平衡单元的流程图;
图5示出了根据本发明的实施例的策略调整单元的流程图;
图6示出了根据本发明的实施例的写入数据流程图;
图7示出了根据本发明的实施例的读取请求的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的分布式缓存***的框图。
如图1所示,根据本发明的实施例的分布式缓存***100,包括:数据定位单元102,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;场景平衡单元104,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;策略调整单元106,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。在该技术方案中,可以根据实际的业务场景需要,在分布式***中分区容忍性,一致性与可用性之间取得一个平衡。
在上述技术方案中,优选地,数据定位单元102将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,策略调整单元106对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。在该技术方案中,可以满足不同的业务场景需要。
在上述技术方案中,优选地,数据定位单元102,具体包括:一致性定位模块1022,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;数据写入模块1024,用于将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;数据读取模块1026,用于进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。在该技术方案中,可以通过一些***既有的定制方案或者更深入的精确调节方案来动态调整分布式缓存服务器的读写策略,分区可容忍性以及可用性的策略调整。
在上述技术方案中,优选地,场景平衡单元104,具体包括:写入节点数平衡模块1042,用于基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;读取节点数平衡模块1044,用于基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;总节点数平衡模块1046,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。在该技术方案中,可以根据对分布式***使用的实际场景进行分析,达到对实际业务场景的一致性。
在上述技术方案中,优选地,策略调整单元106,具体包括:冲突自处理模块1062,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;读写性能兼顾模块1064,用于进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;读写性能自调整模块1066,用于进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;工作节点数自调整模块1068,用于进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。在该技术方案中,可以动态调整CAP策略,根据实际的业务场景需要,在分布式***中分区容忍性,分区可容忍性以及可用性的策略调整。
图2示出了根据本发明的实施例的分布式缓存方法的流程图。
如图2所示,根据本发明的实施例的分布式缓存方法,包括:步骤202:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;步骤204:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;步骤206:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。在该技术方案中,可以根据实际的业务场景需要,在分布式***中分区容忍性,一致性与可用性之间取得一个平衡。
在上述技术方案中,优选地,步骤202将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,步骤206对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。在该技术方案中,可以满足不同的业务场景需要。
在上述技术方案中,优选地,参见图3,步骤202,具体包括:步骤302:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;步骤304:将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;步骤306:进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。在该技术方案中,可以通过一些***既有的定制方案或者更深入的精确调节方案来动态调整分布式缓存服务器的读写策略,分区可容忍性以及可用性的策略调整。
在上述技术方案中,优选地,参见图4,步骤204,具体包括:步骤402:基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;步骤404:基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;步骤406:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。在该技术方案中,可以根据对分布式***使用的实际场景进行分析,达到对实际业务场景的一致性。
在上述技术方案中,优选地,参见图5,步骤206,具体包括:步骤502:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;步骤504:进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;步骤506:进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;步骤508:进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。在该技术方案中,可以动态调整CAP策略,根据实际的业务场景需要,在分布式***中分区容忍性,分区可容忍性以及可用性的策略调整。
基于现有技术存在的缺陷,本发明的技术方案,提出一种可以动态CAP策略的技术方案,即一种在分布式***中可以动态调整CAP策略的技术方案,或一种可调整CAP策略的分布式缓存方案;可以根据实际的业务场景需要,在分布式***中分区容忍性,一致性与可用性之间取得一个平衡。
为了实现上述目标,本发明的技术方案提出一种可以动态调整CAP策略的分布式方案。在这里,我们使用缓存***作为这种分布式***的一种实现来进行描述。在本发明的技术方案中,对于数据首先通过一致性hash定位到每个逻辑节点,对于每个逻辑节点上都有备份物理节点,每个节点都保存着当前逻辑节点的完整数据,对于分布式数据存储的节点,在写入数据时,当写入W个节点成功,即可认为写入成功。同样,在读取数据时,在读入R个节点的数据,并且发现没有版本冲突时则可以认为读取成功。这里可以调整W和R的数量以及备份物理节点的总数,来定制不同的策略。Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
具体对应到CAP策略。当执行写入操作时,返回写入成功的响应需要写入的节点数越多,那么则分布式缓存的一致性也就越高,同时,写入操作的效率也就越低。当读取操作时,需要读取的节点数越多,则分布式缓存的一致性也就越好,但是读性能也就越低,导致可用性下降。而总节点数目越多,数据的备份也就越多,通讯消耗和网络异常的几率也就越大,会影响分区容忍性。因此,需要根据具体的场景,在读写节点里做出一个平衡。
当W+R的值大于总节点数。则在写入操作执行完毕后,之后的任意读取操作,我们都可以保证其获得一个最新的值。同样,我们就可以认为此种配置下,分布式缓存***具有强一致性。
当W+R的值小于总节点数,则在写操作完毕后,之后的读取操作不一定可以读到最新值。在这里,我们采用了最终一致性的方案,虽然此种策略不能保证强一致性,但是我们保证对同一条数据,不能有两次更新同时生效,并保证了最终一致性。
对于CAP的取舍,目前不同的缓存产品有不同的实现策略,但是目前没有产品能够通过动态的调节完善的满足不同业务场景对分布式缓存各种特性的应用需要。
目前我们的***里定制了几种策略,以便使用户可以便捷的选择,同时我们也允许用户更加精确地调整读写服务器的数量,以便更贴切的满足需求,为了更清晰的说明问题,下面列举我们***中设置的几个默认策略:
1)优先考虑可用性和分区容忍行而放弃强一致性。同时,分布式缓存***自己处理冲突,因此采用最终一致性:
此种方案设置的策略为写节点数(W)+读节点数(R)<总节点数(N)。同时设置W=N/2+1以及R=1。这样,在执行写操作时,只有在超过半数的节点完成一次写数据更新时才会认为是写操作成功。但是读操作时,只要取得任意一个节点的响应就可以返回,这样保证了可用性的同时又保证了读操作的高可用性。此种分布式缓存策略也是Apache基金会下的分布式计算框架Hadoop的分布式缓存子项目Zookeeper所采取的策略(apache没有一致性hash,所以缓存节点上都保存完整数据)。同时,在我们的***中,对于此种策略同样使用了Paxos算法来解决分布一致性的问题,通过选出一个节点发提案由别的节点响应的方式来达到了最终一致性,此策略如图6所示。
图6中对某逻辑节点一共有5个备份的物理节点,对于写入数据的请求,如图6的流程所示。如图6所示,目前有5个备份的物理节点,当发送写请求时,因为设置了W=N/2+1,因此在此种策略下有3个节点写入数据完成,会返回给服务器,则认为该写请求成功。这里不需要等待所有节点的成功响应,同时,在返回成功请求后,其他的节点仍然会继续同步数据。这样保证了一个写请求的执行效率。
对于读请求,因为设置了R=1,所以,当发送读取数据的请求时,会取当前定位到的节点上的数据,所以读取到的数据可能不是最新的。但是不会有写冲突。因为在服务器端,读请求不会涉及多个节点,因此,读请求的执行效率是相当高的。如果用户想获得最新的数据,需要调用一个同步指令,在这种情况下,服务器端会在同步版本后再返回此次读请求的数据。
该策略下,一般的读取请求的流程图如图7所示。
当然,在我们的***中,我们允许用户可以在此策略基础上做进一步处理,进一步降低写操作的节点数W,来提高写操作的性能,在这种情况下,使用户根据自己的业务场景采用一定的机制来处理一致性冲突。
2)保证强一致性。同时要兼顾读性能。
这里我们设置写节点数(W)=总节点数(N)。这里,可以保证在一次写操作后,不会有读操作读到过期数据,同时为了兼顾读性能,设置读节点数R=1。
3)保证强一致性,用户自己调整读写性能
此种方案设置的策略为写节点数(W)+读节点数(R)>总节点数(N)。这样无论在何种场景下,写操作成功后,则不会有读操作读取到过期数据,亚马逊的分布式数据***Dynamo也是采取了这种策略。在此策略的基础上,我们的***允许用户进一步调整读节点数R和写节点数W的值,以便在读写的高可用性上做出一个取舍。
4)当用户的数据不多,单台缓存节点完全可以满足需求,且不需要分区容忍性,只是希望完善可用性和一致性。那么可以采取此种策略。
即设置写节点数W=读节点数R=1,且缓存***只有一个节点,则在此种情况下,此分布式缓存***的备份节点则完全退化为单点。
除了上述四种默认的策略,该缓存***还允许用户自己调整读写策略,以便精确的匹配所有的业务场景对CAP的需求以及对读写效率的需求。
与现有技术相比,本发明的技术方案,根据对分布式***使用的实际场景进行分析,以分布式缓存***的实现为例,通过一些***既有的定制方案或者更深入的精确调节方案来动态调整分布式缓存服务器的读写策略,来达到对实际业务场景的一致性,分区可容忍性以及可用性的策略调整。只需要一套产品,即可以满足不同的业务场景需要。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂类型元数据缓存的解决办法。现有的分布式缓存无法完成有复杂类型参与的分布式缓存过程。因此,本发明提出了一种分布式缓存***和一种分布式缓存方法,可以在现有的分布式缓存方式基础上,充分利用单对象类型完成多对象类型元数据的分布式缓存,建立多对象类型元数据参与的面向复杂类型分布式缓存的通用、统一缓存思路。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种服务建模***,其特征在于,包括:
数据定位单元,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;
场景平衡单元,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;
策略调整单元,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。
2.根据权利要求1所述的服务建模***,其特征在于,所述数据定位单元将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,
所述策略调整单元对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。
3.根据权利要求1或2所述的服务建模***,其特征在于,所述数据定位单元,具体包括:
一致性定位模块,用于将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;
数据写入模块,用于将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;
数据读取模块,用于进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。
4.根据权利要求1或2所述的服务建模***,其特征在于,所述场景平衡单元,具体包括:
写入节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;
读取节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;
总节点数平衡模块,用于基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。
5.根据权利要求1或2所述的服务建模***,其特征在于,所述策略调整单元,具体包括:
冲突自处理模块,用于基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;
读写性能兼顾模块,用于进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;
读写性能自调整模块,用于进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;
工作节点数自调整模块,用于进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。
6.一种服务建模方法,其特征在于,包括:
步骤202:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;基于预设的写入节点数阈值和/或读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入和/或读取操作;
步骤204:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值;
步骤206:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行策略调整。
7.根据权利要求6所述的服务建模方法,其特征在于,所述步骤202将待缓存数据通过一致性哈希定位到的每个逻辑节点,均有备份物理节点,每个物理节点都保存有当前逻辑节点的完整数据;和/或,
所述步骤206对数量调整后的读写服务器进行策略调整时,调整的策略包括读写操作冲突自处理策略、读写性能兼顾处理策略、读写性能自调整策略和工作节点数自调整策略。
8.根据权利要求6或7所述的服务建模方法,其特征在于,所述步骤202,具体包括:
步骤302:将待缓存数据通过一致性哈希定位到预设的每个逻辑节点,将每个逻辑节点作为分布式数据存储的节点;
步骤304:将每个逻辑节点作为分布式数据存储的节点,基于预设的写入节点数阈值,将定位到每个逻辑节点的待缓存数据,进行写入操作;
步骤306:进一步基于预设的读取节点数阈值,将定位到每个逻辑节点的待缓存数据,进行读取操作。
9.根据权利要求6或7所述的服务建模方法,其特征在于,所述步骤204,具体包括:
步骤402:基于对定位到每个逻辑节点的待缓存数据的写入操作,根据实际应用场景,调整预设的写入节点数阈值;
步骤404:基于对定位到每个逻辑节点的待缓存数据的读取操作,根据实际应用场景,调整预设的读取节点数阈值;
步骤406:基于对定位到每个逻辑节点的待缓存数据的写入和/或读取操作,根据实际应用场景,调整预设的写入节点数和读取节点数总和的阈值、以及备份物理节点的总数。
10.根据权利要求6或7所述的服务建模方法,其特征在于,所述步骤206,具体包括:
步骤502:基于调整后的写入节点数阈值和/或读取节点数阈值和/或写入节点数和读取节点数总和的阈值,适应性地调整读写服务器的数量,并对数量调整后的读写服务器进行冲突自处理策略调整;
步骤504:进一步地对数量调整后的读写服务器进行读写性能兼顾处理策略调整,使得在一次写操作后,读操作不会读到过期数据,并设置读节点数为固定值;
步骤506:进一步地对数量调整后的读写服务器进行读写性能自调整策略调整,使得在何种场景下,写操作成功后,读操作不会读取到过期数据;
步骤508:进一步地对数量调整后的读写服务器进行工作节点数自调整策略调整,使得分布式缓存***的备份节点则完全退化为单点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510521786.6A CN105208096A (zh) | 2015-08-24 | 2015-08-24 | 分布式缓存***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510521786.6A CN105208096A (zh) | 2015-08-24 | 2015-08-24 | 分布式缓存***和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105208096A true CN105208096A (zh) | 2015-12-30 |
Family
ID=54955520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510521786.6A Pending CN105208096A (zh) | 2015-08-24 | 2015-08-24 | 分布式缓存***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105208096A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109982389A (zh) * | 2019-03-05 | 2019-07-05 | 电子科技大学 | 一种基于多目标多臂***在线学习的无线缓存方法 |
CN110365752A (zh) * | 2019-06-27 | 2019-10-22 | 北京大米科技有限公司 | 业务数据的处理方法、装置、电子设备和存储介质 |
CN113127570A (zh) * | 2021-05-18 | 2021-07-16 | 上海莉莉丝科技股份有限公司 | 分布式服务器的数据操作方法、***、设备及存储介质 |
CN114443767A (zh) * | 2022-01-26 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 确定分布式***一致性级别的方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521330A (zh) * | 2011-12-07 | 2012-06-27 | 华中科技大学 | 一种桌面虚拟化环境下的镜像分布式存储方法 |
CN102567495A (zh) * | 2011-12-22 | 2012-07-11 | 国网信息通信有限公司 | 一种海量信息存储***及实现方法 |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理*** |
US20140089259A1 (en) * | 2011-06-01 | 2014-03-27 | Huawei Technologies Co., Ltd. | Operation method and apparatus for data storage system |
-
2015
- 2015-08-24 CN CN201510521786.6A patent/CN105208096A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140089259A1 (en) * | 2011-06-01 | 2014-03-27 | Huawei Technologies Co., Ltd. | Operation method and apparatus for data storage system |
CN102521330A (zh) * | 2011-12-07 | 2012-06-27 | 华中科技大学 | 一种桌面虚拟化环境下的镜像分布式存储方法 |
CN102567495A (zh) * | 2011-12-22 | 2012-07-11 | 国网信息通信有限公司 | 一种海量信息存储***及实现方法 |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理*** |
Non-Patent Citations (2)
Title |
---|
JARK: ""分布式存储***"", 《博客》 * |
无: "amazon dynamo的NWR模型", 《爱程序网》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109982389A (zh) * | 2019-03-05 | 2019-07-05 | 电子科技大学 | 一种基于多目标多臂***在线学习的无线缓存方法 |
CN110365752A (zh) * | 2019-06-27 | 2019-10-22 | 北京大米科技有限公司 | 业务数据的处理方法、装置、电子设备和存储介质 |
CN113127570A (zh) * | 2021-05-18 | 2021-07-16 | 上海莉莉丝科技股份有限公司 | 分布式服务器的数据操作方法、***、设备及存储介质 |
CN114443767A (zh) * | 2022-01-26 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 确定分布式***一致性级别的方法、装置、设备及介质 |
CN114443767B (zh) * | 2022-01-26 | 2024-02-09 | 苏州浪潮智能科技有限公司 | 确定分布式***一致性级别的方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102523234B (zh) | 一种应用服务器集群实现方法及*** | |
US10331641B2 (en) | Hash database configuration method and apparatus | |
US20190102103A1 (en) | Techniques for storing and retrieving data from a computing device | |
US10165048B2 (en) | Data copy storage method, terminal apparatus, and server apparatus | |
WO2017050014A1 (zh) | 一种数据存储处理方法和装置 | |
WO2017067117A1 (zh) | 数据查询方法和装置 | |
US10366106B2 (en) | Quorum-based replication of data records | |
US10853193B2 (en) | Database system recovery using non-volatile system memory | |
US20120166403A1 (en) | Distributed storage system having content-based deduplication function and object storing method | |
CN102710763B (zh) | 一种分布式缓存池化、分片及故障转移的方法及*** | |
CN104133882A (zh) | 一种基于hdfs的小文件处理方法 | |
US20150254320A1 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US10275400B1 (en) | Systems and methods for forming a fault-tolerant federated distributed database | |
CN105208096A (zh) | 分布式缓存***和方法 | |
US10067719B1 (en) | Methods and systems for storing and accessing data in a distributed data storage system | |
CN110389859B (zh) | 用于复制数据块的方法、设备和计算机程序产品 | |
CN110633378A (zh) | 一种支持超大规模关系网络的图数据库构建方法 | |
CN108512768B (zh) | 一种访问量的控制方法及装置 | |
CN113010549A (zh) | 基于异地多活***的数据处理方法、相关设备及存储介质 | |
CN106027638B (zh) | 一种基于混合编码的hadoop数据分发方法 | |
CN105516313A (zh) | 一种用于大数据的分布式存储*** | |
CN105279034B (zh) | 一致性缓存控制***和方法 | |
CN109597903A (zh) | 图像文件处理装置和方法、文件存储***及存储介质 | |
CN103036949A (zh) | 一种虚拟化环境下Cassandra***的优化方法和*** | |
CN112579650A (zh) | 基于Redis缓存的数据处理方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151230 |