CN111177154A - 分布式数据库缓存方法及其哈希环优化 - Google Patents

分布式数据库缓存方法及其哈希环优化 Download PDF

Info

Publication number
CN111177154A
CN111177154A CN201911390078.8A CN201911390078A CN111177154A CN 111177154 A CN111177154 A CN 111177154A CN 201911390078 A CN201911390078 A CN 201911390078A CN 111177154 A CN111177154 A CN 111177154A
Authority
CN
China
Prior art keywords
cache
node
nodes
hash
virtual
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
Application number
CN201911390078.8A
Other languages
English (en)
Other versions
CN111177154B (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.)
Beijing Jingu Zhitong Green Chain Technology Co.,Ltd.
Original Assignee
Zhangxun Yitong Beijing Information Technology 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 Zhangxun Yitong Beijing Information Technology Co Ltd filed Critical Zhangxun Yitong Beijing Information Technology Co Ltd
Priority to CN201911390078.8A priority Critical patent/CN111177154B/zh
Publication of CN111177154A publication Critical patent/CN111177154A/zh
Application granted granted Critical
Publication of CN111177154B publication Critical patent/CN111177154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种分布式数据库缓存及其哈希环优化的方法。首先用哈希算法求出URL固定长度的散列值,然后利用该散列值进行缓存对象的查找的一系列后续操作。进行散列,对所有输入的字符串求得一个128比特的值:将所有URL散列在一个[0,2128‑1]的空间之上,和URL进行一对一的映射。本发明方法采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点,达到了热点迁移,同时也避免了单点故障。

Description

