当前位置:问答库>论文摘要

题目:分布式缓存系统中副本机制的研究与实现

关键词:缓存,数据副本,一致性,吞吐量,平均时延

  摘要


随着互联网的发展,社交网络和电子商务应用日益普及。使用这些应用的用户数量正在急剧增加,用户每天会发起数以亿次的请求,导致应用后端的数据中心面临着严峻的挑战。对以硬盘作为存储介质的数据库进行动态扩展,虽然可以暂时提高系统的吞吐量,但已满足不了超大型应用的需求(如Facebook,Twitter,Alibaba)。因此,单纯依靠动态扩展数据库是远远不够的,工业界出现了以Memcached、Redis为代表的分布式缓存系统。通过使用分布式缓存系统,将重复请求的数据缓存在内存中,能够减轻后端数据库的压力、加快请求响应速度、提高用户的服务体验。

然而,目前工业界主流的分布式缓存系统仍然存在一些问题。以Memcached为例,该缓存系统由客户端和服务器两部分组成,服务器节点以内存作为缓存介质,负责管理缓存数据。由于服务器的设计比较简单,不同节点之间不具备相互通信的能力。正常情况下,客户端根据一个数据对象的哈希值,只能将其缓存在唯一一个服务器节点上,而不能同时在多个节点上缓存具有相同哈希值的数据对象。因此,当任意一个服务器节点出现异常时,缓存的数据对象将全部丢失,系统短时间内无法响应用户请求,用户只能从后端数据库获取数据。该问题被称作单点故障问题,主要产生原因是内存具有易失性。Memcached存在的第二个问题是热点问题,即当某一台服务器需要处理的请求数,超过了其处理极限时,可能出现请求丢失、请求处理时间变长、请求失败等问题。上述缺陷的存在阻碍了分布式缓存系统在超大规模的Web应用中进一步发展和运用。

本文首先分析研究了分布式缓存系统存在的问题,确立了使用副本机制解决上述问题的方案,然后设计了一种动态副本模型,同时,在该模型中设计了与之配套的一致性哈希算法和NLPaxos算法,最后设计实现了一个具有副本机制的分布式缓存系统。它具有三层结构,其中R-Memcached中间件的设计与实现是本文研究的核心。该系统支持在存储集群中同时保存一份数据的多份副本,并将副本存储在不同的服务器节点上,以及维护副本之间的一致性。使用该系统既能提升总体吞吐量,又可以提升数据可靠性,还能够降低处理请求的平均时延。

最后,本文设计了测试系统吞吐量和平均响应时延的实验,实验结果表明,与主流的解决方案相比,本文设计并实现的系统具有更优异的性能。