一种用电信息采集前置数据处理的方法及系统的制作方法

文档序号:7815250阅读:531来源:国知局
一种用电信息采集前置数据处理的方法及系统的制作方法
【专利摘要】本发明涉及一种用电信息采集前置数据处理的方法及系统,所述方法包括:(1)用epoll_create()函数创建文件描述,并设定管理的socket描述符数目;(2)创建与epoll关联的接收线程;(3)创建侦听socket描述符ListenSock,并设定为非阻塞模式,调用Listen()函数在套接字上侦听有无新的连接请求;(4)如有新的连接请求,调用accept()函数,将客户端socket描述符添加到epoll_data联合体,并设定该描述符为非阻塞,在epoll_event结构中设置要处理的事件类型为读和写;(5)如socket描述符上有数据可读,则将该socket描述符加入可读队列,并通知接收线程读入数据,将接收到的数据放入到接收数据的链表中,将反馈的数据包放入到发送数据链表中,等待发送线程发送。
【专利说明】一种用电信息采集前置数据处理的方法及系统

【技术领域】
[0001]本发明涉及一种数据处理方法及系统,具体讲涉及一种用电信息采集前置数据处理的方法及系统。

【背景技术】
[0002]人们将(smart power grids)电网的智能化称为“电网2.0”,并将其概括为以集成的、高速双向通信网络为基础,应用传感和测量技术、设备技术、控制方法和决策支持系统实现电网的可靠、安全、经济、高效、环境友好和使用安全的目的,主要特征包括自愈、激励和包括用户、抵御攻击、提供满足用户21世纪电能的需求质量、容许接入不同发电形式、启动电力市场以及资产的高效优化运行。
[0003]随着电网运营管理智能化的进一步发展,配用电系统部署和安装了大量智能设备(如配电终端、智能电表和传感器等)。为了支撑更复杂、更智能化的配用电业务,需要对智能设备量测点进行密度和频率更高的监视和采集。为了满足集约化、精益化管理的要求,系统集中建设和部署是未来必然趋势。各网省电力公司用电信息采集系统的用户规模,一般基本处于百万甚至千万级以上,鉴于终端每15min上送一次数据,这样若本次任务未在15min内处理完一个周期内的大量数据,就会导致队列堆积和数据后续处理的延迟,因此省级集中的用电信息采集前置机系统将面临着千万级数据潮涌的巨大压力。
[0004]由于现有的用电信息采集架构为一个分层的网络框架,这样前置机系统在通信上接入的是采集终端而非智能电表,所以前置机系统需直接接入的对象数量会大大减少。但随着IP通信技术的发展,并基于网络标准化和可扩展性方面的考虑,把IP通信技术用于用电信息采集系统本地网络(以下简称本地网络)的趋势日益突出,尤其是IPv6本地网络的进一步应用,未来每个智能电表和传感器将具有独立的IP地址,主站系统和末端智能设备将端到端直接通信,因此前置机系统的前置服务器面临的压力将更大,而大量连接通信链路和处理数据无疑将严重影响整个系统的可靠性、实时性和扩展性。


【发明内容】

