CN102710763A - 一种分布式缓存池化、分片及故障转移的方法及系统 - Google Patents

一种分布式缓存池化、分片及故障转移的方法及系统 Download PDF

Info

Publication number
CN102710763A
CN102710763A CN2012101685543A CN201210168554A CN102710763A CN 102710763 A CN102710763 A CN 102710763A CN 2012101685543 A CN2012101685543 A CN 2012101685543A CN 201210168554 A CN201210168554 A CN 201210168554A CN 102710763 A CN102710763 A CN 102710763A
Authority
CN
China
Prior art keywords
machine
data
pondization
new
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.)
Granted
Application number
CN2012101685543A
Other languages
English (en)
Other versions
CN102710763B (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.)
XINHUA NETWORK CO Ltd
Original Assignee
XINHUA NETWORK 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 XINHUA NETWORK CO Ltd filed Critical XINHUA NETWORK CO Ltd
Priority to CN201210168554.3A priority Critical patent/CN102710763B/zh
Publication of CN102710763A publication Critical patent/CN102710763A/zh
Application granted granted Critical
Publication of CN102710763B publication Critical patent/CN102710763B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

一种分布式缓存池化、分片及故障转移的方法及系统,可以使缓存进行池化、分片及故障转移,并且可以动态实现故障转移和池化。

Description

