基于一致性哈希算法的分布式机电系统海量数据存储策略研究

2023-12-20 13:24刘沛津王柳月孙昱史洁琳晏东阳
机床与液压 2023年22期
关键词:哈希权值一致性

刘沛津 ,王柳月 ,孙昱 ,史洁琳 ,晏东阳

(1.西安建筑科技大学机电工程学院,陕西西安 710055;2.西安建筑科技大学理学院,陕西西安 710055)

0 前言

现代工业生产方式中机电设备各单元要素之间呈现出监测节点多元化、空间分布广泛等特点,因此也被称为分布式机电系统[1-3]。随着大型机电设备和集群设备的发展,产生的数据流量呈指数增长,这给传统的数据管理系统带来了数据存储和应用的挑战[4],也使得仅仅依靠集中式存储模式难以高效存储管理边缘设备产生的数据[5]。为了保证系统数据安全可靠、高效经济地利用,在运行过程中亟需高效的数据存储与管理模式进行支撑[6-7]。

分布式存储技术是对数据进行分组处理后,分别存放在多个存储设备中,大量低成本的PC服务器通过网络互联,对外作为整体提供高效的服务[7]。分布式存储系统与传统存储方式相比,在系统的扩展性、访问难易程度与速度等方面具有非常大的优势[8]。将分布式存储技术引入分布式机电系统中,多台主机协同运行,有利于解决传统存储系统对于海量数据的存储瓶颈[9]。

目前常用的分布式存储方法有加权轮询算法和一致性哈希算法。曲乾聪、王俊[10]提出一种基于负载反馈的分布式数字集群动态负载均衡算法,对加权轮询算法进行改进,实现公网数字集群系统负载均衡,但此方法分配任务没有规律,在查找数据时不能快速定位到某一个主机,访问速度慢。目前一致性哈希算法在分布式存储系统中得到了广泛的研究与应用,是一种具有良好横向扩展性的集群动态扩展方法,同时在访问数据时能快速定位,可有效解决分布式机电系统的海量数据存储问题[11]。但传统的一致性哈希算法存在以下问题:一方面,一致性哈希算法没有考虑到各主机的性能差异;另一方面,一致性哈希算法自身没有负载均衡的措施,容易导致负载倾斜。李娟莉等[9]提出了基于实时运行数据驱动的分布式液压支架群虚拟监测方法,该方法基于一致性哈希算法进行分布式存储,建立了可根据主机负载状况动态分配任务的任务调度模型,但未考虑各主机的性能差异。聂世强等[12]提出了一种基于跳跃哈希的对象分布算法,该算法根据节点的权值计算每个节点的虚拟节点数目,对所有节点的虚拟节点依次分配序号组成数组,但未考虑负载后服务器状态变化。

本文作者以分布式机电系统为对象,研究一种能自主地进行主机虚拟节点数目动态分配调整、有效解决负载均衡的分布式存储策略。基于一致性哈希算法的特点,依据各主机负载权值来分配各主机的虚拟节点数量,且当系统负载失衡时,能自主地进行主机虚拟节点数目动态分配调整,最终实现存储系统负载均衡。

1 分布式机电系统数据流结构

分布式机电系统具有非线性、多源性、非平衡型、非典型性等多种复杂特征并存的现象[13-14],系统中的任何错误或干扰都会在后续的流程中成倍放大。分布式机电系统数据流结构框架如图1所示。整个结构分为5层:物理层、管理层、存储层、访问层和应用层。物理层主要包括分布式机电设备的现场监测系统,为各机电液信号传感器的配置与数据采集,通过边缘节点采集数据,在边缘节点进行数据预处理、存储及通信,最终将数据存储在数据库服务器。管理层主要包括分布式机电系统的远程监测平台,主要为边缘节点的管理,通过监测平台调用现场数据,并对数据可视化远程监测,实现良好的人机交互,也为云端数据管理提供便利。存储层主要包括分布式存储系统及云端,主要为分布式机电系统监测任务的多主机动态分配,达到边云协同功能。访问层主要是对外提供统一的访问入口,实现数据查询和并发式访问处理。应用层主要包括对存储数据的高效应用,主要为设备运行评估、报表整合和设备寿命预测等应用[15]。

图1 分布式机电系统数据流结构框架

