论文部分内容阅读
随着计算机技术的快速发展,现在已经进入了云计算的时代。在云计算的时代,大部分的服务都是部署在分布式的环境下。在分布式的环境中,许多服务是允许部分失败的,也允许数据的不一致性。但是有些最基础的服务是需要一直保持高的可靠性与一致性,这些服务是分布式系统能够正常提供服务的基础。许多分布式的系统都是多备份的系统。这些系统为了提高数据的访问效率以及数据可靠性,一个数据往往会有多个冗余备份,而且是分布在不同的机器上的。但是,写数据的时候,为了维护数据的一致性,往往需要应用并发控制策略。分布式环境下的并发控制方法有:封锁,时间戳,多版本并发控制法。在写操作冲突概率大并且事务重新执行的开销比较大的场景中,使用封锁的方法比较合适。本文主要针对这种场景,研究分布式锁的实现方案,主要的工作如下:1、提出一个高可用的,故障恢复时间在秒级别的分布式锁系统架构。在论文中主要通过3点来完成:一.设计与实现了一个锁的逻辑处理和锁的数据存储分离的架构;二.在锁申请客户端实现一致性Hash算法来负载均衡锁请求;三.使用Redis的主从数据库方案来存储锁的数据,这个方案提升了锁数据的访问性能与避免锁数据的单点故障问题;在这基础上,同时使用Redis的热备份自动切换功能来减短故障后的恢复时间。整体来说,这个方案不仅仅是一个高可用性的方案,而且也是一个高伸缩性的方案。2、提出一个比基于Nosql的实现方案高效的锁申请客户端的实现方案。3、在锁申请客户端实现预防死锁的功能。4、在锁上使用先来先服务的机制,来实现一个公平的调度策略,避免产生活锁问题。5、在锁的分配服务器中设计了一个高效的内存池,提高大量网络通讯下的内存分配效率。