一种基于设备地址域的通讯报文分发系统及分发方法与流程

文档序号:18632429发布日期:2019-09-11 21:47阅读:266来源:国知局
一种基于设备地址域的通讯报文分发系统及分发方法与流程

本发明涉及电力系统数据采集领域,尤其涉及一种基于设备地址域的通讯报文分发系统及分发方法。



背景技术:

随着电力现场采集终端规模的不断扩大,浙江省用电采集系统采集终端数量规模达到300多万,采集用户达到2500多万,业务处理程序用于保存的终端、表计档案的内存高达50到60gb,对于单节点程序内存的管理肯定无法接受全加载档案,这就意味着业务处理程序需要集群分组,通信分发程序向业务处理程序分发报文需要采用一定策略来降低单节点内存加载并且同时具备节点高扩展性。

通信报文分发方法是为了降低处理程序集群单节点加载的内存,同时让处理集群具备分布式扩展特性。

通信报文分发方法有很多,例如按终端资产的单位代码来分配各个节点处理的终端数量,还有按终端设备地址域来分配等等。

目前报文分发存在程序加载占内存大,程序集群扩展能力弱的情况。



技术实现要素:

本发明要解决的技术问题和提出的技术任务是对现有技术方案进行完善与改进,提供一种基于设备地址域的通讯报文分发系统及分发方法,以达到降低地服务器内存配置要求的目的。为此,本发明采取以下技术方案。

一种基于设备地址域的通讯报文分发系统,包括通信网关集群、采集前置集群、数据入库模块,分布式消息队列模块;

通信网关,用于终端各种信道的链路维护功能,链路的负载均衡功能由通信网关之前的负载均衡器实现,分发异常或分发量超过处理能力时报文本地文件缓存,gprs/cdma及光纤终端通过负载均衡器接入通信网关实现集群;

采集前置机,与网关集群相连,用于原始数据报文的分发调度,并将原始数据报文推送至分布式消息队列中;采集前置集群对报文的分发调度基于设备地址域算法实现策略分发,通过监控业务处理器集群各节点的运行状况实现分发策略的动态调整;采集前置机所有节点启动后都在zookeeper分布式服务系统上注册运行状态,每个节点可以通过zookeeper分布式服务系统获取各个节点运行信息;通信网关节点通过与采集前置机的定时心跳握手获取所有采集前置机节点运行状态,把本节点上的终端地址按地址域取模算法分发给指定采集前置机节点,分配信息保存在内存;采集前置机收到上行报文后发现是未知终端则加载档案,通信网关的对应关系,定时更新到zookeeper分布式服务器;从消息队列集群中取该终端设备地址所对应的下行请求,下发给对应网关;通信网关定时检测采集前置机节点状态,如发现2个心跳周期没有收到采集前置机节点心跳,则认为该节点故障,把该节点所属终端按地址域划分均衡分配给其他活动节点;通信网关发现故障节点恢复时,把上一次原属于该节点的终端再还给该节点,并把最新的对应信息更新内存;采集前置机需要定时清理非本节点管理终端档案信息;

数据入库模块,用于对消息队列中采集前置机推送的解析数据存储到关系型数据库;采用分布式大数据框架hadoop和传统关系型数据库oracle结合的方式以适应海量数据的分析和存储,解析数据包括上报任务数据和异常事件;

分布式消息队列模块,用于支撑上下行通信交互信息的时序化和持久化;采用分布式kafka消息队列,在逻辑架构中体现数据总线的功能,通信层、应用层和数据持久层通过消息队列来进行数据交互,消息队列存放下行请求队列、上行应答队列、解析数据队列、上下行报文队列;

通信网关实现通信层的链路层功能,前置机的调度分发策略采用地址域取模分发策略,由通信网关实现分发策略,采集前置需要与通信网关定时心跳握手来确认双方节点是否运行正常;通信层的业务功能通过采集前置机、数据入库及消息队列三大独立功能模块共同实现。解决程序内存高效处理与降低内存提高系统内存回收效率之间的矛盾,降低了程序对服务器内存配置要求,降低通信调度程序分发策略对系统档案的依赖性,提高前置系统的分布式扩展能力。

