- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MemCache分布式扩展算法
基于MemCache分布式扩展算法
摘要:随着近些年来互联网的高速发展,每天产生的数据量也随之不断增大,对于网站访问速度的要求不断提高,传统的关系型数据库不能够满足当前的需求。因此我们引入NoSQL数据库,即基于Key-Value模型的缓存关系数据库,用于提高网站的读写效率和访问速度。该文着重讨论基于MemCache的分布式扩展算法来进行研究,实验证明,选取合理的分布式算法,将会进一步大大的提升网站的稳定性和高可用性。
关键词:数据缓存;NoSQL;分布式算法
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)28-0018-02
1 概述
随着web2.0网站的兴起以及近些年来移动互联网的大爆发,传统的关系型数据库已经不能够满足数据的高并发读写、高效率存储和访问以及高可用性等需求,于是非关系型数据库(NoSQL)的出现成为了解决这些问题的有效手段。
针对数据库高并发的读写的需求[1],网站需要提供实时的动态页面和信息,如果使用传统的关系型数据库,并发负载明显偏高,达到每秒上万次的读写请求。关系型数据库可以应对多次SQL查询,但对于写数据请求,硬盘的IO就显得力不从心了。
在网站架构升级的过程中发现,随着用户数量和网站访问量的不断增加,我们的数据库却无法像应用层的业务逻辑一样,简单的以添加服务器和服务节点的方法扩展负载能力和总体性能。尤其对于那些支付网站以及对系统实时性要求比较高的网站来说,对数据库进行升级以及迁移是一件非常麻烦的事情,而且我们在迁移的过程中,要保证用户对此操作是没有任何感知的,这显然对传统的数据库来说,通过添加服务器节点来实现扩展几乎是不可能的[2]。
为有效解决传统关系型数据库的缺陷,使用NoSQL数据库进行替代。当前业内比较流行的NoSQL的数据库产品主要包括MemCache,Redis和MongoDB等,这三种NoSQL数据库用的比较多,也是性能比较不错的三款NoSQL数据库。在本文中,将重点讨论MemCache分布式存储数据的相关算法。
2 基于MemCache的介绍
MemCache是一个高性能的分布式的内存对象缓存系统。通过在内存里维护一个统一的巨大的hash表,并且能够存储各种格式的数据[3]。它是DangaInteractive公司研发的一款软件。初期只是为了用来提高自己公司网站的访问速度,目前已经成为了mixi、hatena、Facebook、Vox、LiveJournal等网站用来提高Web应用扩展性的一款产品。
相比传统的Web应用过程,是把数据保存在RDBMS中,服务器从RDBMS中读取数据,进行数据处理后在显示于浏览器中。但是,如果数据量增大亦或访问集中,必然使得RDBMS的负担加重,数据库响应变得缓慢,最终导致系统响应延迟增加。
采用MemCache可以有效解决这个问题,目的就是通过缓存数据库的查询命中来减少数据库压力,提高响应速度和可扩展性。
如下图示,为常见的MemCache的缓存应用示意图:
从上图,我们不难看出,当客户端过来取数据的时候,首先是从缓存中查询数据,如果没有的话,才会到数据库中查询数据,最终将数据返回给客户端,并且存入到缓存中,以供下一次查询使用。
3 MemCache的分布式原理
MemCache是“分布式”缓存服务器,可是其服务器端并不具备分布式功能。各个服务器之间不会相互通信来共享信息。如何进行分布完全取决于客户端(严格的说是取决于分布式算法如何选择)的实现,因此也称为基于客户端的分布式。
一般有两种实现分布式的算法:
3.1 余数取余算法
余数计算分散法是标准的MemCache分布式方法,客户端根据key计算CRC,对服务器数进行取模,最终得到MemCache服务器节点。
这种方法的缺点是在添加或者移除服务器的时候,缓存重组的代价比较大。
3.2 一致性哈希算法
为了解决余数取余算法添加或者移除服务器带来的性能问题,我们使用一致性哈希算法来解决。
具体的步骤如下:
(1) 使用crc32算法算出每个服务节点的hash值,并将每个值映射到一个0~2^32的圆环上。我们称这个圆环为一个值域。
(2) 使用同样的算法算出要存入的每个key的hash值,也将其配置到这个圆环上。
(3) 接下来从数据映射的位置开始顺时针查找,将数据保存在寻找到的第一个服务器上,倘若超过0~2^32仍然找不到,结果将会保存在第一个服务器中。
如果移除或者添加一台服务器会出现什么情况?
我们发现,当添加node5节点后,node5被放在了node4和node2之间,原本映射到node2和
您可能关注的文档
最近下载
- 初中英语AI辅助阅读理解能力提升策略研究教学研究课题报告.docx
- 人教版部编版统编版六年级上册语文期中复习课件.pptx VIP
- 链家大区商圈经理述职.pptx VIP
- 2025年天津市农机拆解产业园区规划建设可行性研究报告.docx
- 《反对本本主义》课件.ppt VIP
- 北师大三年级下册第七单元《小小鞋店》教学设计含教学反思 .pdf VIP
- 卫生政策学 期末复习小抄.docx VIP
- 房地产成品住房装修技术标准.pdf VIP
- 电力系统北斗短报文业务消息报文传输流程、消息报文编码示例.pdf VIP
- 考研题库 《认知心理学》(第7版)(真题 课后习题 章节题库 模拟试题).docx VIP
原创力文档


文档评论(0)