分布式数据库缓存方法及其哈希环优化
技术领域
本发明涉及计算机应用技术领域,特别涉及一种分布式数据库缓存方法及其哈希环优化方法。
背景技术
在数据库集群中,对物理节点的添加或者删除都是集群管理***最基本的功能。如果采用哈希取模、取随机数等常规的哈希算法,那么在有物理节点添加或者删除的情况下,大量原有的缓存就会重新建立,这样会给整个数据库集群***带来严重的性能花销,甚至影响到业务***的正常运作,而且这样还严重的违反了单调性原则。
而一致性哈希算法的出现就是为了保证算法的单调性,即在移除或者添加一个物理节点时,它对于已存在的缓存映射关系的影响非常小。而且,集群中物理节点的数量越多,一致性哈希算法保证单调性的效果越好。一致性哈希算法的原理如下:
(1)确定哈希环及环上的物理节点。
先确定一个哈希值的范围,例如:(-216,216)。将这个范围的所有哈希值看作为一个顺时针递增且首尾相连的圆环,称之为哈希环。
哈希环是实际不存在的虚拟数据结构。假设有A-F的六个节点经过哈希计算后分布在这个哈希环上。那么哈希环的示意图如图1所示。
(2)设定物理节点的访问方式
如果有一个SQL查询请求,将其SQL语句字符串对象作为哈希算法的KEY值,那么计算后的哈希值便映射到哈希环里的某一个点,如果该点没有对应到某一个物理节点,那么顺着哈希环进行顺时针查找(即查找哈希值比其大的物理节点),直到第一次找到有映射的物理节点,该节点就是确定的目标节点(即比其哈希值大的最小节点),如果超过了216这个范围却仍然找不到节点,则匹配至第一个物理节点(因为首尾相连,也可以认为是一直进行的顺时针查找)。如果计算的哈希值介于B~C之间,那么匹配到的物理节点即为C节点。如果该哈希值的值大于F,那么则命中A物理节点。
(3)增加节点的处理
假设要增加一个G物理节点,如图2中灰色圆形框所示。
先计算该物理节点的哈希值,将其值对应到哈希环的某一点上。同时,哈希环的访问方式不变,那么此时映射关系将会发生改变的是分布在节点D到节点G之间的哈希值,这一部分哈希值在节点G增加后,会被映射到节点G,而不是原来的节点E。原分布在节点G到节点E之间的哈希值的映射关系不会改变,还是会被映射到节点E。这样的结果是增加一个物理节点之后仅仅一小部分缓存不命中,需要重新建立。尽管应用一致性哈希算法之后,依然会存在节点增加带来的映射关系改变的问题,但是相比于传统哈希取模的方式已经将映射关系改变的情况降到了尽可能的低。
(4)删除节点的处理
假设需要将图2中的节点G删除掉,那么哈希换将会回复到原始哈希环的状态。此时,被映射到节点G上哈希值的缓存必然会不命中,这种情况下,这部分哈希值将会依顺时针被映射到E节点上,这时,所需要重新建立的缓存仅仅是哈希值分布在节点E到节点G部分的哈希值的缓存。所以,删除一个哈希环上的节点所需要重新建立的缓存也比传统哈希取模的方法大大减少。
一致性哈希算法是目前使用得非常广泛的一种负载均衡算法。一致性哈希算法在动态变化的缓存环境中,很好的满足了判定哈希算法好坏的两个因素——平衡性和单调性。
(1)平衡性:平衡性是指所有的缓存空间都应该得到充分的利用,所以好的哈希算法应该能够使哈希结果的分布尽可能的均匀。
(2)单调性:单调性是指原有***缓存建立稳定之后,***中又增加了新的缓存节点,此时,已建立好的缓存应该可以被映射到新增的缓存空间中,而不会被映射到原有的缓存空间中。
但是经过以上的背景技术分析研究后,本发明发现,决定使用一致性哈希算法时,还必须确定一致性哈希中所使用的哈希算法,这也是非常关键的一步,决定了环上节点分布的均匀程度,还有算法效率等等因素。
发明内容
本发明所要解决的技术问题在于,提供了一种分布式数据库缓存方法及其哈希环优化。本发明方法整个过程达到了一种对于缓存对象空间进行分配的作用,使得后台多个缓存节点能够协同工作,提高效率。当有新的缓存节点加入到哈希环中的时候,原有的各个node负责的范围并不会产生巨大的变化,新节点仅仅会拆分一个node的原有范围,不会在有新缓存节点加入的时候造成缓存空间的重新分配,避免了***负载的波动,保证了该机制的稳定性。
为解决上述技术问题,本发明提供了一种分布式数据库的缓存方法,首先用哈希算法求出URL固定长度的散列值,然后利用该散列值进行缓存对象的查找的一系列后续操作。
优选地,所述方法进一步包括:利用MD5算法进行散列,对所有输入的字符串求得一个128比特的值:将所有URL散列在一个[0,2128-1]的空间之上,和URL进行一对一的映射;将全部[0,2128-1]散列范围看成一个环状的结构,[0,2128-1]范围内的所有散列值沿着顺时针的方向按照从大到小的顺序排列,整体均匀的分布在哈希环上。
优选地,所述方法进一步包括:每个缓存节点,负责哈希环上的一段范围内对应的所有URL,对每个缓存节点的IP值进行哈希计算得到散列值。
优选地,所述方法进一步包括:当用户的请求来了之后,前端代理会获取请求中包含的URL,首先计算本条URL的散列值,该散列值会在哈希环上对于一个键值,然后沿着哈希环的顺时针方向查找第一个大于该键值的node,前端的代理将会把该HTTP请求定位到刚才查找到的后台缓存服务器上;当有新的缓存节点加入到哈希环中的时候,原有的各个node负责的范围并不会产生巨大的变化,新的缓存节点仅仅会拆分一个node的原有范围,不会在有新缓存节点加入的时候造成缓存空间的重新分配。
优选地,所述方法进一步包括:采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点。
优选地,所述自决策的虚拟节点迁移策略,进一步包括:
A.评价缓存服务器状态和服务能力;
B.是选定状态过热,服务能力下降的缓存节点,迁出它们的虚拟节点,同时选定状态正常,服务能力较强的缓存节点,对迁出的节点单进行融合,负担它们的一部分请求负载;
C.对于不同的缓存节点,确定迁移的虚拟节点数。
优选地,所述方法进一步包括:调整哈希环的层数;调整虚拟节点以进行重新平衡;数据迁移。
优选地,所述步骤调整哈希环的层数,进一步包括:如果单位权重的虚拟节点数减少到阈值,则将虚拟节点的层数增加1;如果单位权重的虚拟节点的数量高于阈值,则减小虚拟节点的层;
所述调整虚拟节点以进行重新平衡,进一步包括:在添加新节点或集群中现有节点的删除/故障期间发生重新平衡;
所述步骤数据迁移,进一步包括:将删除虚拟节点中的数据迁移到邻居节点。
为解决上述技术问题,本发明还提供了一种如前述任一项所述分布式数据库缓存方法中的哈希环优化方法,采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点;
优选地,所述自决策的虚拟节点迁移策略,进一步包括:
A.评价缓存服务器状态和服务能力;
B.是选定状态过热,服务能力下降的缓存节点,迁出它们的虚拟节点,同时选定状态正常,服务能力较强的缓存节点,对迁出的节点单进行融合,负担它们的一部分请求负载;
C.对于不同的缓存节点,确定迁移的虚拟节点数。
优选地,所述评价缓存服务器状态和服务能力的步骤,进一步包括:评价每个缓存节点在当前所有缓存节点中的繁忙程度,假设后台有n个缓存节点,计算所有节点当前状态的平均值
Figure BDA0002341890930000051
计算公式如下所示:
Figure BDA0002341890930000052
定义缓存节点的两种状态:(1)对于缓存节点i,如果
Figure BDA0002341890930000053
则为热状态;(2)对于缓存节点i,如果
Figure BDA0002341890930000054
则为正常状态;当缓存集群需要自决策调整的时候,肯定至少有一台缓存节点已经处于热状态了,需要选出哪些处于热状态的缓存节点应该亟需调整,而且需要决策热状态缓存节点上的虚拟节点应该迁移到哪些正常状态的缓存节点上。
本发明有益效果包括:采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点,达到了热点迁移,同时也避免了单点故障。通过动态适应,可用性将更高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是一部分实施例或现有技术,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的类似或相关附图。
图1为本发明背景技术所述哈希环示意图;
图2为本发明背景技术所述哈希环新增节点图;
图3为本发明实施例所述哈希环中虚拟节点与物理节点的对应关系;
图4为本发明实施例所述哈希环中节点数据迁移图;
图5为本发明实施例所述多层一致的哈希环示意图;
图6为本发明实施例所述创建虚拟节点示意图;
图7为本发明实施例所述分布式代理缓存结构图;
图8为本发明实施例所述基于哈希环的URL空间分配图;
图9为本发明实施例所述虚拟节点的迁移互助图。
具体实施方式
下面结合实施例详述本发明。为使本发明的目的、技术方案及优点更加清楚、明确,以下对本发明进一步详细说明,但本发明并不局限于这些实施例。
如果仅仅是把现有的物理节点分布到哈希环上,那么很有可能会出现物理节点在哈希换上分布不均匀的情况,而这种情况对后续的缓存是否分布均匀也会有非常大的影响,从而造成负载不均衡的结果。
在本发明的一个实施方式中,为解决平衡性问题,本发明在哈希环中加入了一个“虚拟节点”的概念。虚拟节点,简单直白的理解就是物理节点在哈希环上的一些复制品,而非实际存在的节点,一般会根据实际情况来决定一个物理节点对应的虚拟节点的个数。虚拟节点与物理节点在哈希环上排列方式、访问方式都一样。而引入虚拟节点之后,每当增加物理节点,哈希环上便需要增加相应个数的虚拟节点,如果是删除物理节点,那么相反的需要在哈希环上删除所对应所有的虚拟节点。
在图3中,节点A-L表示12个虚拟节点,节点1-4表示4个物理节点,每三个虚拟节点对应一个物理节点。SQL字符串对象计算得出的哈希值先对应到环上某一节点,然后按哈希环的访问方式找到对应的虚拟节点,然后再映射带物理节点。而集群中节点的数量越多,一致性哈希算法的平衡性效果越好,所以在引入虚拟节点之后,哈希环上的节点数量大大增加,从而会使一致性哈希算法的平衡性效果更好。
HASH算法具有三大优点:单向性,抗冲突性,分布均匀性。一致性HASH算法更是当前分布式负载均衡和存储均衡最常采用的算法。该算法的实现方法,通过HASH函数对机器节点取值,将机器节点映射到0~232的空间里。数据存储时,将数据块先进行HASH计算得到HASH值,然后根据HASH值对应到环中的某个位置。如图4左图数据object1,计算出hash值key1,然后沿顺时针找到一个机器节点Node1,将object1存储到Node1这个节点中。
如果Node2节点宕机了,则Node2上的数据就会迁移到Node3节点上。这样的好处是即使某个节点坏掉,其它节点的数据访问仍然可用使用HASH算法进行快速定位,只会影响到邻近节点。
一致性散列在分布式***中广泛使用,包括分布式数据库。它提供了将密钥映射到环周围的特定节点的模式。但是,现有的一致哈希方法不能保证数据的准确平衡。例如:扩展时,新添加的节点将仅共享相邻节点的工作负载。从***中删除节点后的相同情况。这将在删除节点或添加节点后导致不平衡状态。
另外,考虑到分布式***中节点的容量在开始时并不总是平衡,要将整个集群转为平衡状态并不容易。在本发明前一实施方式,图3设计的方法中,呈现虚拟节点以将一个物理节点映射到多个虚拟节点以保持平衡。但是,图3方法没有考虑属于同一物理节点的虚拟节点的关系。一旦一个物理节点关闭,就有可能出现数据雪崩的情况。
因此,如图5所示,在本发明另一实施方式中,我们的想法是为分布式数据库创建和使用多层一致的哈希环,并包括:
根据容量和规则计算物理节点的权重。
构造第一个散列环并为物理节点分配不同的权重。
为某些物理节点构建第二个散列环,其中第二个散列环具有更多容量,第二个散列环中的节点是虚拟节点。
如果某些虚拟节点存在不平衡,则构造更多的散列环。
最后,构造多层一致的哈希环。
使用多层散列来定位和访问环中的数据。
一旦节点出现故障,直接绕过非第一层节点,以加速重新平衡。
(一)哈希环启动
在本实施例哈希环启动过程中,根据规则和容量计算每个物理节点的权重,例如存储大小,存储类型,存储时间,存储风险等。
在实施例中,为简化说明起见,我们只使用存储大小作为一个主要因素。但是,可以根据需要指定规则和其他因素。
根据不同物理节点的权重,定义不同的虚拟节点,并生成多层散列环。现实数据处理中,也可能只有一些物理节点的第一层,并且没有第二层和更多层。
(二)创建虚拟节点
在创建虚拟节点期间确保每个虚拟节点的容量大小相同。每个物理磁盘的虚拟节点数取决于权重。虚拟节点和物理节点之间的映射关系将作为元数据记录在映射表中。
如果虚拟节点的数量不够大,则会破坏一致哈希的平衡。因此,应考虑虚拟节点的最低阈值有多级索引来记录每一层哈希环中的节点。
(三)调整哈希环的层数
调整规则是:如果单位权重的虚拟节点数减少到阈值,则将虚拟节点的层数增加1。
另一方面,如果单位权重的虚拟节点的数量高于阈值,则减小虚拟节点的层。
(四)调整虚拟节点以进行重新平衡
在添加新节点或集群中现有节点的删除/故障期间可能发生重新平衡。
在添加节点期间:
-重新计算第一个散列环中所有节点的权重;
-为新添加的节点构造第二层或更多层的散列环;
-将新数据添加到新添加的节点中,并将一些现有数据移动到新添加的节点。
在删除节点期间:
-如果检测到节点出现故障,直接绕过第二层或更高层的所有虚拟节点,这样可以防止大量不必要的节点重定向;
-故障节点中的所有数据将移动到相邻的散列环。
(五)数据迁移:
为了重新平衡,应该将删除虚拟节点中的数据迁移到邻居节点。如果新添加的节点将在一致的HASH圈中找到与删除相同的位置。迁移仅在节点之间发生。
最后,如何发现:
通过检查数据结构和数据流,并查看是否存在多层一致的哈希环。
通过检查用户手册和***行为。
在本发明另一实施方式中,公开了一种哈希环存储机制:分布式代理缓存的结构。如图7所示,一个前端的代理服务器需要管理众多的后台缓存服务器节点,当前端的代理服务器接收到用户的请求时候,会去后台的缓存服务器上获取请求的数据,缓存服务器首先在本地缓存空间查找对应的Web内容,如果查找到了,则返回给前端代理服务器;如果没有查找到对应的Web内容,则首先会去请求的原始Web服务器上取得内容,然后发给前端代理服务器Web内容的同时也会在本地存储一份缓存对象的副本,以便加速后续的请求响应时间。
在分布式代理缓存中,网络用户的所有的HTTP请求会经过代理之后分发到各个缓存之上,由于有后台多个缓存节点的存在,相比于单机的缓存,缓存空间和缓存内容将会大幅度的增加,前台代理的响应时间也会随着减少,从而使得整体的性能得到了提高。显然,后台的多个缓存节点如果均存储相同的内容,上述的优势将会大大折扣,只有将整个缓存副本的空间分配到这些缓存节点上才能保证性能的提升。
对于用户的HTTP请求,其中最有用的信息就是URL,该URL也是后续缓存节点进行内容查找的依据,所以容易想到利用URL来进行缓存空间的划分,但是URL长度千差万别,不作处理直接使用的话难度很大。针对种问题,可以首先用特定的Hash算法求出URL固定长度的散列值,然后利用该散列值进行缓存对象的查找的一系列后续操作。本发明提出了一种基于Hash机制来进行在多个缓存节点之间分配整个URL的空间,也即整个缓存的空间。具体来说,本发明中利用MD5算法进行散列,该算法会对所有输入的字符串求得一个128比特的值,即将所有URL会散列在一个[0,2128-1]的空间之上。考虑到实际的URL数目,该空间范围足够包含所有的内容,可以和URL进行一对一的映射。
为了方便URL路由机制的实现,如图8所示,将整个[0,2128-1]散列范围看成一个环状的结构,[0,2128-1]范围内的所有散列值沿着顺时针的方向按照从大到小的顺序排列,整体均匀的分布在了哈希环之上。对于图7中的每个缓存节点,应当负责哈希环上的一段范围,也即该范围内对应的所有URL。对每个缓存节点的IP值进行哈希得到散列值,正如图中node1到node4代表四个缓存节点,node1和node2之间的范围就是缓存节点2应该负责的URL范围,其他的以此类推。值得注意的是,node3对应的范围跨越了最大值并且从最小值开始,这正是哈希环的优势所在,足以覆盖环上的所有范围。当用户的请求来了之后,前端代理会获取请求中包含的URL,首先计算本条URL的散列值,该散列值会在哈希环上对于一个键值,正如图8所示,然后沿着哈希环的顺时针方向查找第一个大于该键值的node,此node代表着实际环境中的一个缓存服务器,所以前端的代理将会把该HTTP请求定位到刚才查找到的后台缓存服务器上。整个过程达到了一种对于缓存对象空间进行分配的作用,使得后台多个缓存节点能够协同工作,提高效率。同时注意到,该方法还有一个特点,当有新的缓存节点node5加入到哈希环中的时候,原有的各个node负责的范围并不会产生巨大的变化,node5仅仅会拆分一个node的原有范围,不会在有新缓存节点加入的时候造成缓存空间的重新分配,避免了***负载的波动,保证了该机制的稳定性。
虽然哈希环的存储机制运用在缓存管理上有许多优势,但是,却存在一个问题,由于MD5散列算法固有的性质,无法保证各个真实缓存节点IP进行散列后能够均匀分布在整个哈希环之上。正如图8所示,node1和node5的负责范围就差异很大,显然范围大的接收HTTP请求的概率就高,反之亦然。在请求数量比较多的情况下,这会导致各个缓存节点的缓存负载任务不均,而且想要调节各个缓存节点的负载也不容易,除非重新散列各个缓存节点,这显然不可行,代价太大。改进MD5算法对于该问题的解决帮助也不大,因为随机性是散列算法的一大特点,无法使得IP散列后具有某种均匀间隔分布的性质。
上述问题产生分根本原因就是每个缓存节点在哈希环上仅仅对应了一个node,所以在哈希环上引入了虚拟节点的思想来解决缓存空间分布不均的问题。也就是采用多级哈希环的机制,一个物理节点对应多个虚拟节点。虚拟节点的思想核心是,每个缓存服务器出了在哈希环上对已一个node节点之外,还会对应许多虚拟节点v-node,node和v-node负责的所有范围就是真实缓存服务器分配的缓存URL空间,路由查询机制没有任何变化。三个真实的缓存节点对应了Cache哈希环上的nodel、node2、node3,这样,每个缓存节点在哈希环之上将存在多个副本,由于散列的随机性,这些副本将会更加均匀分割整个URL空间。每一个缓存节点在Cache哈希环上面产生的虚拟节点v-node数目根据其服务能力计算得出,服务能力强的缓存对应的虚拟节点数目多,覆盖的URL范围就广,从而被前端代理分配到的用户请求就多;反之亦然。举个例子,node1会被映射成v-node1a,v-node1b,而node2会被映射成v-node2a,v-node2b,node3被映射成v-node3a,v-node3b,v-node3c。
每台缓存节点的虚拟节点数目和其当前的服务能力密切相关。为了使得分布式代理缓存***自主感知***运行状况,之后自主决策模块预测未来缓存节点的运行状态,综合评价出该缓存节点的服务能力,动态决策哈希环上的虚拟节点分布数目,减少负载过重的缓存节点的虚拟节点数目,将这些虚拟节点重新分配给当前服务性能较强的缓存节点,整个过程如图9所示。
图9采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点,达到了热点迁移,同时也避免了单点故障。自决策的虚拟节点迁移互助本质上的是要解决三个问题,一是评价缓存服务器状态和服务能力;二是选定状态过热,服务能力下降的缓存节点,迁出它们的虚拟节点,同时选定状态正常,服务能力较强的缓存节点,对迁出的节点单进行融合,负担它们的一部分请求负载;三是对于不同的缓存节点,迁移的虚拟节点数目的确定。
对于缓存服务器状态和服务能力的评价,感知监测部分经过综合加之后得到了
Figure BDA0002341890930000111
它就代表了该缓存节点的当前状态和服务能力。
Figure BDA0002341890930000112
越大,代表该缓存节点越繁忙,可用的服务能力越小;
Figure BDA0002341890930000113
越小,代表该缓存节点越空闲,可用的服务能力越大。
由于在分布式的代理缓存中,后台拥有许多的缓存节点,所以每次自主决策部分将会收到许多缓存节点的状态值。为了评价每个缓存节点在当前所有缓存节点中的繁忙程度,假设后台有n个缓存节点,计算所有节点当前状态的平均值
Figure BDA0002341890930000121
计算公式如下公式1所示:
Figure BDA0002341890930000122
定义缓存节点的两种状态:(1)对于缓存节点i,如果
Figure BDA0002341890930000123
则为热状态;(2)对于缓存节点i,如果
Figure BDA0002341890930000124
则为正常状态。当缓存集群需要自决策调整的时候,肯定至少有一台缓存节点已经处于热状态了,需要选出哪些处于热状态的缓存节点应该亟需调整,而且需要决策热状态缓存节点上的虚拟节点应该迁移到哪些正常状态的缓存节点上。
首先,定义处于包含所有热状态的缓存节点集合为H,且n1=|H|;包含所有正常状态的缓存节点集合为N,且n2=|N|,那么它们满足公式2:
n1+n2=|H|+|N|=n 公式2
其次,对H中的所有元素按照状态值的降序进行排列,得到了序列SH,该序列代表了所有热状态缓存节点繁忙程度的一个顺序,越靠前的元素,表示该缓存节点越繁忙,可用服务能力下越小,其公式3如下:
SH={SH。1,SH。2...SH。i...}(SH。i≥SH。(i+1)且i=1,2,...,n1)公式3
接下来,对N中的所有元素按照状态值的升序进行排列,得到了序列SN,序列中越靠前的缓存节点越空闲,服务能力越高,其公式4如下:
SN={SN。1,SN。2...SN。i..}(SN。i≤SN。(i+1)且i=1,2,...,n2)公式4
显然,如果只对SH中第一个元素,也就是状态值最大的缓存节点进行调整,每次的调整效果仅仅局限于一个缓存节点,而且没有考虑到元素中最大和次大的状态值差异很小的情况;如果对SH中全部元素的虚拟节点进行调整,开销很大,而且很多节点热的程度较小,没有必要调整。综合考虑,从序列SH的第一个元素开始选取的一个前缀子序列,这个前缀子序列将是最需要调整的热状态缓存节点,因为它们的状态值相对很高,已经处于较繁忙的状态,服务能力已经开始下降。
定义SH中最终求得的前缀子序列为Ssub-H,前缀子序列初始为
Figure BDA0002341890930000132
计算该序列的方法如下:
(1)如果|SH|≤2,那么SH-=Ssub-H,即选取所有元素,过程结束;
(2)如果|SH|>2,首先将SHol和SHo2两个元素加入中;
(3)假设SHoi之前的元素已经都加入了Ssub-H中,如果SHoi满足如下条件,则将SHoi加入Ssub-H,条件表达如公式5:
Figure BDA0002341890930000131
(4)如果SHoi满足(3)中的条件表达公式5,那么对于SH中的下一个元素SHo(i+1),重复(3)中的判断;如果不满足条件表达公式5,则整个选择过程结束。
公式5对SH序列中的元素间隔差进行了判断,最终选取了SH的一个前缀子序列,该前缀子序列Ssub-H由SH前面间隔最小的元素组成,这些元素统一归属于最热的一类缓存节点,也即本次需要调整的缓存节点集合。选取了Ssub-H之后,需要从SN确定中确定一个对应的互助的缓存节点集合,该集合中的缓存节点将会融合Ssub-H中热状态缓存节点的虚拟节点。公式5已经假设了n2=|SN|,对于Ssub-H中的一个热状态缓存节点Ssub-Hoi,它对应的互助空闲缓存节点为SNoi,其中j=i%n2
以上所述,仅是本发明的几个实施例,并非对本发明做任何形式的限制,虽然本发明以较佳实施例揭示如上,然而并非用以限制本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案的范围内,利用上述揭示的技术内容做出些许的变动或修饰均等同于等效实施案例,均属于本发明技术方案保护范围内。

