分布式存储系统中动态主机发现协议的设计与实现——针对交通/治安卡口的应用
2012-04-10何志强崔新会郑艳娟
何志强,崔新会,郑艳娟
HE Zhi-qiang,CUI Xin-hui,ZHENG Yan-juan
(河北金融学院 河北省科技金融重点实验室,保定 071051)
0 引言
交通/治安卡口系统是运行在主干道路上,实现车辆抓拍、记录同时负责违章检测的监控系统。此类系统为无人值守运行,故其安全性和可靠性要求较高。本文作者结合自身的工程经验,就目前的卡口系统存在的问题进行了分析,提出了基于现有系统实现分布式存储的解决方法。
1 第一代高清卡口系统的运行现状及问题
目前此类系统中主要为第一代高清卡口系统,是按照早期交通测速抓拍标准设计,经过多年运行后逐渐暴露出了问题。由于早期网络覆盖率低,卡口系统被设计为单机运行、人工现场管理的模式。目前公安网的覆盖率有了显著提高,卡口系统的网络化成本显著降低,如何充分利用网络提高现有系统的效能成为亟待解决的问题。
由于单机卡口系统资源独立,相互无法共享,且环境的差异使不同卡口负荷差别明显,特别是存储资源。由于卡口具备交通违法检测功能,违法记录保留时间较长,这些累积数据导致某些路段的系统存储资源十分紧张。目前的卡口系统主机性能尚能满足信息处理的要求,而存储资源成为限制其效能发挥的主要因素。
2 网络化条件下卡口系统的改进方案
为了适应网络化环境,现有的系统可从架构和功能两方面进行改造。其中架构上的改造思路是主机上收实现集群化管理,现场模块全面IP化,在网络中实施QOS策略。从架构上改进的方法最大化的利用了网络,简化了前端功能,优化了结构,提高了可靠性和资源利用率,但所有模块均需重新设计,因而更适于新投入的项目。
图1 采用分布式存储技术互联后的卡口系统
功能上改进可以以现有的卡口为基础,针对矛盾最突出的存储资源问题,通过分布式存储技术实现主机间存储资源共享。如图1所示,分立的卡口系统通过网络实现存储资源共享,还可使用专用存储主机,使存储资源扩充更加灵活。采用分布式存储体系后的卡口主控软件结构如图2所示,相比其他改进方式,此方式只需修改存储访问层,是现有系统升级的最佳方案之一。
图2 采用分布式存储体系后的卡口主控机软件体系结构
由于分布式存储运行过程中,网络资源的可用性的不确定性很大,这要求该系统应具有主机信息的自动汇总、更新和分发能力,故需要设计一个能够实现卡口主机之间相互自主发现的动态主机发现协议(Dynamic Host Discover Protocol,简称DHDP)。
3 动态主机发现协议的功能分析
为了使主机间能够自主发现,同时能够保证系统的强壮性,DHDP应具备自主性、快速性和较低的带宽需求性等特点,针对这些需求,笔者从如下两个角度入手进行了设计。
1)广播与单播
为了实现主机间相互发现,最简单的方法是利用广播。在主机数量较少的时候,所有主机参与广播是可以接受的,但随着主机数量的增加,此方式易引起广播风暴,因此在DHDP中应尽量限制广播的使用。从实现的角度分析,没有广播的触发会导致DHDP协议计算出现死锁,尤其是在新主机加入或处于初始态下会出现死锁。理论上任一主机发出广播均可使其他主机发现其存在,即部分主机的广播即可打破死锁,使协议完成计算。因此笔者将主机广播设计成采用p坚持算法的策略,即按概率p坚持是否发出广播,这样既可在有效减少广播的同时保证协议计算能够完成。
2)主机的角色
当主机能够相互发现后,分布式存储就具备了运行条件。但若没有信息更新的话,该体系将是脆弱的,例如有主机故障退出时,若其不可达信息未通告的话就会导致出错,因此DHDP要能快速收敛。纯对等模式很难实现快速收敛,因此主机信息的汇总和分发应采用C/S模式,即有专门主机负责信息汇总、轮询,及时发现并通告不可达主机。负责信息汇总的主机被称为“根主机”(简称根)和“备份根主机”。由于根除了信息汇总、通告外,还要承担卡口监控任务,故一般由性能高且负荷轻的主机担任。
4 DHDP协议的状态机实现
DHDP协议的关键问题是根的确定。笔者将DHDP协议状态机设计如图3所示,可直接按状态机伪码编程实现协议,状态机转换过程及原理描述如下:
图3 动态主机发现协议状态机
4.1 初始状态
假设某主机未加入DHDP协议体系,该主机会依概率p坚持广播DHDP协议数据单元(Dynamic Host Discover Protocol Unit, 简 称DHDPU);若依概率p选择不广播,则会启动定时器,等待其他节点的报文,若超时后未收到报文则会重新尝试广播。在概率p取值合理的情况下,网络中只有少数主机会发送广播,在实现协议计算的同时广播得到了有效抑制。p坚持算法结合定时器的设计还可以在新主机在加入已收敛的网络时完成协议计算的触发。
4.2 状态机过渡过程
如前所述,DHDP协议的根应由性能好且负荷小的主机担任,因此根的选举在实现自动化的同时也要接受人工干预。本文采用了“可管理优先级”方式实现根选举的管理,优先级采用“优先级字段+IP地址”作为主机优先级取值,其中优先级字段为1字节,占据优先级值的高8位;优先级值的低32位为主机IP,优先级值越小则其优先级越高。在无人工干预的情况下,优先级字段默值为0xff,这样IP地址最小的主机将成为根。当希望某主机成为根时,只需修改其优先级字段即可。
从图3的状态机可见,初始态可能是在体系结构完全没有计算的状态下,如状态I,该主机依概率p发出广播报文后,可能收到其他主机的报文,此时该主机做优先级对比,若该主机为已知的最高优先级,则将过渡至状态K,在定时器控制下等待更高优先级回应,若未收到更高优先级回应,该主机将成为根。成为根后,该主机会选择次高优先级主机作为备份根,并将自身汇总的主机信息发送至备份根,同时将主机信息选择分发给普通主机。若该主机收到更高优先级回应,则会放弃“拟根主机”并对最高优先级主机回应。
若该主机由状态D过度到状态E,即有来自根的回应,说明现有的协议体系已经完成了收敛。在加入时,该主机与根比对优先级值,若自身优先级比现有的根优先级高则新主机将会代替原有的根并重新指定备份根(状态G);若新主机优先级较根优先级低,则成为普通主机(状态H),根主机会通告新主机加入。
4.3 协议的实施
根会监听网上的应答报文,准备新主机加入或根主机交接。因此,DHDP协议在实施过程中,暂定的根主机仅作为过渡角色将很快被取代的话,则该主机的优先级字段不能够取最高值——0x00,而应取一个较低值如0xfd以保留升级空间。
在协议数据格式方面,由于协议报文肩负着主机角色的分配任务,因此该协议报文必须包含优先级字段,以实现主机间的优先级比对;协议数据报文还应能反映主机角色;为了区分不同主机间的报文应答关系,应有SYN字段用以容纳报文序号,应有ACK字段用于与SYN序号对应;为了今后升级需要,单元中还应提供保留字段;同时协议报文还要承担协议体系中主机信息的更新、根的迁移、备份根指定等不同用途的协议报文,因此DHDP协议报格式如图4所示。
图4 协议报文格式
5 结束语
本文分析了交通/治安卡口系统的工作特性,及现有的系统在网络化形势下亟需改进的问题,提出了在此类系统中采用分布式存储的解决方案,针对此类系统的运行环境设计了一套适用于此类主机网络的动态主机发现协议DHDP,实现了协议体系中主机的动态发现和管理,能够实现未来系统的无缝升级。由于本协议针对的应用目标群为中小规模的专用网络,因此协议体系采用了扁平的运行模式,当此协议应用到大规模系统中时,可能会遇到根主机负载过大的情况。DHDP协议的分布化设计将是我们下一步需要研究的内容。
[1] 吴俣,杨智,曲直,肖臻,代亚非. P2P存储系统中基于用户体验的可用性模型与应用[J]. 中国科学: 信息科学,2011,9.
[2] 罗桂兰,赵海,张文波,赵明,张浩华. 论CSMA/CD协议的数学原理[J]. 自动化学报,2007,5.
[3] 宋玮. 分布式存储系统中的节点自主性问题研究[D]. 华南理工大学,2010.