一种分布式缓存池化、分片及故障转移的方法及系统
技术领域:
本发明涉及一种分布式缓存池化、分片及故障转移的方法及系统,属于软件技术领域。 
背景技术:
随着互联网Web2.0网站的兴起。传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0动态网站已经显得力不从心,暴露了很多难以克服的问题。Web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒几万次读写请求。关系数据库应付每秒上万次SQL查询还勉强能够应付,但是应付每秒上万次SQL写数据请求,硬盘I/O就无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如一些网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因而许多的公司采用了分布式缓存系统来解决这些问题。这些分布式缓存系统给公司带来了新的解决方案,同时也带来了新的挑战。 
很多缓存系统没有原生的可扩展机制,不具有自身可扩展能力,要依赖客户端来实现分布式读写。现实中绝大多数的客户端是通过一致性哈希算法来实现分布式读写的。一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web》中被提出。简单来说,一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个空间按顺时针方向组织。0和2^32-1在零点中方向重合。将各个服务器使用H进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置,当数据访问服务器时,将数据key使用相同的函数H计算出哈希值h,通根据h确定此数据在环上的位置,从此位置沿环顺时针“行走”,第一台遇到的服务器就是其应该定位到的服务器。但一致性哈希具有天生的缺陷。虽然比较传统的哈希取模的方式,一致性哈希已经将不命中的数据降到了最低,但是在一致性哈希算法中,如果增加一台服务器或者宕机重启时,在新服务器到其环空间中前一台服务器(即顺着逆时针方向行走遇到的第一台服务器)之间数据,还是会受到影响。缓存命不中的情况依然不可避免。 
在大型软件设计中,存在着一些宝贵的资源,如线程、数据库连接、网络连接等。这些 资源的使用在时间或空间上极大地影响着软件的使用效率,使得资源的可用性与客户端应用程序的性能和用户的满意程度直接相关。 
池化资源技术的基本思路是事先建立一定数量的对象并保存在内存中,当调用者申请对象时从池中取出一个空闲对象,使用后立即归还,供其它调用者重复使用,这样可以减少频繁创建、销毁对象所造成的开销。因为客户端应用程序不需要重复地建立和销毁对象,因而使用池化资源技术会显著提高连接性能。特别是对于占用资源比较严重的对象,如数据库连接或网络连接等。池化资源机制可以有效减少建立对象所需的时间。除了可以提高连接性能以外,使用池化资源技术还可以更有效地管理资源,池管理器可以根据需要动态调整池中的对象数量,使系统资源得到充分利用。通过对有限资源进行进一步的控制和管理,对象池可以使系统更容易扩展,当用户数量增加时只需要简单地增加池中的可用对象数量。为了提高分布式缓存网络连接的效率,现在一些实现池化的软件只是对通过一致性哈希实现分布式的共享对象进行池化,这种实现过于简单。因为共享对象包含所有的机器,当其中的一台机器宕机的时候,池中所有的共享对象的该机器都无法访问。池的销毁只是销毁共享对象,而不是从共享对象中移除该机器。所以当有一台机器无法访问时,造成了整个共享对象池无效。 
故障转移指当服务器或外部设备发生故障时,利用备份设备切换后继续进行处理的过程。多用于由多个服务器并行操作构成的集群型服务器中。现在的网络应用中,对于应用服务器,数据库等实现故障转移的方法及系统比较多。但是对于分布式缓存越来越高度依赖的今天,对于分布式缓存的故障转移的方法及系统却少有。一般的做法是,当一台机器宕机的时候,缓存中查不到,然后转到关系数据库中查询。然后在将查询的结果存入缓存中,当这台机器重启后,该机器的数据也都丢失了,在宕机时,本该存入该机器中的数据,存入了环中的下一台机器,所以重启后命中这台机器的数据还是访问不到,还需要从数据库中取值。这样不仅影响了命中率,还大大影响了应用程序的性能和用户使用的满意度。 
发明内容:
本发明所要解决的关键技术问题是实现一种池化、分片及故障转移功能的方法,提供一种具备完善的池化、分片及故障转移功能的系统。 
为实现上述发明目的,本发明通过将池化、分片及故障转移功能有机的结合在一起,形成了一套完善的技术方案,具体描述如下: 
首先,将缓存机器按组分配,每组2-3台机器。同组机器进行同步,不同组机器间不进行同步。也就是说同组机器间的数据完全一致,不同组机器间的数据不同。同组机器实现读写分离。同组间机器的主从关系由缓存客户端控制。 
其次,开发缓存客户端,实现分布式读写。使其在新增机器情况下的命中率和没增加前 一致,也就是说,如果没增加机器前的命中率是100%,那个新增机器后的命中率也是100%。把应该位于新增机器上的数据从原有机器上转移过来,进而进行改进一致性哈希算法,让每个组的写机器或读机器为整个哈希值空间组织成一个虚拟的圆环上的一个节点及虚拟节点。 
最后,将实现了一致性哈希的多组机器共享对象进行池化,并且对每个组的读机器和写机器分别进行池化。 
其结合方法为:当读机器中的一台宕机的时候,池管理器检查到该机器已经宕机,会把该机器所在组中的写机器来代替该读机器,放置在该读机器所在虚拟圆环上的节点及虚拟节点上。然后销毁原来的读机器池,重新建立新的读机器池。当该读机器重启后,池管理器检查到该机器已经启动,会把该读机器代替写机器,然后销毁原来的读机器池,重新建立新的读机器池。写机器宕机也是同样的操作。当新增加一个组的时候,池管理器检查到有新的组增加,销毁原来的读写机器池,重新建立新的读写机器池。并将该组的机器标志为新的机器。当数据访问到该新机器的时候,如果有数据就返回。如果没有数据,则沿虚拟圆环顺时针访问下一个节点,如果该节点是老机器,则有数据就返回数据并且把该数据转移到新机器上,没有返回空。如果该节点是新机器,那么再沿虚拟的圆环顺时针访问下一个节点,直到老机器为止。如果到了数据设置的存储有效期,则池管理器将新机器的标示改为老机器,销毁原来的读写机器池,重新建立新的读写机器池。 
本发明所提供的分布式缓存池化、分片及故障转移的系统,通过分组、分布式读写,池化的结合实现,不仅能完成一般的分布式缓存具有的功能,还可以大大提高了缓存的命中率,提高的网络连接速度,增加了分布式缓存的吞吐量,实现了故障转移。从而使本分布式缓存具有较高的命中率和吞吐量,更强的健壮性。利用本发明,可以将分布式缓存在一定程度上作为分布式内存数据库来使用。 
附图说明:
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:图1为系统架构示意图,图2为本系统实现原理流程图。 
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明的具体实施例子进行详细说明。在此,本发明的示意性实施例子及其说明用于解释本发明,但并不作为对本发明的限定。 
分布式缓存池化、分片及故障转移系统的架构示意图如图1所示,系统分为客户端,server集群,缓存集群三大部分,客户端访问server发出请求,server通过缓存客户端调用缓存集群,缓存集群通过相应的算法,返回数据给server,server将获得的数据经过业务 处理呈现给客户端。其具体实现原理及流程如图2所示: 
1、系统启动时,初始化连接池,生成读机器和写机器的连接对象存储在池中。 
2、客户端访问server发出请求,server通过缓存客户端去取得连接对象,如果池中的连接被用完,无法取得,则通知池管理器根据设定的规则去增加新的连接对象,存储在池中。 
3、如果取得连接对象,则将key根据相应的算法生成哈希值,通过该哈希值获取虚拟环上的一个节点。连接该节点对应的缓存机器,如果该缓存机器连接失败,则为该缓存机器做标记,然后通知池管理器,池管理器将该机器从共享对象中删除,然后销毁原来的连接池,重新建立新的连接池。 
4、如果该缓存机器连接成功,则读写数据,如果是写数据,则数据写入该机器缓存。系统运行结束。 
5、如果是读数据,则读取数据,如果取得数据,则判断是否是从key生成的哈希值对应的节点,如果是这个节点,则将数据返回给server. 
6、如果不是这个节点,则将老节点中的数据添加到新节点中,将老节点中的数据删除。将数据返回给server. 
7、如果读取数据为空,判断该机器是否是新机器。如果不是新机器,将空值返回给server. 
8、如果是新机器,顺时针获取虚拟环上的下一个节点。则循环3至7的步骤。 
9、池管理器根据规则检查连接池,当有新机器增加时,池管理器将新机器加入到共享对象中,将该机器标志为新机器。然后销毁原来的连接池,重新建立新的连接池。 
10、池管理器根据规则检查连接池,当有机器连接失败时,池管理器将该机器从共享对象中删除。然后销毁原来的连接池,重新建立新的连接池。 
11、池管理器根据规则检查连接池,当数据达到了设置的最长存储有效期时,池管理器判断是否有新机器标志的机器。如果有,则将该机器该为老机器标志,然后销毁原来的连接池,重新建立新的连接池。 
12、当池管理器接到增加机器通知时,池管理器将新机器加入到共享对象中,将该机器标志为新机器。然后销毁原来的连接池,重新建立新的连接池。 
本系统通过将池化、分片、故障转移有机的结合,形成了一套完善的分布式缓存系统。本系统具有很强的健壮性,先进性,通用性,很好的可维护性,易用性。利用本系统,可以大大提高缓存的命中率、网络连接速度和缓存吞吐量,自动实现故障转移。 