Claims (10)

1.一种分布式数据库的缓存方法,其特征在于,首先用哈希算法求出URL固定长度的散列值,然后利用该散列值进行缓存对象的查找的一系列后续操作。
2.根据权利要求1所述分布式数据库的缓存方法,其特征在于,所述方法进一步包括:利用MD5算法进行散列,对所有输入的字符串求得一个128比特的值:将所有URL散列在一个[0,2128-1]的空间之上,和URL进行一对一的映射;将全部[0,2128-1]散列范围看成一个环状的结构,[0,2128-1]范围内的所有散列值沿着顺时针的方向按照从大到小的顺序排列,整体均匀的分布在哈希环上。
3.根据权利要求2所述分布式数据库的缓存方法,其特征在于,所述方法进一步包括:每个缓存节点,负责哈希环上的一段范围内对应的所有URL,对每个缓存节点的IP值进行哈希计算得到散列值。
4.根据权利要求1所述分布式数据库的缓存方法,其特征在于,所述方法进一步包括:当用户的请求来了之后,前端代理会获取请求中包含的URL,首先计算本条URL的散列值,该散列值会在哈希环上对于一个键值,然后沿着哈希环的顺时针方向查找第一个大于该键值的node,前端的代理将会把该HTTP请求定位到刚才查找到的后台缓存服务器上;当有新的缓存节点加入到哈希环中的时候,原有的各个node负责的范围并不会产生巨大的变化,新的缓存节点仅仅会拆分一个node的原有范围,不会在有新缓存节点加入的时候造成缓存空间的重新分配。
5.根据权利要求1所述分布式数据库的缓存方法,其特征在于,所述方法进一步包括:采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点。
6.根据权利要求5所述分布式数据库的缓存方法,其特征在于,所述自决策的虚拟节点迁移策略,进一步包括:
A.评价缓存服务器状态和服务能力;
B.是选定状态过热,服务能力下降的缓存节点,迁出它们的虚拟节点,同时选定状态正常,服务能力较强的缓存节点,对迁出的节点单进行融合,负担它们的一部分请求负载;
C.对于不同的缓存节点,确定迁移的虚拟节点数。
7.根据权利要求2所述分布式数据库的缓存方法,其特征在于,所述方法进一步包括:调整哈希环的层数;调整虚拟节点以进行重新平衡;数据迁移。
8.根据权利要求7所述分布式数据库的缓存方法,其特征在于,
所述步骤调整哈希环的层数,进一步包括:如果单位权重的虚拟节点数减少到阈值,则将虚拟节点的层数增加1;如果单位权重的虚拟节点的数量高于阈值,则减小虚拟节点的层;
所述调整虚拟节点以进行重新平衡,进一步包括:在添加新节点或集群中现有节点的删除/故障期间发生重新平衡;
所述步骤数据迁移,进一步包括:将删除虚拟节点中的数据迁移到邻居节点。
9.一种如权利要求1-8中任一项所述分布式数据库缓存方法中的哈希环优化方法,其特征在于,采用了自决策的虚拟节点迁移互助策略,对分布式代理缓存中各个缓存节点的运行参数进行感知监测,判断是否有局部过热以其他异常,并根据给定的多副本分级管理策略,选择当前负载较低的缓存节点集合作为辅助,分担Cache哈希环上负载较高、性能降低的缓存节点所对应的虚拟节点;
所述自决策的虚拟节点迁移策略,进一步包括:
A.评价缓存服务器状态和服务能力;
B.是选定状态过热,服务能力下降的缓存节点,迁出它们的虚拟节点,同时选定状态正常,服务能力较强的缓存节点,对迁出的节点单进行融合,负担它们的一部分请求负载;
C.对于不同的缓存节点,确定迁移的虚拟节点数。
10.根据权利要求9所述分布式数据库缓存方法中的哈希环优化方法,其特征在于,所述评价缓存服务器状态和服务能力的步骤,进一步包括:评价每个缓存节点在当前所有缓存节点中的繁忙程度,假设后台有n个缓存节点,计算所有节点当前状态的平均值
Figure FDA0002341890920000031
计算公式如下所示:
Figure FDA0002341890920000032
定义缓存节点的两种状态:(1)对于缓存节点i,如果
Figure FDA0002341890920000033
则为热状态;(2)对于缓存节点i,如果
Figure FDA0002341890920000034
则为正常状态;当缓存集群需要自决策调整的时候,肯定至少有一台缓存节点已经处于热状态了,需要选出哪些处于热状态的缓存节点应该亟需调整,而且需要决策热状态缓存节点上的虚拟节点应该迁移到哪些正常状态的缓存节点上。
CN201911390078.8A 2019-12-27 2019-12-27 分布式数据库缓存方法及其哈希环优化 Active CN111177154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911390078.8A CN111177154B (zh) 2019-12-27 2019-12-27 分布式数据库缓存方法及其哈希环优化

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911390078.8A CN111177154B (zh) 2019-12-27 2019-12-27 分布式数据库缓存方法及其哈希环优化

