SOPHIA: Online Reconfiguration of Clustered NoSQL Databases for Time-Varying Workload
SOPHIA: Online Reconfiguration of Clustered NoSQL Databases for Time-Varying Workload
在不断变化的工作负载模式下重新配置NoSQL数据库对于最大化数据库吞吐量至关重要。由于配置参数搜索空间大,且参数之间存在复杂的相互依赖关系,这是一项具有挑战性的工作。虽然最先进的系统可以自动为静态工作负载识别接近最优的配置,但它们在动态工作负载下会受到影响,因为它们忽略了三个基本挑战:(1)估计重构过程中的性能下降(例如由于数据库重启)。(2)预测新的工作负载模式的暂态性。(3)在重构过程中考虑应用程序的可用性需求。我们的解决方案SOPHIA使用一种将工作负载预测与成本效益分析器相结合的优化技术解决了所有这些缺点。SOPHIA通过计算每个重构步骤的相对成本和收益,确定一个未来时间窗口内的最优重构。此计划指定更改配置的时间和内容,以在不降低数据可用性的情况下实现最佳性能。针对三种不同的工作负载,证明了其有效性:一个多租户的全球规模的宏基因组学存储库(MG-RAST)、一个总线跟踪应用程序(Tiramisu)和一个高性能计算数据分析系统,所有这些都具有不同程度的工作负载复杂性,并展示了动态工作负载变化。我们比较了SOPHIA在两个流行的NoSQL数据库Cassandra和Redis的各种基线上的吞吐量和尾延迟性能。
一研究背景
1)这些解决方案无法在工作负载发生变化的时间窗口内决定一组配置,即更改什么配置以及何时更改。此外,现有的解决方案无法在不降低数据可用性的情况下对数据库实例集群进行重新配置。
2)工作负载更改导致新的优化配置。但是,并不总是希望切换到新的配置,因为新的工作负载模式可能会很短。
3)从根本上说,这就是以前所有dbms自动性能调优方法的缺点所在——面对工作负载的动态变化,它们要么对何时重新配置保持沉默,要么在工作负载发生变化时进行基本的重新配置
二研究方法
针对由多个服务器实例组成的NoSQL集群,开发了一个在线重构系统——sophia,该系统适用于具有不同负载转移率的动态负载。SOPHIA使用工作负载的历史跟踪来训练工作负载预测器,该预测器在运行时用于预测未来的工作负载模式。工作量预测是一个具有挑战性的问题,之前的许多工作都对其进行了研究[43,19,51]。然而,工作负载预测器本身并不是SOPHIA的贡献,它可以与任何具有足够准确和长期预测的工作负载预测器一起工作。SOPHIA在广阔的空间中搜索所有可能的重构方案,并通过一种新颖的成本效益分析(cost - benefit - analysis, CBA)方案来确定最佳重构方案。对于预测的工作负载跟踪中的每个轮班,SOPHIA与任何现有的静态配置调优器(我们在工作中使用RAFIKI,因为它已经为NoSQL数据库设计,并且是公开可用的[15])进行交互,以快速为新的工作负载提供最佳点配置,并从这个新配置中估计收益。SOPHIA执行CBA分析,考虑到新工作负载的预计持续时间和每个重新配置步骤的估计收益。最后,对于所选方案中的每个重配置步骤,SOPHIA发起一个分布式协议来重新配置集群,而不会降低数据可用性并保持所需的数据一致性要求。

在这里,我们将概述SOPHIA的工作流程和主要组件。该系统的示意图如图1所示。每个组件的细节见第4节。
1. SOPHIA作为一个独立的实体在Cassandra集群之外运行。它通过在Cassandra的入口点拦截和观察接收到的查询来测量工作负载。SOPHIA定期查询工作负载预测器(图中的框1),以确定未来是否有任何工作负载变化需要重新配置——没有变化也会为SOPHIA算法提供信息。此外,当预测器识别出工作负载更改时,会触发事件驱动的触发器。预测模型最初是根据应用程序之前运行的代表性工作负载跟踪进行训练的,并在SOPHIA运行时使用额外的数据进行增量更新。使用预测工作负载,SOPHIA查询静态配置调优器,该调优器为预测工作负载中的单个时间点提供最佳配置。静态配置调优器最初是在与工作负载预测器相同的系统跟踪上进行训练的。类似地,静态配置调优器也像工作负载预测器一样进行增量训练。
动态配置优化器(框2)使用成本效益分析(CBA)为给定的前瞻性窗口生成时变的重新配置计划。该计划给出了应该开始重新配置的时间点,以及每个时间点的新配置参数。CBA同时考虑静态的点解信息和估计的时变工作负载信息。它在每隔一个向前看的时间窗口运行,或者在工作负载特征发生足够大的变化时运行。
控制器(框3)启动一个分布式协议,将集群优雅地切换到重新配置计划(第4.5节)中的新配置。该控制器在概念上是集中的,但在实现中使用现成的工具(如ZooKeeper)进行复制和分布。SOPHIA决定并发切换多少个实例,以便集群始终满足用户的可用性和一致性需求。工作负载预测器位于可以观察聚合工作负载的位置,例如在数据库集群的网关上,或者通过查询每个数据库实例以获得其最近的工作负载概要。动态配置优化器在靠近工作负载监视器的专用节点上运行。分布式组件在每个节点上运行以应用新的重新配置计划。
Cost-Benefit Analysis in the Reconfiguration Plan
每次重新配置都会有代价,因为改变参数需要重启,或者会降低数据库服务的性能,例如刷新缓存。SOPHIA中的CBA通过确定退化的数量、持续时间和幅度来计算执行重构计划的成本。如果发现一个重构计划是全局有利的,则控制器启动该重构计划,否则拒绝该重构计划。这一见解,以及由此产生的协议设计,以决定是否以及何时重新配置,是SOPHIA的基本贡献。
Design of SOPHIA
设计回答这两个问题:
什么时候应该重新配置集群?我们应该如何应用重构步骤?第一个问题的答案引出了我们所说的重构计划。第二个问题的答案由我们的分布式协议给出,该协议按轮重新配置各种服务器实例。接下来,