Claims (1)

1.一种分布式缓存池化、分片及故障转移方法及系统实现,其特征在于,在新增机器的时候,通过对原机与新机的状态标识,实现数据从原机到新机自动迁移,使得机器增加前后命中率保持一致。通过分组分片技术,动态对象池化,使同组的互备机器发生故障时自动切换,切换后的机器动态对象池化,保证了切换后的机器和故障机具有相同哈希值,保证了切换前后命中率的一致性。
CN201210168554.3A 2012-05-29 2012-05-29 一种分布式缓存池化、分片及故障转移的方法及系统 Expired - Fee Related CN102710763B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210168554.3A CN102710763B (zh) 2012-05-29 2012-05-29 一种分布式缓存池化、分片及故障转移的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210168554.3A CN102710763B (zh) 2012-05-29 2012-05-29 一种分布式缓存池化、分片及故障转移的方法及系统

Publications (2)

Publication Number Publication Date
CN102710763A true CN102710763A (zh) 2012-10-03
CN102710763B CN102710763B (zh) 2015-11-25

Family

ID=46903309

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210168554.3A Expired - Fee Related CN102710763B (zh) 2012-05-29 2012-05-29 一种分布式缓存池化、分片及故障转移的方法及系统

Country Status (1)

Country Link
CN (1) CN102710763B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008100A (zh) * 2013-02-21 2014-08-27 纽海信息技术(上海)有限公司 集群环境并发处理方法
CN104503999A (zh) * 2014-12-08 2015-04-08 畅捷通信息技术股份有限公司 高并发下的数据获取方法和装置
CN105677736A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 一种增加、删除服务器节点的方法及装置
CN105808638A (zh) * 2016-02-23 2016-07-27 平安科技(深圳)有限公司 数据处理方法和系统
CN106095832A (zh) * 2016-06-01 2016-11-09 东软集团股份有限公司 分布式并行数据处理方法以及装置
CN106776952A (zh) * 2016-12-02 2017-05-31 航天星图科技(北京)有限公司 一种分布式系统中数据存储方法
CN106815318A (zh) * 2016-12-24 2017-06-09 上海七牛信息技术有限公司 一种时序数据库的集群化方法及系统
CN106897365A (zh) * 2017-01-11 2017-06-27 北京市天元网络技术股份有限公司 数据处理方法及装置
CN107046563A (zh) * 2017-01-19 2017-08-15 无锡华云数据技术服务有限公司 一种分布式高效云盘的实现方法、系统及云平台
CN109189326A (zh) * 2018-07-25 2019-01-11 华为技术有限公司 分布式集群的管理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2672035A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. Apparatus, system, and method for managing data in a storage device with an empty data token directive
CN101916302A (zh) * 2010-09-01 2010-12-15 中国地质大学(武汉) 基于哈希表的三维空间数据自适应缓存管理方法及系统
CN102035877A (zh) * 2009-10-07 2011-04-27 捷讯研究有限公司 管理由一组移动设备共享的列表中的项的系统和方法
CN102177508A (zh) * 2008-08-08 2011-09-07 亚马逊技术有限公司 向执行中的程序提供对非本地块数据存储装置的可靠访问

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2672035A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. Apparatus, system, and method for managing data in a storage device with an empty data token directive
CN102177508A (zh) * 2008-08-08 2011-09-07 亚马逊技术有限公司 向执行中的程序提供对非本地块数据存储装置的可靠访问
CN102035877A (zh) * 2009-10-07 2011-04-27 捷讯研究有限公司 管理由一组移动设备共享的列表中的项的系统和方法
CN101916302A (zh) * 2010-09-01 2010-12-15 中国地质大学(武汉) 基于哈希表的三维空间数据自适应缓存管理方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NOSQLFAN: "《NoSQLFAN-关注NoSQL相关技术、新闻》", 24 October 2011 *
徐高省: "《百度文库》", 5 March 2012 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008100B (zh) * 2013-02-21 2019-03-12 北京京东尚科信息技术有限公司 集群环境并发处理方法
CN104008100A (zh) * 2013-02-21 2014-08-27 纽海信息技术(上海)有限公司 集群环境并发处理方法
CN104503999A (zh) * 2014-12-08 2015-04-08 畅捷通信息技术股份有限公司 高并发下的数据获取方法和装置
CN105677736A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 一种增加、删除服务器节点的方法及装置
CN105808638A (zh) * 2016-02-23 2016-07-27 平安科技(深圳)有限公司 数据处理方法和系统
CN105808638B (zh) * 2016-02-23 2019-03-29 平安科技(深圳)有限公司 数据处理方法和系统
CN106095832A (zh) * 2016-06-01 2016-11-09 东软集团股份有限公司 分布式并行数据处理方法以及装置
CN106776952A (zh) * 2016-12-02 2017-05-31 航天星图科技(北京)有限公司 一种分布式系统中数据存储方法
CN106776952B (zh) * 2016-12-02 2019-03-22 中科星图股份有限公司 一种分布式系统中数据存储方法
CN106815318A (zh) * 2016-12-24 2017-06-09 上海七牛信息技术有限公司 一种时序数据库的集群化方法及系统
CN106815318B (zh) * 2016-12-24 2020-08-04 上海七牛信息技术有限公司 一种时序数据库的集群化方法及系统
CN106897365A (zh) * 2017-01-11 2017-06-27 北京市天元网络技术股份有限公司 数据处理方法及装置
CN106897365B (zh) * 2017-01-11 2020-02-14 北京市天元网络技术股份有限公司 数据处理方法及装置
CN107046563A (zh) * 2017-01-19 2017-08-15 无锡华云数据技术服务有限公司 一种分布式高效云盘的实现方法、系统及云平台
CN109189326A (zh) * 2018-07-25 2019-01-11 华为技术有限公司 分布式集群的管理方法和装置