Publications (2)

Publication Number Publication Date
CN111177154A true CN111177154A (zh) 2020-05-19
CN111177154B CN111177154B (zh) 2023-07-25

Family

ID=70650459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911390078.8A Active CN111177154B (zh) 2019-12-27 2019-12-27 分布式数据库缓存方法及其哈希环优化

Country Status (1)

Country Link
CN (1) CN111177154B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111917853A (zh) * 2020-07-24 2020-11-10 山东云缦智能科技有限公司 用于内容分发网络的分布式缓存扩缩容的优化方法
CN112380288A (zh) * 2020-11-16 2021-02-19 林亮 去中心化分布式数据处理***
CN113507522A (zh) * 2021-07-08 2021-10-15 上海七牛信息技术有限公司 一种提高pcdn网络请求命中率的方法及***
CN113689103A (zh) * 2021-08-18 2021-11-23 国电南瑞南京控制***有限公司 自适应负载均衡用采分流智能调度管理方法、装置及***
CN114629908A (zh) * 2022-03-28 2022-06-14 浙江邦盛科技股份有限公司 一种基于服务器节点硬件资源密度的数据分片方法
CN115297131A (zh) * 2022-08-01 2022-11-04 东北大学 一种基于一致性哈希的敏感数据分布式储存方法
CN115981848A (zh) * 2022-12-17 2023-04-18 郑州斋杆网络科技有限公司 一种内存数据库分片调整方法、设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013387A (zh) * 2007-02-09 2007-08-08 华中科技大学 基于对象存储设备的负载平衡方法
US20140359043A1 (en) * 2012-11-21 2014-12-04 International Business Machines Corporation High performance, distributed, shared, data grid for distributed java virtual machine runtime artifacts
US20170149660A1 (en) * 2014-07-30 2017-05-25 Huawei Technologies Co., Ltd. Packet transmission method, apparatus, and system
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN108810041A (zh) * 2017-04-27 2018-11-13 华为技术有限公司 一种分布式缓存***的数据写入及扩容方法、装置
CN109218438A (zh) * 2018-10-12 2019-01-15 山东科技大学 一种分布式缓存服务器集群的性能优化方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013387A (zh) * 2007-02-09 2007-08-08 华中科技大学 基于对象存储设备的负载平衡方法
US20140359043A1 (en) * 2012-11-21 2014-12-04 International Business Machines Corporation High performance, distributed, shared, data grid for distributed java virtual machine runtime artifacts
US20170149660A1 (en) * 2014-07-30 2017-05-25 Huawei Technologies Co., Ltd. Packet transmission method, apparatus, and system
CN108810041A (zh) * 2017-04-27 2018-11-13 华为技术有限公司 一种分布式缓存***的数据写入及扩容方法、装置
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN109218438A (zh) * 2018-10-12 2019-01-15 山东科技大学 一种分布式缓存服务器集群的性能优化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
巴子言: "基于虚节点的一致性哈希算法的优化" *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111917853A (zh) * 2020-07-24 2020-11-10 山东云缦智能科技有限公司 用于内容分发网络的分布式缓存扩缩容的优化方法
CN112380288A (zh) * 2020-11-16 2021-02-19 林亮 去中心化分布式数据处理***
CN113507522A (zh) * 2021-07-08 2021-10-15 上海七牛信息技术有限公司 一种提高pcdn网络请求命中率的方法及***
CN113689103A (zh) * 2021-08-18 2021-11-23 国电南瑞南京控制***有限公司 自适应负载均衡用采分流智能调度管理方法、装置及***
CN113689103B (zh) * 2021-08-18 2023-11-24 国电南瑞南京控制***有限公司 自适应负载均衡用采分流智能调度管理方法、装置及***
CN114629908A (zh) * 2022-03-28 2022-06-14 浙江邦盛科技股份有限公司 一种基于服务器节点硬件资源密度的数据分片方法
CN114629908B (zh) * 2022-03-28 2023-10-13 浙江邦盛科技股份有限公司 一种基于服务器节点硬件资源密度的数据分片方法
CN115297131A (zh) * 2022-08-01 2022-11-04 东北大学 一种基于一致性哈希的敏感数据分布式储存方法
CN115297131B (zh) * 2022-08-01 2023-05-26 东北大学 一种基于一致性哈希的敏感数据分布式储存方法
CN115981848A (zh) * 2022-12-17 2023-04-18 郑州斋杆网络科技有限公司 一种内存数据库分片调整方法、设备
CN115981848B (zh) * 2022-12-17 2024-05-28 上海律保科技有限公司 一种内存数据库分片调整方法、设备