作为优选技术手段:采集前置机把现场所有终端设备地址域划按一定规则划分为多个区间,设备地址按下行topic的数量取模得到对应组地址域区间;下行topic与地址域区间之间存在映射关系,前置业务处理器节点对地址域区间的管理,也即对下行topic的管理;初始化地址域分配策略按业务前置处理服务节点数量取模,节点新增、节点故障及故障节点恢复时分别按照“新增节点分发策略”、“节点故障时分发策略”和“故障节点恢复时分发策略”实现动态调整,将分配信息及时更新至zookeeper分布式服务系统,以降低程序内存加载,提高程序集群扩展能力。

作为优选技术手段:a)节点新增/扩容时的分发策略为:

a01)对每个业务处理器节点所分配的topic按照topic编码进行排序,并计算该节点当前处理的topic总数;

a02)对业务处理器节点根据topic总数进行排序;

a03)计算每个业务处理器节点能处理topic的平均值,topic总数除以业务处理器节点总数;

a04)将节点中topic数量大于avgtopic的所有业务处理器节点的多余topic取出,取出规则:a05)优先选择步骤a02)排序较大的业务处理器节点中topic编码较大的topic;

a06)将步骤a04)中取出的topic优先分配给新增的业务处理器节点,使新增节点的topic数约平均值;若仍有未分配的topic则对所有节点进行取模分配;

a07)其他节点中删除被分配走的topic信息。

作为优选技术手段:b)节点故障时的分发策略为:

b01)对前置业务处理器节点按照topic数量进行排序;

b02)topic总数除以当前运行的前置业务处理器节点总数,得到当前运行的每个业务处理器节点处理topic的平均值;

b03)根据平均值计算当前运行的每个业务处理器节点可新增的topic数量:由b计算得的均值-现有的topic数;

b04)将因节点故障引起的待分发topic按照节点新增/扩容时的分发策略的计算值依次分发给排序小的业务处理器节点。

作为优选技术手段:c)故障节点恢复时分发策略为:

c01)恢复的业务处理器节点按照初始化时的分配策略加载对应的topic;

c02)从其他业务处理器节点定时删除这些被归还给恢复节点的topic信息。

本发明的另一个发明目的为提供一种基于面向对象的数据分发方法,其特征在于:

1)把现场所有终端设备地址域划按一定规则划分为若干区间;

2)kafka分布式消息队列下行队列设计,按组编号分对应组topic,每组按优先级再细分若干个队列;

3)初始化地址域分配策略按采集前置机数量取模,后续增加或者减少节点动态按数量取模分配,并把分配信息及时更新zookeeper分布式服务系统;

4)采集前置机所有节点启动后都在zookeeper分布式服务系统上注册运行状态;通信网关节点通过与采集前置机的定时心跳握手获取所有采集前置机节点运行状态,把本节点上的终端地址按地址域取模算法分发给指定采集前置机节点,分配信息保存在内存;

5)采集前置机收到上行报文后发现是未知终端则加载档案,并记录终端地址和通信网关的对应关系,并地址更新到zookeeper分布式服务器;从消息队列集群中取该终端设备地址域所属topic下优先级从高到低取下行请求,组帧后下发给对应通信网关;采集前置机发送实现多终端并行单终端串行发送策略;

6)通信网关定时检测采集前置机节状态,当发现2个心跳周期没有收到采集前置机节点心跳,则认为该节点故障,把该节点所属终端按地址域划分均衡分配给其他活动节点;通信网关发现故障节点恢复时,把上一次取模原属于该节点的终端再还给该节点,并把最新的对应信息更新内存;采集前置机需要定时清理非本节点管理终端地址域组档案信息。

有益效果:

一、本技术方案基于设备地址域,根据业务处理节点数量动态取模,实现报文分发,解决程序内存高效处理与降低内存提高系统内存回收效率之间的矛盾,降低了程序对服务器内存配置要求,降低通信调度程序分发策略对系统档案的依赖性,提高前置系统的分布式扩展能力。