分布式机电系统运行数据主要由机械、电气、流体、图像、维修记录文档等各类结构化和半结构化数据组成。机械数据主要包括振动、转速、转矩、力、位移等信号,该类信号频率高、突变大,信号极易受影响,检测误差大;电气数据主要包括设备的电流数据和电压数据,而电气信号谐波成分很高,易受电磁干扰且信号密度高,需要具有极高的采集精度[16]。流体数据包括压力、流量、温度等,该类信号相较于前两种变化较慢,可以进行低密度的采集,降低系统负载[17]。分析发现,这些数据具备数据量大的特征,如10 000个测点,20维数据特征,每0.5 s采集一次,分辨率为32 b的5年数据量约2×1015b,达到了P量级[18]。因此,需要对分布式机电系统海量数据储存管理方式进行研究,为高效利用分布式机电系统多元化、准确化的数据奠定基础[19]。

2 分布式机电系统远程监测数据存储策略

由于分布式机电系统存在多时空尺度上的海量数据,随着设备服役时间越长,分布式机电系统远程监测的数据量呈指数型增长,此时,采用分布式存储系统进行数据存储可能存在负载均衡失衡的现象[20]。在分布式存储系统上解决负载失衡以及任务调动是极其必要的,其中一致性哈希算法可以在系统变动尽量小、尽量保持稳定的情况下实现数据分布式存储,但一致性哈希算法没有考虑各主机的性能可能存在差异,自身并没有负载均衡措施,容易导致负载倾斜。文中的存储策略流程如图2所示,根据服务器计算各主机性能权值比例,对各主机的虚拟节点进行分配,利用一致性哈希算法进行分布式存储;最后,对系统负载状况进行评估,大于阈值时触发动态分配机制,通过比较各主机负载均衡状况评估指标,指标最大和最小的主机分别减少和增加1个虚拟节点。用此方法重新动态分配虚拟节点数目,最终实现分布式存储系统负载均衡。

图2 文中存储策略

2.1 基于一致性哈希算法的信息映射

一致性哈希算法的基本原理是将存储空间抽象为一个长度为232-1的圆环,将存储节点分配到这个圆环上,环上的节点都有一个固定的哈希值,这个环被称为哈希环。采用同样的哈希算法求出存储数据的键的哈希值,并同样映射在同一个哈希环上。最后从数据映射的位置顺时针查找存储节点,将数据存储在第一个查找到的存储节点上[21]。

利用一致性哈希算法实现分布式数据存储的关键是需要实现数据和存储主机节点的映射。文中采用存储主机的IP地址为存储主机的特征值,同时以分布式机电系统远程监测数据的名称作为Key值,利用一致性哈希算法将每个数据一一映射到哈希环上。使用FNV-1(Fowler-Noll-Vo-1)算法[22]来计算节点与数据的哈希值,FNV-1算法能在保持较小冲突率的情况下计算大量的数据,因为它高度分散的特性,适用于计算一些非常相近的字符串[23]。使用FNV-1算法来映射分布式机电系统监测任务的信息过程如图3所示。

图3 基于一致性哈希算法的分布式系统信息映射

2.2 负载均衡调整机制

将主机节点和支架节点映射在哈希环上,监测数据和主机节点若在哈希环上均匀分布,即为理想状况。如图4(a)所示,数据节点按顺时针方向寻找离其最近的主机节点,键1落在了主机节点2上,即数据1存储在主机2上,当有大量数据时,依此类推进行存储任务的分配。

当存储主机较少时,由于存储节点经哈希算法计算后分配到哈希环上具有随机性,可能导致存储节点分布不均匀[24],出现哈希偏移现象,如图4(b)所示。本文作者引入虚拟节点,如图4(c)所示,用“#”号表示添加的虚拟节点。虽然每个主机节点的物理节点只有一个,但可以有多个虚拟节点,虚拟节点的引入可在一定程度上解决由于主机节点聚集导致的任务分配不均匀的问题[25]。

但由于虚拟节点数量是平均分配到各存储主机,没有考虑各主机性能差异,因而在虚拟节点的分配中引入权值。通过计算主机性能指标得到主机权值比例,根据权值比例分配虚拟节点的数量。最后,将存储系统负载指标与设定的阈值进行比较,触发动态分配机制,重新分配各主机虚拟节点数目,最终实现存储系统的负载均衡。