Also Published As

Publication number Publication date
CN111177154B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN111177154B (zh) 分布式数据库缓存方法及其哈希环优化
CN111159193B (zh) 多层一致性哈希环及其在创建分布式数据库中的应用
WO2018000993A1 (zh) 一种分布式存储的方法和***
Aspnes et al. Load balancing and locality in range-queriable data structures
KR101928529B1 (ko) 코드 분산 해쉬테이블 기반의 맵리듀스 시스템 및 방법
Neglia et al. Access-time-aware cache algorithms
WO2017084393A1 (zh) 内容分发方法、虚拟服务器管理方法、云平台和***
CN110830562B (zh) 一种基于虚拟节点的有限负载一致性哈希负载均衡策略
Xu et al. Drop: Facilitating distributed metadata management in eb-scale storage systems
CN101645919A (zh) 一种基于流行度的副本等级计算方法及其副本放置方法
Xu et al. Adaptive and scalable load balancing for metadata server cluster in cloud-scale file systems
Kangasharju et al. Adaptive content management in structured P2P communities
JP4533923B2 (ja) 階層型ピアツーピアシステムにおける負荷バランシング機能を有するスーパーピア及び該スーパーピアを動作させる方法
Inoue et al. Efficient content replication strategy for data sharing considering storage capacity restriction in hybrid Peer-to-Peer networks
Soltani et al. A dynamic popularity-aware load balancing algorithm for structured p2p systems
CN111917853A (zh) 用于内容分发网络的分布式缓存扩缩容的优化方法
US11310309B1 (en) Arc jump: per-key selection of an alternative server when implemented bounded loads
US20120331143A1 (en) Method For Operating a Local Area Data Network
EP2211525B1 (en) Method for distributing in a self-organizing, distributed overlay network a reference to an object
KR101690944B1 (ko) 이종 컴퓨터 환경에서 부하 분산을 고려한 분산 캐시 관리 방법 및 장치
CN111435345A (zh) 瓦片数据服务***及其方法
Soltani et al. A LOAD BALANCING ALGORITHM BASED ON REPLICATION AND MOVEMENT OF DATA ITEMS FOR DYNAMIC STRUCTURED P2P SYSTEMS
CN117194439B (zh) 一种资源存储***的创建方法、电子设备及存储介质
Xu et al. C 2: adaptive load balancing for metadata server cluster in cloud-scale storage systems
Liu et al. Load balancing strategy for cloud computing based on dynamic replica technology

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
CB03 Change of inventor or designer information

Inventor after: Request for anonymity

Inventor before: Request for anonymity

CB03 Change of inventor or designer information
TR01 Transfer of patent right

Effective date of registration: 20240423

Address after: Building 7, No. 7 Taiping East Road (South), Mafang Town, Pinggu District, Beijing, 101200

Patentee after: Beijing Jingu Zhitong Green Chain Technology Co.,Ltd.

Country or region after: China

Address before: 3009-315, 3rd Floor, Building B, Building 1, Yard 2, Yongcheng North Road, Haidian District, Beijing, 100089

Patentee before: Zhangxun Yitong (Beijing) Information Technology Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right