二、本技术方案采用分布式弹性架构设计,运用流处理、消息中间件、分布式存储与并行计算等技术,重构电力数据采集系统,从存储能力、计算性能、数据处理速度和智能分析等方面进行极大地提升,为支撑用电营销智能分析、服务业务创新、拓展专业应用和提高供电服务水平等方面提供了有力保障。

三、本技术方案实现动态调整,以减少且均衡加载系统档案,降低程序对服务器内存配置要求。

海量数据存储架构重在“内存化、云化、分工专业化”,实现电能量数据集成融合和高效管理。

对海量数据的分析,采用大数据云平台通过基于分布式文件系统的大数据框架实现业务数据的实时计算、离线分析。

离线分析框架优选的采用hive+spark,spark离线计算框架实现将原始数据导入hive数据仓库执行海量数据的统计分析业务及数据挖掘。

对海量数据的存储,根据不同的数据使用属性将关系型数据库划分为主生产库、灾备库、历史库、数据发布库,保障采集数据安全稳定、降低生产库的数据访问压力、提升数据发布效率,并按业务和存储时限做分库策略以降低单点数据库的访问压力。

附图说明

图1为本发明结构框图。

具体实施方式

以下结合说明书附图对本发明的技术方案做进一步的详细说明。

如图1所示,一种基于设备地址域的通讯报文分发方法包括包括通信网关集群、采集前置集群、数据入库模块,分布式消息队列模块;

通信网关,用于终端各种信道的链路维护功能,链路的负载均衡功能由通信网关之前的负载均衡器实现,分发异常或分发量超过处理能力时报文本地文件缓存,gprs/cdma及光纤终端通过负载均衡器接入通信网关实现集群;

采集前置机,与网关集群相连,用于原始数据报文的分发调度,并将原始数据报文推送至分布式消息队列中;采集前置集群对报文的分发调度基于设备地址域算法实现策略分发,通过监控业务处理器集群各节点的运行状况实现分发策略的动态调整;采集前置机所有节点启动后都在zookeeper分布式服务系统上注册运行状态,每个节点可以通过zookeeper分布式服务系统获取各个节点运行信息;通信网关节点通过与采集前置机的定时心跳握手获取所有采集前置机节点运行状态,把本节点上的终端地址按地址域取模算法分发给指定采集前置机节点,分配信息保存在内存;采集前置机收到上行报文后发现是未知终端则加载档案,通信网关的对应关系,定时更新到zookeeper分布式服务器;从消息队列集群中取该终端设备地址所对应的下行请求,下发给对应网关;通信网关定时检测采集前置机节点状态,如发现2个心跳周期没有收到采集前置机节点心跳,则认为该节点故障,把该节点所属终端按地址域划分均衡分配给其他活动节点;通信网关发现故障节点恢复时,把上一次原属于该节点的终端再还给该节点,并把最新的对应信息更新内存;采集前置机需要定时清理非本节点管理终端档案信息;

数据入库模块,用于对消息队列中采集前置机推送的解析数据存储到关系型数据库;采用分布式大数据框架hadoop和传统关系型数据库oracle结合的方式以适应海量数据的分析和存储,解析数据包括上报任务数据和异常事件;

分布式消息队列模块,用于支撑上下行通信交互信息的时序化和持久化;采用分布式kafka消息队列,在逻辑架构中体现数据总线的功能,通信层、应用层和数据持久层通过消息队列来进行数据交互,消息队列存放下行请求队列、上行应答队列、解析数据队列、上下行报文队列。

一种基于设备地址域的通讯报文分发方法,包括步骤:

1)把现场所有终端设备地址域划按一定规则划分为若干区间;

2)kafka分布式消息队列下行队列设计,按组编号分对应组topic,每组按优先级再细分若干个队列;

3)初始化地址域分配策略按采集前置机数量取模,后续增加或者减少节点动态按数量取模分配,并把分配信息及时更新zookeeper分布式服务系统;