2.2.1 基于权值分配虚拟节点

由于各主机的性能存在差异,实时负载高的主机权值应占比较低,处理更少请求,实时负载低的主机权值应占比较高,处理更多请求[26]。为了使算法能根据各主机的性能分配虚拟节点的数量,实现负载自适应,采用权值来反映主机当前的存储能力。根据主机权值定义,主机权值之比为主机初始化性能指标P的倒数之比,利用式(1)计算各主机权值比。

(1)

式中:Pi为各个主机初始化性能评价指标,Pi的值越小表示该主机性能越好;Pci、Pmi分别为第i台主机初始化的CPU占用率、内存占用率;ac、am分别为主机初始化CPU占用率、内存占用率的影响程度;Wi为各个主机的权值,取正整数。根据权值设置虚拟节点的数量。

(2)

式中:主机节点总数量为N,Ni为第i台主机的节点数量,则各台主机增加的虚拟节点数为Ni-1。

2.2.2 动态分配机制

为了存储系统整体分配改变最小化,应保证虚拟节点的总数量不变[27]。因此在系统运行的过程中,当系统的负载均衡评价指标S超过设定的阈值时,设定系统触发动态分配机制,将所有的主机负载状况评价指标Li进行排序,将Li值最大的主机虚拟节点减1,将Li值最小的主机虚拟节点加1,再重新进行系统的负载均衡评价,直至S在设定的阈值范围内。程序流程如图5所示。

图5 监测任务动态分配

主机负载状况评价指标由多个因素共同决定,包括主机的CPU占用率、内存占用率以及任务量等。单台主机负载状况评价指标Li为

Li=100×(bcLci+bmLmi+btLti)且bc+

bm+bt=1

(3)

式中:Li的值越小表示负载越小;Lci、Lmi、Lti分别为第i台主机的CPU占用率、内存占用率以及任务量百分比;bc、bm、bt分别为 CPU占用率、内存占用率以及任务量百分比的影响程度。

利用基于标准差的负载均衡评价方法,根据主机负载状况评价对系统的负载均衡性进行评价,利用式(4)(5)计算分布式存储系统的负载均衡评价指标S。

(4)

(5)

3 试验验证

3.1 试验系统

试验台环境由试验室机电液试验台、智能间开采油控制柜、油井能量反馈节能控制系统整流装置[28]3个边缘设备组成(如图6所示),采用试验室的3个边缘节点cRIO采集数据,通过试验室的分布式机电系统远程监测平台[29]实时采集数据进行试验。

图6 试验台环境组成

3.2 分布式机电系统监测任务初始化试验

设置主机初始化性能指标P的各项指标系数ac、am为0.5、0.5,针对各主机不同的性能,利用式(2)计算各主机权值Wi,通过权值设置各主机的虚拟节点数量,各项指标见表1。

表1 监测任务初始化分配中的各项指标

表中:n为正整数。

根据表1设置各主机节点数目,服务器节点总数为5、10、15、20的分配情况如图7所示。

由图7中的不同节点数的各主机数据分配情况可以得到,随着主机虚拟节点数量的增加,分配到各台主机上的任务量比例逐渐趋于权值比2∶2∶1,处于负载均衡。利用式(3)得到各主机的参数L,其中设置系统矩阵为{0.4,0.4,0.2}。利用式(5)计算得到服务器节点数量不同的情况下系统的负载均衡评价指标S,如图8所示。

图8 服务器节点数量n与均衡性指标S关系

由图8可以得到:当虚拟节点的数量增加到一定程度时,虚拟节点数量的增加对于系统均衡性的作用越来越小。系统中设置初始化的负载均衡评价指标S的阈值为0.1,当S<0.1时,判定系统负载均衡性良好。在此次试验中,S<0.1的服务器节点数量有15、20。在实现需求均衡性的前提下,主机虚拟节点的数量应该越少越好[6],则选择服务器节点数量15作为初始化设置对系统进行初始化。

3.3 分布式系统监测任务动态分配试验

3.3.1 基于权值动态分配