[0005]针对现有技术的不足,本发明提供一种用电信息采集前置数据处理的方法及系统,为了更好地解决具有IP地址的海量智能设备接入到主站,而带来的一系列高并发、潮涌式堵塞等问题,本发明提出一种新的网络负载均衡算法处理网络连接问题;提出在前置服务器上搭建EPOLL模型对交互数据进行处理;提出增加前置路由模块,负责前置机和应用服务的数据处理。本发明针对基于IP端点的智能电表等海量计量终端数据通讯时的接入“瓶颈”问题,改进采集系统的框架模块,并提出一种用电信息海量数据接入的方法,解决了超大规模连接时的高并发和拥堵问题。
[0006]本发明的目的是采用下述技术方案实现的:
[0007]—种用电信息采集前置数据处理的方法,其改进之处在于,所述方法包括
[0008](I)用epoll_create O函数创建文件描述,并设定管理的socket描述符数目;
[0009](2)创建与印oil关联的接收线程;
[0010](3)创建侦听socket描述符ListenSock,并设定为非阻塞模式,调用Listen O函数在套接字上侦听有无新的连接请求;
[0011](4)如有新的连接请求,调用acceptO函数,将客户端socket描述符添加到epoll_data联合体,并设定该描述符为非阻塞,在epoll_event结构中设置要处理的事件类型为读和写;
[0012](5)如socket描述符上有数据可读,则将该socket描述符加入可读队列,并通知接收线程读入数据,将接收到的数据放入到接收数据的链表中,将反馈的数据包放入到发送数据链表中,等待发送线程发送。
[0013]优选的,所述步骤(2)包括创建与印oil关联的接收线程,应用程序可以创建接收线程处理印oil上的读通知事件,线程的数量依赖于程序的具体需要和设备环境。
[0014]优选的,所述步骤(3)包括创建侦听socket描述符ListenSock ;将该描述符设定为非阻塞模式,调用ListenO函数在套接字上侦听有无新的连接请求,在epoll_event结构中将要处理的事件类型设置为EP0LLIN,工作方式为印oll_ET,使用印oll_ctl O注册事件,启动网络监视线程。
[0015]优选的,所述步骤(4)包括epoll事件表明有新的连接请求,则调用accept O函数,将客户端socket描述符添加到epoll_data联合体,设定该描述符为非阻塞,在epoll_event结构中设置要处理的事件类型为读和写,工作方式为epoll_ET。
[0016]优选的,所述步骤(5)包括如印oil事件表明socket描述符上有数据可读,则将该socket描述符加入可读队列,并通知接收线程读入数据,将接收到的数据放入到接收数据的链表中,经逻辑处理,将反馈的数据包放入到发送数据链表中,等待由发送线程发送。
[0017]进一步地,如接收数据的链表长度到达一定阀值,则创建本地文件,对数据接收链表溢出数据进行本地缓存。
[0018]进一步地,所述网络监视线程启动循环中,epoll_wait()等待epoll事件发生。
[0019]本发明基于另一目的提供的一种用电信息采集前置数据处理系统,其改进之处在于,所述系统包括依次连接的应用服务模块、前置机路由模块、前置机集群、网络负载均衡器和用电终端。
[0020]优选的,所述前置机路由模块分别与应用服务器模块和前置机集群连接,以将前置机解析数据发送相应的应用服务模块中;保存终端网络信息和前置机服务器网络信息的关联结构图,响应前置机的关联修改请求。
[0021]优选的,所述前置机集群:包括多台相互独立、通过高速网络互联的计算机,并以单一系统模式进行管理。
[0022]优选的,所述网络负载均衡器设定前置服务器上可连接的客户端个数,将连接请求依次循环地连接于每个允许连接的服务器上。
[0023]进一步地,连接数达到设定的阈值时,根据各个前置服务器的实时负载情况进行适当的分配;由位于前置服务器的性能监测软件经过集群间的“心跳”专用线传输前置服务器的实时负载。
[0024]进一步地,所述前置路由模块保存前置机携带终端IP信息的和本机IP地址的注册关联表,在下行数据传输时,前置路由模块根据终端信息,在注册关联表中找到对应的前置服务器,将下行数据传输到该前置服务器上进行报文组装和下发;发生socket迁移时,前置路由接受上行的更改命令对注册关联表进行修改。
[0025]与现有技术比,本发明的有益效果为:
[0026]本发明利用现有的集群服务器技术,修改针对网络连接的网络负载均衡算法对并发连接进行合适的分流,并在网络负载均衡器上增加客户端连接的迁移算法实现前置机服务器的故障迁移和柔性扩容;同时在方案中增加前置机路由模块完成上行报文准确的下发到用电终端,分担和缓解前置机服务器负载;并且在前置机服务器搭建EPOLL模块进行数据流处理。本发明解决了基于IP端点的智能电表等计量终端海量连接时的高并发和拥堵的“瓶颈”问题。

【专利附图】

