Page 254 - 《软件学报》2021年第11期
P. 254

3580                                Journal of Software  软件学报 Vol.32, No.11, November 2021

                    分布式索引集群通过上述 5 类节点的相互协同,保证了高效的索引构建、数据存储和查询响应.各类节点
                 的作用如下:
                    (1)  构建节点实时接收数据流,快速构建下层索引,并选择合适的查询节点发布索引结构;
                    (2)  查询节点维护双层索引,支持高效查询;
                    (3)  存储节点是集群中最底层的部分,用于持久化数据流及其索引;
                    (4)  协调节点保存集群各节点状态数据和索引元数据;
                    (5)  控制节点是集群的核心,负责合理的调度集群中的各类节点,保证集群的稳定.
                    构建节点接收到数据流后,将其缓存在当前的时间窗口中,并在窗口结束后触发构建下层索引,完成下层索
                 引构建后,构建节点选择合适的查询节点发布索引,由查询节点提供查询服务.这种机制将索引构建和查询解
                 耦,同时保证了两个模块的高效.查询节点收到下层索引后,以引用的方式将其插入上层索引,并同步更新所有
                 上层索引副本,从而完成整个 WB-Index 的构建.窗口流元组一开始会缓存在构建节点中,由构建节点异步的将
                 流元组持久化到存储节点.同样,受内存空间限制,查询节点中的双层索引结构也将持久化到存储节点.
                    WB-Index 上下两层索引都支持范围查询,其结构限定查询条件需带有时间属性.上层索引冗余维护在每个
                 查询节点,故相应节点均能处理查询请求.分布式查询过程可分为上层索引搜索、下层索引搜索、流元组加载
                 和数据整合.查询时,首先根据查询条件中的时间属性搜索上层索引,获取其叶节点中的引用值,并定位查询涉
                 及的下层索引,再搜索下层索引加载对应流元组,最后整合查询结果.数据流查询过程中充分利用了内存的缓存
                 作用,把公共查询结果(相同查询条件的流元组)、热点查询结果(热点流元组)和最新数据流元组分别缓存在查
                 询节点和构建节点上,最大限度提升查询性能.
                    WB-Index 索引系统具有可扩展性,借鉴当前典型的云计算系统(如 Hadoop)来设计.WB-Index 系统可以根
                 据系统性能需要,动态地增加查询节点与存储节点.WB-Index 系统通过采用多副本冗余机制实现故障恢复.另
                 一方面,随着系统的运行,存在“过期”数据的处理问题.不同的应用在这方面有不同的过期数据处理要求.由于所
                 提 WB-Index 索引的上层索引是对窗口时间的索引,过期数据位于上层 B+树索引的左侧,可以方便据此进行数
                 据的生命周期管理:增加查询节点或存储节点扩容,或选择时间区域归档,或销毁数据(删除上层 B+树的某些叶
                 节点).
                 2.3   查询节点负载均衡
                    构建节点将构建好的下层索引分发到查询节点,由查询节点处理查询请求.数据流速具有波动性,每个窗口
                 中,流元组数据量有较大差异;另外,流元组具有热点性,热点数据的访问频次远高于其他数据,需将热点数据尽
                 可能地分散到不同的查询节点上,避免查询请求堆积到个别查询节点,从而保证查询效率.因此在分发下层索引
                 时,需保持各节点的负载均衡.传统的轮询、哈希负载均衡法没有结合数据流的特点,无法适用于 WB-Index.本文
                 结合数据流的波动性、热点性以及集群节点间的性能差异,基于加权轮询算法,通过实时采集节点的性能指标、
                 查询频次等信息,动态调整查询节点分发权重,实现较为精细的负载均衡.
                    图 3 描述了完整的负载均衡过程,其中涉及负载参数见表 1,具体步骤如下.
                    (1)  查询节点实时采集、计算节点负载信息,定时推送至协调节点,由协调节点管理节点负载信息;
                    (2)  控制节点监听协调节点中节点负载信息变化,调整各查询节点权重;
                    (3)  发布索引时,根据各查询节点权重,采用加权轮询算法,选取合适的节点发布.

                                               Table 1  Node payload parameters
                                                   表 1   节点负载参数表
                                             负载参数               描述
                                                N q    单位时间内下层索引查询频次
                                                N c     单位时间内处理器平均负载
                                                N m        当前空闲内存大小
   249   250   251   252   253   254   255   256   257   258   259