在上述系统初始化试验的基础上,进行任务动态分配试验。设定存储系统总节点数量为15,根据权值比例2∶2∶1分配各主机节点数量为6、6、3,同时增加存储系统的任务量直到系统负载均衡评价指标S高于设定的阈值0.1,此时系统触发动态分配功能,执行一次或多次虚拟节点动态分配后,系统再次达到正常的运行状态,即系统负载均衡评价指标S<0.1。系统动态分配试验过程中各项指标变化如表2所示。

表2 监测任务动态分配中各项指标变化

试验次数1表示系统开始运行,此时的系统负载评价指标小于设定的阈值,系统运行正常;试验次数2表示系统继续运行,此时的系统负载评价指标依旧小于设定的阈值,系统处于正常运行状态;试验次数3表示系统继续运行,此时的系统负载评价指标大于设定的阈值,触发系统的动态分配机制;试验次数4表示进行了一次动态分配后,系统的负载均衡评价指标回到正常范围。该试验表明,在系统运行过程中,此动态调整机制可以使系统正常流畅地运行。

3.3.2 传统一致性哈希算法的动态分配

在不考虑主机性能的情况下,采用一致性哈希算法对分布式机电系统数据进行存储。在初始化任务分配试验基础上,设置总虚拟节点为15,平均分配虚拟节点数量,使得各主机节点均为5个,在系统负载评价指标大于设置的阈值0.1时触发动态分配功能,完成一次或多次动态分配,使得系统负载评价指标低于0.1。同时增加与第3.3.1节相同的试验数据任务量,根据阈值触发动态分配机制,直到系统达到正常的运行状态,即系统负载均衡评价指标S<0.1。试验过程中各项指标如表3所示。

表3 基于传统一致性哈希算法的监测任务动态分配中各项指标变化

试验次数1表示平均分配各主机节点数量的情况下运行系统,此时的系统负载评价指标大于设定的阈值,触发系统的动态分配机制;试验次数2和3表示进行两次动态分配后,系统的负载均衡评价指标回到正常的范围,系统处于正常运行状态。通过两次动态分配后,如试验次数3所示,此时服务器将各主机节点数量分配为6、6、3,分配结果与通过权值比例2∶2∶1分配的各主机节点数相同。试验次数4表示系统继续运行,存储数据量增加后系统负载评价指标依旧小于设定的阈值,系统处于正常运行状态;试验次数5表示系统继续运行,此时的系统负载评价指标大于设定的阈值,触发系统的动态分配机制;试验次数6表示进行一次动态分配后,系统的负载均衡评价指标回到正常范围。

该试验表明:在存储相同的任务量时,在不考虑主机性能的情况下,采用一致性哈希算法对分布式机电系统数据进行存储需要6次试验才达到系统正常运行状态,对比第3.3.1节基于权值比例分配各主机节点数量的一致性哈希动态分配存储策略试验,只需要4次试验则达到系统正常运行状态。对比发现,基于权值比例分配各主机节点数量的一致性哈希动态分配存储策略较平均分配各主机节点数量的一致性哈希动态分配存储策略能有效减少动态分配次数,使系统更快进入正常运行状态。

4 结语

提出一种基于权值比例分配各主机节点数目的分布式存储策略,以应对分布式机电系统海量数据的高效存储。存储策略通过增加一层虚拟节点的哈希环来解决传统一致性哈希算法因节点不足导致负载倾斜的问题;根据主机负载性能权值分配虚拟节点,解决各主机性能差异问题;建立虚拟节点的动态分配机制,在系统运行过程中实现负载的自适应。试验结果表明:文中存储策略可满足分布式机电系统海量数据的复杂业务需求,提高了分布式存储系统的性能,能有效减少动态分配次数,使系统快速进入正常运行状态,具有良好的工程应用和推广价值。

猜你喜欢
哈希权值一致性
关注减污降碳协同的一致性和整体性
一种融合时间权值和用户行为序列的电影推荐模型
注重教、学、评一致性 提高一轮复习效率
IOl-master 700和Pentacam测量Kappa角一致性分析
CONTENTS
基于权值动量的RBM加速学习算法研究
基于多维度特征权值动态更新的用户推荐模型研究
基于OpenCV与均值哈希算法的人脸相似识别系统
基于事件触发的多智能体输入饱和一致性控制
基于维度分解的哈希多维快速流分类算法