论文部分内容阅读
随着社交网络、移动互联网、电子商务等技术的不断发展,互联网的使用者们贡献了越来越多的内容。为了处理这些内容,每个互联网公司在后端都有一套成熟的分布式系统用于数据的存储、计算以及价值提取[1]。不仅如此,许多银行、政府机构、大型企业对大规模数据存储与处理都有着强烈的需求,这也解释了为什么时下云计算这么火热并且持续被看好。然而,构建这种系统的软件往往很复杂,同时,每隔一段时间,系统都需要进行升级以提升性能、修改错误或增加新的功能。本文工作所面临的最基本的问题就是如何有效地设计一种工程上可行的升级方案,使得这样规模的分布式系统能得到正确的升级和数据迁移,同时能持续对外提供服务。这个问题的最有趣的一点是,大规模的分布式环境的升级过程往往很长,甚至升级过程需要持续数月。而在这个过程中,有些机器节点已经升级到新的版本,有些却仍处于旧版中。所以,本文要解决这个问题,最为关键的一点在于能够设计一种方案,使得分布式系统能在新旧版本共存的混合模式下继续对外提供服务。本文设计并且实现了一种自动化的升级和数据迁移的方案,解决了如上所述的问题。并且,本文还做了以下工作:1、分析了分布式系统升级问题的难点。2、设计了较为通用的分布式系统升级的总体设计方案。3、设计并且实现了在单个数据中心的分布式环境里的升级方案。4、设计并且实现了在跨数据中心的分布式环境里的升级方案。5、设计并且实现了较为全面和完整的解决方案。6、提出了创新点,诸如回调函数式的数据迁移等方案。本文所做的工作虽然有限定在一定的技术背景的分布式环境中进行,但因为目前各种主流的分布式系统均有很多的共性和相似点,故依旧可以作为较为通用的解决方案。本文也由衷地希望能给之后涉及到该问题的研究者和工程师一定的参考和启发。