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

题目:面向缓存平台的多资源负载均衡算法的研究与实现

关键词:负载均衡;多资源;缓存平台;迁移开销;最近邻居查询;云计算

  摘要

随着云计算的发展,分布式缓存成为构建可扩展应用程序的重要技术。Facebook、Twitter等使用高度可扩展的分布式缓存系统Memcached来缓存部分应用程序数据,提高应用程序数据访问的速度,缓解云平台中大规模数据并发访问时带来的性能、可用性、可扩展性等方面的问题。分布式对象缓存系统一般使用基于哈希映射的方式将缓存的对象数据分布存储在缓存系统的各个服务节点中。在有新节点加入缓存系统或无数据均衡时,缓存的数据对象不会从一个缓存节点迁移到另一个节点。这就导致有些经常被访问的数据对象所在的数据节点发生资源过载,而其他缓存节点不经常被访问,即缓存平台的资源负载分布不平衡的问题。静态的数据均衡技术无法适用动态的计算环境,因此,通过数据迁移均衡各个缓存节点的资源利用率(如CPU和内存),对于去除缓存平台的性能短板以及应用程序服务质量的保证具有重要作用。 本文提出并实现了缓存平台多资源负载均衡的机制,主要贡献包括:(1).提出缓存系统的多资源负载描述模型,用以描述数据块的负载、节点的效用负载以及缓存平台的负载不均衡程度,并实现了对缓存节点和数据块的负载监控,根据监控数据给出系统多资源的负载分布和性能诊断。(2).提出并实现了缓存平台的弹性扩展算法。当缓存平台整体的资源利用率较低时,通过关闭某些节点,提高缓存平台整体的资源利用率。同时,当缓存平台的服务集群整体过热时,无法通过负载均衡消除系统热点,这时,通过增加新的缓存节点后再进行负载均衡,可以缓解平台的高负荷状态。弹性扩展算法提出了基于阈值的弹性扩展策略,以及在系统收缩时,收缩节点的选择和数据迁移策略。(3).提出并实现了缓存平台的多资源动态负载均衡算法。1. 在不同的资源负载分布场景下,通过数据块在缓存节点间的迁移,同时均衡缓存平台集群的CPU和内存两种资源:根据系统当前CPU和内存资源的整体负载分布,对两种资源给与动态的权重进行负载均衡,当前更稀缺的资源被给与更高的权重;2. 由于数据迁移会引入带宽、CPU等资源利用的开销,可能会影响应用程序的服务质量,为此,本文提出的算法考虑了数据迁移的开销:通过在数据迁移的每一步最大程度地减小系统资源的不均衡程度,从而最小化负载均衡的数据迁移开销;3. 算法提出了基于动态效用负载(Utility Load)的数据迁移节点选择策略和基于最近邻居查询(Nearest Neighbor Search)的迁移数据块选择的策略,根据该策略生成需要迁移的数据列表。通过数学建模,迁移数据块的选择被转化为二维空间中的最近邻居点查询问题,这一问题可在O(log n)时间复杂度用kd tree解决,而已有算法因为数据块选择策略的局限,数据块选择只能用线性扫描方法在O(n)时间复杂度内实现,n为节点内数据块数量。因此,本文提出的算法在大规模缓存系统具有更好的可扩展性;4. 论文还提出了缓存数据在节点间并行迁移的设计与实现机制,以及如何在数据迁移过程中保证数据访问一致性的机制。(4).通过一系列实验,本文比较了基于最近邻居查询(Nearest Neighbor Search)的迁移策略与已有的相关算法在进行缓存平台多资源的均衡时的效果和性能。对比算法包括Backfill Lowest,Backfill Balance,Market Mechanism Police。实验证明,本文提出的算法在各种多资源负载分布场景下都体现出更好的均衡效果;由于本文不使用非线性扫描的方法选取迁移数据块,算法具有更好的时间效率和可扩展性;同时,由于算法考虑了数据迁移的开销,除Backfill Lowest外,本文提出的算法在负载均衡时所需迁移的数据量比其他已有算法更少。