Also Published As

Publication number Publication date
CN102710763B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
CN102710763A (zh) 一种分布式缓存池化、分片及故障转移的方法及系统
CN102955845B (zh) 数据访问方法、装置与分布式数据库系统
US8954391B2 (en) System and method for supporting transient partition consistency in a distributed data grid
CN102591970B (zh) 一种分布式键-值查询方法和查询引擎系统
CN101997823B (zh) 一种分布式文件系统及其数据访问方法
CN103268318B (zh) 一种强一致性的分布式键值数据库系统及其读写方法
WO2017167171A1 (zh) 一种数据操作方法,服务器及存储系统
US10423643B2 (en) System and method for supporting resettable acknowledgements for synchronizing data in a distributed data grid
CN102033912A (zh) 一种分布式数据库访问方法及系统
CN107623703B (zh) 全局事务标识gtid的同步方法、装置及系统
CN104050250A (zh) 一种分布式键-值查询方法和查询引擎系统
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
CN105516284B (zh) 一种集群数据库分布式存储的方法和装置
EP4213038A1 (en) Data processing method and apparatus based on distributed storage, device, and medium
WO2014180232A1 (zh) 请求响应方法、装置及分布式文件系统
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
CN105338028A (zh) 一种分布式服务器集群中主从节点选举方法及装置
CN104020961A (zh) 分布式数据存储方法、装置及系统
CN103312624A (zh) 一种消息队列服务系统和方法
CN110633378A (zh) 一种支持超大规模关系网络的图数据库构建方法
CN106598692A (zh) 在逻辑卷中创建镜像文件、虚拟机启动方法及服务器
TW201248418A (en) Distributed caching and cache analysis
WO2014135011A1 (zh) 数据库系统以及数据同步方法
CN104104739A (zh) 一种云存储系统元数据服务集群的数据同步方法
CN105069152A (zh) 数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151125