4)采集前置机所有节点启动后都在zookeeper分布式服务系统上注册运行状态;通信网关节点通过与采集前置机的定时心跳握手获取所有采集前置机节点运行状态,把本节点上的终端地址按地址域取模算法分发给指定采集前置机节点,分配信息保存在内存;

5)采集前置机收到上行报文后发现是未知终端则加载档案,并记录终端地址和通信网关的对应关系,并地址更新到zookeeper分布式服务器;从消息队列集群中取该终端设备地址域所属topic下优先级从高到低取下行请求,组帧后下发给对应通信网关;采集前置机发送实现多终端并行单终端串行发送策略;

6)通信网关定时检测采集前置机节状态,当发现2个心跳周期没有收到采集前置机节点心跳,则认为该节点故障,把该节点所属终端按地址域划分均衡分配给其他活动节点;通信网关发现故障节点恢复时,把上一次取模原属于该节点的终端再还给该节点,并把最新的对应信息更新内存;采集前置机需要定时清理非本节点管理终端地址域组档案信息。

本发明用于电力采集前置系统的通信调度程序向业务处理程序集群分发报文的分发方法,解决程序内存高效处理与降低内存提高系统内存回收效率之间的矛盾,降低了程序对服务器内存配置要求,降低通信调度程序分发策略对系统档案的依赖性,提高前置系统的分布式扩展能力。总结来说,改方法经济有效。

本技术方案可采用弹性架构重构通信程序,满足不断增长用户规模和采集需求:运用大数据技术对用电信息采集系统的架构进行重新设计,采用分布式弹性架构设计:一是通信网关与采集前置机利用消息缓存作为总线,进行报文通信;二是前置机业务处理器仅对报文进行规约解析,并将数据写入消息缓存;三是存储架构重在“内存化、云化、分工专业化”,引入nosql存储、数据量大、存储管理能力多样,云平台流式计算和离线分析服务集群进行事件分析、数据校验、修复等操作,关系数据库根据不同的数据使用属性划分为主生产库、灾备库、历史库、数据发布库。四是所有采集数据由入库服务集群统一入库。

通信网关服务主要负责专变负控终端、配变监测终端、低压集中器等采集设备接入电力数据采集系统,并维护终端通讯链路和原始报文的收发。

采集前置服务负责原始数据报文的分发调度。

采集前置服务对报文的分发调度基于设备地址域算法实现策略分发,通过监控前置业务处理器各节点的运行状况实现分发策略的动态调整。其具体算法如下:

a.把现场所有终端设备地址域划按一定规则划分为若干区间,比如设备地址按下行topic的数量(100个)取模得到100组地址域区间。如此,下行topic与地址域区间之间也存在映射关系,前置业务处理器节点对地址域区间的管理也即对下行topic的管理;

b.初始化地址域分配策略按业务前置处理服务节点数量取模,节点新增、节点故障及故障节点恢复时分别按照“新增节点分发策略”、“节点故障时分发策略”和“故障节点恢复时分发策略”实现动态调整,并将分配信息及时更新至zookeeper分布式服务系统。此分发策略目的在于降低程序内存加载,提高程序集群扩展能力;

c.节点新增(扩容)时分发策略:

1)对每个业务处理器节点所分配的topic按照topic编码进行排序(如:由大到小),并计算该节点当前处理的topic总数;

2)对业务处理器节点(不含新增节点)根据topic总数进行排序(如:由大到小);

3)计算每个业务处理器节点能处理topic的平均值(假设该值标记为avgtopic):topic总数除以业务处理器节点总数(含新增节点),小数位舍去;

4)将节点中topic数量大于avgtopic的所有业务处理器节点的多余topic取出,取出规则:优先选择步骤2排序较大的业务处理器节点中topic编码较大的topic;

5)将步骤4中取出的topic优先分配给新增的业务处理器节点,使新增节点的topic数约平均值;若仍有未分配的topic则对所有节点进行取模分配;

6)其他节点中删除被分配走的topic信息;

d.节点故障时分发策略:

1)对前置业务处理器节点按照topic数量进行排序(如由大到小);

2)topic总数除以当前运行的前置业务处理器节点总数,得到当前运行的每个业务处理器节点处理topic的平均值;

