一种用电信息采集系统的海量终端通信连接管理方法
技术领域
本发明涉及一种用电信息采集系统的海量终端通信连接管理方法,属于用电信息采集系统技术领域。
背景技术
在现有主站系统中,其管理流程主要是:由主站系统的前置机模块与智能终端建立Socket连接,新建与之一一对应的线程用于Socket的维护、管理、处理Socket数据收发;智能终端断开连接时,销毁与之对应的管理线程,回收系统资源。
随着智能电网建设以及电网运营管理智能化的进一步加深,大量智能终端(如主站系统服务器、配电终端、智能电表和传感器等)被部署和安装到配用电系统中。为了支撑更复杂、更智能化的配用电业务,需要对智能终端量测点进行密度和频率更高的监视和采集。另外为了满足集约化、精益化管理的要求,系统集中建设和部署是未来必然趋势。现在各网省电力公司主站系统的用户规模,基本处于百万甚至千万级用户以上,考虑到终端每15min上送一次数据,那么主站系统将经常面临着千万级通信连接的巨大压力,并且由于智能终端所处的复杂与恶劣的工作环境、网络环境,智能终端将面临断线、重连等情况,使得前置机模块重复新建和销毁线程,带来系统资源的巨大消耗。
值得注意的是,当前的主站系统采用分层的网络架构来大幅度减少前置机模块所直接面对的对象,即前置机模块所面对的是采集终端而非直接面对智能终端。但随着IP通信技术的发展,并基于网络标准化和可扩展性方面的考虑,把IP通信技术用于主站系统本地网络的趋势越来越明显,尤其是IPv6在本地网络的进一步应用,未来每个智能终端将具有独立的IP地址,主站系统和末端智能终端将进行端到端直接通信,因此前置机模块将面临更大的接入压力,前置机模块管理海量通信链路连接的能力和稳定性将严重影响整个系统的可靠性、实时性和扩展性。
发明内容
本发明的目的是提供一种用电信息采集系统的海量终端通信连接管理方法,以解决海量终端接入前置机造成前置机管理海量通信链路连接能力和稳定性差的问题。
本发明为解决上述技术问题而提供一种用电信息采集系统的海量终端通信连接管理方法,该通信连接方法包括以下步骤:
1)将智能电网终端设备与前置机模块建立Socket,将最优未注册管理线程分配给Socket,将Socket信息写入线程预登录连接栈向前置机模块进行注册和登录;
2)判断注册和登录是否在规定时限内完成,若否,则判定智能终端与前置机模块的Socket无效,剔除无效的Socket;
3)若是,则依据终端类型和管理线程的负载情况分配Socket至相应的最优管理线程,从预登陆连接栈取出Socket存入已登录连接栈处理;
4)各最优管理线程检测相应Socket是否有事件发生,并循环处理各Socket的事件,判断Socket是否正常,剔除无效的Socket,从而完成智能电网终端设备与前置机模块的连接管理。
所述最优未注册管理线程和最优管理线程的选择原则是:
A.若线程不存在,则新建管理线程管理Socket;
B.若线程已执行完毕,删除该线程并新建管理线程管理Socket;
C.若存在管理线程且该线程管理的Socket小于64,则把该线程作为最优管理线程返回;
D.若存在管理线程且该线程管理的Socket等于64,则新建同类型管理线程作为最优管理线程返回。
所述步骤2)中Socket在分配至最优未注册管理线程后,循环处理把Socket写入字符集FD_SET,调用Select(),由内核根据输入输出状态修改FD_SET的内容,由此来通知进程循环接收可读的Socket数据并处理,检查是否超出登陆时限,若智能终端登陆超时,则判定智能终端与前置机模块的Socket无效,剔除无效的Socket。
所述步骤4)中Socket在分配至各管理线程后,循环处理把Socket写入字符集FD_SET,调用Select(),由内核根据输入输出状态修改FD_SET的内容,由此来通知进程循环接收可读的Socket数据并处理,检查智能终端和前置机模块的心跳,剔除已断开的Socket
所述的最优管理线程包括应用服务管理线程、采集服务管理线程、智能终端管理线程和短信服务器管理线程。
所述无效Socket需要剔除时,无需销毁管理线程,而是从线程已登录连接栈中删除对应的Socket信息,释放Socket所占用的资源,避免了额外的新建和销毁管理线程所带来的资源消耗。
本发明的有益效果是:本发明采用智能终端的多线程分类管理,使得主站系统能够依据不同类型的智能终端,其数据类型、采集周期、报文数据格式等不同,采取相应的数据处理策略,简化主站系统数据处理过程。从未来发展的角度考虑,便于主站系统的升级和改造。
每个线程管理多个Socket,在线程内循环处理数据,相比于现有主站系统一个线程对应一个Socket,节省了系统资源消耗,从而提升前置机模块在现有主站系统下的接入能力,并且使前置机模块更适应由于IP通信技术的发展而产生的智能终端与前置机模块直接相连的情况,使得前置机模块具有海量终端接入的能力。
在复杂和恶劣的现场环境下,智能终端经常发生的断线等情况,导致Socket失效或断开,未注册服务器管理线程的引入能够有效筛除无效的Socket,提升系统资源利用率;并且在智能终端的分类管理线程内检测到无效Socket需要剔除时,无需销毁管理线程,而是从线程已登录连接栈中删除对应的Socket信息,释放Socket所占用的资源,避免了额外的新建和销毁管理线程所带来的资源消耗,提高了智能终端管理线程的管理效率。
本发明针对现有用电采集信息系统接入“瓶颈”问题,改进Socket管理方法,提升了前置机模块接入能力,并更加适应未来IPv6地址应用条件下的海量智能终端的接入。
附图说明
图1是本发明所采用的多线程管理示意图;
图2是本发明中Socket管理流程图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的说明。
为了更好地解决现如今大量智能终端以及未来IPv6地址应用下的海量智能终端接入到主站系统而带来的通信连接管理和前置机模块资源消耗等问题,本发明提出一种新的Socket管理方法;提出在前置机模块上采用多线程分类管理不同类型的终端,线程内以循环方式管理多个Socket。
本发明中的前置机模块示意图如附图1所示,其中应用服务模块和智能终端为和发明内容相关的Socket连接和数据流向,每个线程内包含两个动态数组连接栈(预登陆连接栈和已登录连接栈)。
该方法的具体实施过程如图2所示,主要包括以下步骤:
1.智能电网终端设备发起连接请求到前置机模块,与前置机模块建立Socket,将最优未注册管理线程分配给Socket,将Socket信息写入线程预登录连接栈向前置机模块进行注册和登录。
最优未注册管理线程的选择原则是:若线程不存在,则新建管理线程管理Socket;若线程已执行完毕,删除该线程并新建管理线程管理Socket;若存在管理线程且该线程管理的Socket小于64,则把该线程作为最优管理线程返回;若存在管理线程且该线程管理的Socket等于64,则新建同类型管理线程作为最优管理线程返回。
2.判断注册和登录是否在规定时限内完成,若否,则判定智能终端与前置机模块的Socket无效,剔除无效的Socket。
Socket在分配至最优未注册管理线程后,循环处理把Socket写入字符集FD_SET,调用Select(),由内核根据输入输出状态修改FD_SET的内容,由此来通知进程循环接收可读的Socket数据并处理,开始检查是否超出登陆时限,若智能终端登陆超时,则判定智能终端与前置机模块的Socket无效,剔除无效的Socket。
无效Socket需要剔除时,无需销毁管理线程,而是从线程已登录连接栈中删除对应的Socket信息,释放Socket所占用的资源,避免了额外的新建和销毁管理线程所带来的资源消耗。
3.若是,则依据终端类型和管理线程的负载情况分配Socket至相应的最优管理线程,从预登陆连接栈取出Socket存入已登录连接栈处理。
Socket由未注册管理线程管理过程中,在规定时限内完成向前置机模块的注册和登陆,并且在登陆成功后依据接收到的报文中所解析的终端类型(采集服务器、应用服务器、终端等)分配至相应的管理线程,即传递相应的Socket信息至目标管理线程的预登陆连接栈。管理线程包括应用服务管理线程、采集服务管理线程、智能终端管理线程和短信服务器管理线程。
4.各管理线程把Socket信息从预登陆连接栈取出存入已登录连接栈进行处理,检测各个Socket是否有事件(数据接收、数据发送)发生,然后循环处理各Socket的事件,判断Socket是否正常,剔除无效的Socket,从而完成智能电网终端设备与前置机模块的连接管理。
Socket在分配至各管理线程后,循环处理把Socket写入字符集FD_SET,调用Select(),由内核根据输入输出状态修改FD_SET的内容,由此来通知进程循环接收可读的Socket数据并处理。最后,检查所有智能终端和服务器的心跳,剔除已断开的Socket。
无效Socket需要剔除时,无需销毁管理线程,而是从线程已登录连接栈中删除对应的Socket信息,释放Socket所占用的资源,避免了额外的新建和销毁管理线程所带来的资源消耗。