论文部分内容阅读
计算与通信技术的高速发展加速了互联网应用在人们日常生活中的普及,而在数据中心内构建高效可靠的数据中心应用系统是支持高质量互联网应用的重要保障。数据中心中主要包括三类软件实体:数据中心应用、协同服务、协同内核。多个数据中心应用共同为用户提供服务,它们之间必须进行有效的合作。协同服务为数据中心应用的协调与合作提供了有效支持。协同服务可以有很多种形式,而协同内核的主要目标是用来支撑这些不同形式的协同服务的构建。协同内核作为一个通用模块,提供了一组用于构建协同服务的接口。基于协同内核,我们可以高效地构建各种不同的协同服务。协同内核是构建数据中心应用的一个关键元素,我们希望设计出一个同时满足数据一致性,系统可用性,以及容忍网络分隔的协同内核。但是理论分析表明上述三个性质不能同时满足。对于协同内核而言,为了确保协同的正确完成,数据的一致性必须被满足。而同时网络的分隔难以避免,系统必须对网络分隔具有充分的容忍度。因此对协同内核而言,在必要的时候牺牲系统的可用性是一个必然的选择。这样,构建协同内核的主要挑战在于如何在同时满足数据一致性和网络分隔容忍性的前提下,尽量保证协同内核的可用性。针对上述问题,本文着重研究协同内核构建技术。具体而言,本文的主要贡献包括:首先,本文给出协同内核KVSmith的设计与优化。KVSmith的外在表现形式是一个键值存储服务,它的主要原理是基于多台机器之间的容错协商,保证存储数据的一致性和整个系统的网络分隔容忍性,由此完成协同内核的功能。在上述设计的基础上,KVSmith采用三个优化技术提升系统的性能:并行协商优化、选主优化和本地读优化。这些优化技术是提升KVSmith性能的关键。其次,协同内核的主要目标是支撑高效构建不同的协同服务。本文选择了两个典型的协同服务-锁服务和选主服务-作为应用案例,讨论了如何基于KVSmith协同内核来构建具体的协同服务。基于KVSmith提供的键值数据模型的接口,本文给出了锁服务和选主服务的具体实现。最后,本文实现了KVSmith原型系统,并且对KVSmith的性能进行了全面的实验评估。实验验证的结果表明,在不同类型不同数量的系统负载下,KVSmith均具有较好的性能,并能较快地从节点失效中恢复。