3)根据平均值计算当前运行的每个业务处理器节点可新增的topic数量:由b计算得的均值-现有的topic数;

4)将因节点故障引起的待分发topic按照步骤c的计算值依次分发给排序小的业务处理器节点;

e.故障节点恢复时分发策略:

1)恢复的业务处理器节点按照初始化时的分配策略加载对应的topic;

2)从其他业务处理器节点定时删除这些被归还给恢复节点的topic信息。

前置业务处理服务负责通讯规约解析,并与分布式消息队列进行交互。即从消息队列获取下行请求并组成下行帧,将采集前置的原始数据报文进行规约解析并将解析结果推送至分布式消息队列中。

采集前置服务节点通过与业务处理器节点间定时心跳握手来获取所有业务处理器节点的运行状态,并把本节点上的终端地址按地址域算法分发给指定业务处理器节点。

实时处理集群采用大数据云平台通过基于分布式文件系统的大数据框架实现业务数据的实时计算、离线分析,为进一步深度挖掘提供技术支撑。

本技术方案可运用流处理技术,实现对采集负荷、电能示值数据进行实时检查、校验,并对问题数据进行标记,对异常负荷数据进行修复;针对问题数据通过功率估值、arima算法和营销发行电量进行修复,保证数据的合理性、一致性、逻辑性,通过及时发现、标注无效和失真数据,提高系统数据质量。同时,运用流处理技术实现电能量数据、告警事件的实时监测与分析。所述流处理技术即实时计算的框架,优选的采用hbase+storm,storm实时计算框架负责从消息队列中获取原始数据和报文数据入hbase分布式数据库;

本技术方案可通过分布式并行计算框架,实现海量数据准实时统计:通过大数据分布式内存并行计算框架,实现按小时对采集成功率指标、各类用户电量和负荷、线损计算、配变运行监测、移动运营商信道质量监测、终端在线率等进行统计,满足各级单位业务管控需求。准实时分析框架优选的采用hive+spark,spark离线计算框架实现将原始数据导入hive数据仓库执行海量数据的统计分析业务及数据挖掘。

本技术方案可构建灵活的数据存储策略,实现“按需存储”,满足多维度查询需求:分析不同业务数据应用需求,发挥商用数据库(oracle)、缓存数据库(redis)、分布式数据库(hbase)和数据仓库(hive)长处,设计多级存储机制,提高查询性能,提升数据应用效率。

商用数据库采用oracle12c数据库版本,结合infiniband高速网络和ssd(固态硬盘)存储搭建支撑高吞吐量高并发的oltp(联机事务处理)业务的数据存储平台,主要负责存储全部业务数据、档案数据、原始数据,为系统提供基本数据支持和计算服务。关系型数据库可细分为主生产库、灾备库、历史库、数据发布库,保障采集数据安全稳定、降低生产库的数据访问压力、提升数据发布效率,并按业务和存储时限做分库策略以降低单点数据库的访问压力。

缓存数据库(redis)是一个高性能的key-value数据库,性能极高–redis能支持超过100k+每秒的读写频率。不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。

分布式数据库hbase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。

hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类sql语句快速实现简单的mapreduce统计,十分适合数据仓库的统计分析。

云数据平台和关系型数据库之间的数据同步优选的采用sqoop数据转移工具实现。

以一电力为例,采用本技术方案后,实现的性能指标:

计算耗时指标:大数据云平台各类离线计算业务在半小时内完成(如采集质量分析、行业负荷趋势分析等典型业务);各类实时流计算业务每秒处理规模达到2万笔(如负荷特性分析、终端通信状态维护等典型业务)。

通信处理指标,采集前置集群单节点tcp链路接入量最高达40万台;采集前置集群单节点每秒分发处理报文达3万条;数据存储服务整体数据入库效率达每秒6万条。

以上图1所示的一种基于面向对象的数据分发方法是本发明的具体实施例,已经体现出本发明实质性特点和进步,可根据实际的使用需要,在本发明的启示下,对其进行形状、结构等方面的等同修改,均在本方案的保护范围之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1