【附图说明】
[0027]图1为本发明提供的一种用电信息采集前置数据处理系统结构图。
[0028]图2为本发明提供的客户端TCP连接到前置机分配图。
[0029]图3为本发明提供的客户端SOCKET建立后的数据连接图。
[0030]图4为本发明提供的一种用电信息采集前置数据处理的方法流程图。
[0031]图5为本发明提供的前置路由模块数据流向图。

【具体实施方式】
[0032]下面结合附图对本发明的【具体实施方式】作进一步的详细说明。
[0033]本发明中涉及公知函数解释如下:
[0034]epoll O:在Iinux的网络编程中,相比于select机制所提出的新方法;
[0035]epoll_create O:用来创建一个epoll的句柄,size用来告诉内核监听数目的大小;
[0036]socket描述符:即套接字描述符;
[0037]ListenSock:即侦听套接字;
[0038]ListenO:即侦听方法;
[0039]acceptO:即接受新的连接;
[0040]epoll_data:即 epoll 数据;
[0041]epoll_event:即 epoll 事件;
[0042]EP0LLIN:表示对应的文件描述符可以读(包括对端SOCKET正常关闭);
[0043]EP0LL_ET:将EPOLL设为边缘触发(Edge Triggered)模式,这是相对于水平触发(Level Triggered)来说的;
[0044]epoll_ctl():该函数用于控制某个印oil文件描述符上的事件,可以注册事件,修改事件,删除事件;
[0045]epoll_wait ():等待事件的产生,类似于select O调用。
[0046]本发明中的系统结构如附图1所示,其中应用服务模块和用电终端为和
【发明内容】
相关的数据来源和数据流向,
【发明内容】
包括:
[0047](I)前置机路由模块:连接应用服务器模块和前置机集群,主要作用是把前置机的解析数据发送相应的应用服务模块中;同时根据关联关系,把下行数据准确的发送。在本模块中保存终端网络信息和前置机服务器网络信息的关联结构图,并响应前置机的关联修改请求。
[0048]前置路由模块保存前置机携带终端IP信息的和本机IP地址的注册关联表,在下行数据传输时,前置路由模块根据终端信息,在注册关联表中找到对应的前置服务器,并把下行数据传输到该前置服务器上进行报文组装和下发。当发生socket迁移时,前置路由接受上行的更改命令对注册关联表进行修改。
[0049](2)前置机集群:是N台相互独立、通过高速网络互联的计算机,它们构成一个组,并以单一系统模式加以管理,可以提高服务器性能、降低成本、提高可扩展性、增强可靠性。本发明中采用的是负载均衡集群。
[0050](3)网络负载均衡器:网络负载均衡器对用电客户端连接按现有前置机集群的处理能力进行分流,负载均衡策略按照“阈值轮循+动态负载反馈”的方法,扩展网络连接吞吐量,加强前置机数据处理能力。在本方案中,网络负载均衡器中运行状态机和前置机服务器的状态机进行呼应,处理故障时socket的迁移及扩容时前置机服务器的负载分流。
[0051]网络负载均衡器的实现算法,主要针对客户端连接分流均衡算法:先设定前置服务器上可连接的客户端个数,顺序循环将连接请求依次顺序循环地连接每个允许连接的服务器上;当连接数达到设定的阈值时,根据各个前置服务器的实时负载情况进行适当的分配。前置服务器的实时负载由位于前置服务器的性能监测软件经过集群间的“心跳”专用线传输。另外采用一定的算法处理故障迁移和扩容时的负载均衡。
[0052]基于IP的终端设备发起连接请求到网络负载均衡器,由网络负载均衡器根据“阈值轮循+动态负载反馈”算法对所有的连接请求进行分发到前置集群中的各个前置服务器上。如图2所示,分发的原则是依据前置服务器的连接数据和实时负载情况,并由各个前置服务器和终端建立通讯链路,在通讯连接建立后,具体的数据传输如图3所示,直接在前置服务器和终端之间交互。此时,网络负载均衡器保存各个终端的连接信息,并只对链路的连接情况进行监测。
[0053]前置服务器每建立一个客户端请求连接,则要在前置机路由模块上注册相应的连接信息,如图5所示,假如终端IP地址为192.168.1.202,经网络负载均衡器分配到IP地址为192.168.1.104的前置服务器上,在连接请求建立后,前置服务器则把连接信息注册到前置路由模块上,即在前置路由模块上新增IP地址为192.168.1.104和192.168.1.202的关系对。当有上行数据传输时,经前置服务器解析处理后直接上送到应用服务模块,当有下行数据时传输,由应用服务模块把待发送的数据和终端信息发送到前置机路由模块,前置机路由模块根据终端信息查找到和该终端通讯的前置服务器,并经由查找到的前置服务器对数据组装格式化后下发到所要发送到的终端。
[0054]本发明一种用电信息采集前置数据处理的方法具体为:
[0055]在前置机对数据流进行处理时采用印oil模型,epoll模型主要负责对大量并发用户的请求进行及时处理,完成服务器与客户端的数据交互。其具体的实现步骤如下:
[0056](I)使用epoll_create O函数创建文件描述,设定将可管理的最大socket描述符数目。
[0057](2)创建与印oil关联的接收线程,应用程序可以创建多个接收线程来处理epoll上的读通知事件,线程的数量依赖于程序的具体需要和设备环境。
[0058](3)创建一个侦听socket描述符ListenSock ;将该描述符设定为非阻塞模式,调用ListenO函数在套接字上侦听有无新的连接请求,在epoll_event结构中设置要处理的事件类型EP0LLIN,工作方式为印oll_ET,以提高工作效率,同时使用印oll_ctl()注册事件,最后启动网络监视线程。
[0059](4)网络监视线程启动循环,epoll_wait O等待epoll事件发生。
[0060](5)如果epoll事件表明有新的连接请求,则调用acceptO函数,将客户端socket描述符添加到epoll_data联合体,同时设定该描述符为非阻塞,并在epoll_event结构中设置要处理的事件类型为读和写,工作方式为印oll_ET。
[0061](6)如果epoll事件表明socket描述符上有数据可读,则将该socket描述符加入可读队列,通知接收线程读入数据,并将接收到的数据放入到接收数据的链表中,经逻辑处理后,将反馈的数据包放入到发送数据链表中,等待由发送线程发送。
[0062](7)如果接收数据的链表长度到达一定阀值,则创建本地文件,对数据接收链表溢出数据进行本地缓存。
[0063]实施例
[0064]一种用电信息采集前置数据处理的方法具体步骤如下:
[0065](I)在前置服务器上建立一定数量的线程,并由线程池统一管理;
[0066](2)当客户端进行连接时,由主线程对此连接建立通讯并把该客户端加入到epoll监视事件中;
[0067](3)当epoll监测到某连接有可读事件时则通知接收线程进行数据读取,并判断数据接收链表长度是否到达最大值,如果没有则把读到的数据插入到链表中;否则把读到的数据以本地文件的形式进行缓存,并等待文件操作线程处理本地文件;
[0068](4)数据处理线程不断的从数据接收链表中取出数据进行解析、处理;当有下行数据命令时,数据处理线程直接把数据保存到数据发送链表中等待处理;
[0069](5)数据发送线程检测到待发送链表中有数据时,从中取出数据经由数据处理线程组装格式化处理后下发到前置路由模块进行分发。
[0070]综上所述,本发明针对基于IP端点的智能电表等海量计量终端数据通讯时的接入“瓶颈”问题,改进采集系统的框架模块,并提出一种用电信息海量数据接入的方法,解决了超大规模连接时的高并发和拥堵问题。
[0071]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的【具体实施方式】进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
【权利要求】
1.一种用电信息采集前置数据处理的方法,其特征在于,所述方法包括 (1)用epoll_createO函数创建文件描述,并设定管理的socket描述符数目; (2)创建与印oil关联的接收线程; (3)创建侦听socket描述符ListenSock,并设定为非阻塞模式,调用ListenO函数在套接字上侦听有无新的连接请求; (4)如有新的连接请求,调用acceptO函数,将客户端socket描述符添加到epoll_data联合体,并设定该描述符为非阻塞,在ep0ll_eVent结构中设置要处理的事件类型为读和与; (5)如socket描述符上有数据可读,则将该socket描述符加入可读队列,并通知接收线程读入数据,将接收到的数据放入到接收数据的链表中,将反馈的数据包放入到发送数据链表中,等待发送线程发送。
2.如权利要求1所述的一种用电信息采集前置数据处理的方法,其特征在于,所述步骤(2)包括创建与印oil关联的接收线程,应用程序可以创建接收线程处理印oil上的读通知事件,线程的数量依赖于程序的具体需要和设备环境。
3.如权利要求1所述的一种用电信息采集前置数据处理的方法,其特征在于,所述步骤(3)包括创建侦听socket描述符ListenSock ;将该描述符设定为非阻塞模式,调用Listen O函数在套接字上侦听有无新的连接请求,在epoll_event结构中将要处理的事件类型设置为EP0LLIN,工作方式为印oll_ET,使用印oll_ctl()注册事件,启动网络监视线程。
4.如权利要求1所述的一种用电信息采集前置数据处理的方法,其特征在于,所述步骤(4)包括epoll事件表明有新的连接请求,则调用accept O函数,将客户端socket描述符添加到epoll_data联合体,设定该描述符为非阻塞,在epoll_event结构中设置要处理的事件类型为读和写,工作方式为epoll_ET。
5.如权利要求1所述的一种用电信息采集前置数据处理的方法,其特征在于,所述步骤(5)包括如epoll事件表明socket描述符上有数据可读,则将该socket描述符加入可读队列,并通知接收线程读入数据,将接收到的数据放入到接收数据的链表中,经逻辑处理,将反馈的数据包放入到发送数据链表中,等待由发送线程发送。
6.如权利要求5所述的一种用电信息采集前置数据处理的方法,其特征在于,如接收数据的链表长度到达一定阀值,则创建本地文件,对数据接收链表溢出数据进行本地缓存。
7.如权利要求3所述的一种用电信息采集前置数据处理的方法,其特征在于,所述网络监视线程启动循环中,epoll_wait O等待epoll事件发生。
8.一种适用于权利要求1?7任一项的方法的用电信息采集前置数据处理系统,其特征在于,所述系统包括依次连接的应用服务模块、前置机路由模块、前置机集群、网络负载均衡器和用电终端。
9.如权利要求8所述的一种用电信息采集前置数据处理系统,其特征在于,所述前置机路由模块分别与应用服务器模块和前置机集群连接,以将前置机解析数据发送相应的应用服务模块中;保存终端网络信息和前置机服务器网络信息的关联结构图,响应前置机的关联修改请求。
10.如权利要求8所述的一种用电信息采集前置数据处理系统,其特征在于,所述前置机集群:包括多台相互独立、通过高速网络互联的计算机,并以单一系统模式进行管理。
11.如权利要求8所述的一种用电信息采集前置数据处理系统,其特征在于,所述网络负载均衡器设定前置服务器上可连接的客户端个数,将连接请求依次循环地连接于每个允许连接的服务器上。
12.如权利要求11所述的一种用电信息采集前置数据处理系统,其特征在于,连接数达到设定的阈值时,根据各个前置服务器的实时负载情况进行适当的分配;由位于前置服务器的性能监测软件经过集群间的“心跳”专用线传输前置服务器的实时负载。
13.如权利要求9所述的一种用电信息采集前置系统,其特征在于,所述前置路由模块保存前置机携带终端IP信息的和本机IP地址的注册关联表,在下行数据传输时,前置路由模块根据终端信息,在注册关联表中找到对应的前置服务器,将下行数据传输到该前置服务器上进行报文组装和下发;发生socket迁移时,前置路由接受上行的更改命令对注册关联表进行修改。
【文档编号】H04L29/06GK104243481SQ201410494447
【公开日】2014年12月24日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】栾文鹏, 周逢权, 徐大青, 张展国 申请人:国家电网公司, 中国电力科学研究院, 许继集团有限公司, 国网浙江省电力公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1