一種用電信息采集系統(tǒng)的海量終端通信連接管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種用電信息采集系統(tǒng)的海量終端通信連接管理方法,屬于用電信息采集系統(tǒng)技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]在現(xiàn)有主站系統(tǒng)中,其管理流程主要是:由主站系統(tǒng)的前置機(jī)模塊與智能終端建立Socket連接,新建與之--對(duì)應(yīng)的線程用于Socket的維護(hù)、管理、處理Socket數(shù)據(jù)收發(fā);智能終端斷開連接時(shí),銷毀與之對(duì)應(yīng)的管理線程,回收系統(tǒng)資源。
[0003]隨著智能電網(wǎng)建設(shè)以及電網(wǎng)運(yùn)營管理智能化的進(jìn)一步加深,大量智能終端(如主站系統(tǒng)服務(wù)器、配電終端、智能電表和傳感器等)被部署和安裝到配用電系統(tǒng)中。為了支撐更復(fù)雜、更智能化的配用電業(yè)務(wù),需要對(duì)智能終端量測點(diǎn)進(jìn)行密度和頻率更高的監(jiān)視和采集。另外為了滿足集約化、精益化管理的要求,系統(tǒng)集中建設(shè)和部署是未來必然趨勢(shì)?,F(xiàn)在各網(wǎng)省電力公司主站系統(tǒng)的用戶規(guī)模,基本處于百萬甚至千萬級(jí)用戶以上,考慮到終端每15min上送一次數(shù)據(jù),那么主站系統(tǒng)將經(jīng)常面臨著千萬級(jí)通信連接的巨大壓力,并且由于智能終端所處的復(fù)雜與惡劣的工作環(huán)境、網(wǎng)絡(luò)環(huán)境,智能終端將面臨斷線、重連等情況,使得前置機(jī)模塊重復(fù)新建和銷毀線程,帶來系統(tǒng)資源的巨大消耗。
[0004]值得注意的是,當(dāng)前的主站系統(tǒng)采用分層的網(wǎng)絡(luò)架構(gòu)來大幅度減少前置機(jī)模塊所直接面對(duì)的對(duì)象,即前置機(jī)模塊所面對(duì)的是采集終端而非直接面對(duì)智能終端。但隨著IP通信技術(shù)的發(fā)展,并基于網(wǎng)絡(luò)標(biāo)準(zhǔn)化和可擴(kuò)展性方面的考慮,把IP通信技術(shù)用于主站系統(tǒng)本地網(wǎng)絡(luò)的趨勢(shì)越來越明顯,尤其是IPv6在本地網(wǎng)絡(luò)的進(jìn)一步應(yīng)用,未來每個(gè)智能終端將具有獨(dú)立的IP地址,主站系統(tǒng)和末端智能終端將進(jìn)行端到端直接通信,因此前置機(jī)模塊將面臨更大的接入壓力,前置機(jī)模塊管理海量通信鏈路連接的能力和穩(wěn)定性將嚴(yán)重影響整個(gè)系統(tǒng)的可靠性、實(shí)時(shí)性和擴(kuò)展性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種用電信息采集系統(tǒng)的海量終端通信連接管理方法,以解決海量終端接入前置機(jī)造成前置機(jī)管理海量通信鏈路連接能力和穩(wěn)定性差的問題。
[0006]本發(fā)明為解決上述技術(shù)問題而提供一種用電信息采集系統(tǒng)的海量終端通信連接管理方法,該通信連接方法包括以下步驟:
[0007]I)將智能電網(wǎng)終端設(shè)備與前置機(jī)模塊建立Socket,將最優(yōu)未注冊(cè)管理線程分配給Socket,將Socket信息寫入線程預(yù)登錄連接棧向前置機(jī)模塊進(jìn)行注冊(cè)和登錄;
[0008]2)判斷注冊(cè)和登錄是否在規(guī)定時(shí)限內(nèi)完成,若否,則判定智能終端與前置機(jī)模塊的Socket無效,剔除無效的Socket ;
[0009]3)若是,則依據(jù)終端類型和管理線程的負(fù)載情況分配Socket至相應(yīng)的最優(yōu)管理線程,從預(yù)登陸連接棧取出Socket存入已登錄連接棧處理;
[0010]4)各最優(yōu)管理線程檢測相應(yīng)Socket是否有事件發(fā)生,并循環(huán)處理各Socket的事件,判斷Socket是否正常,剔除無效的Socket,從而完成智能電網(wǎng)終端設(shè)備與前置機(jī)模塊的連接管理。
[0011]所述最優(yōu)未注冊(cè)管理線程和最優(yōu)管理線程的選擇原則是:
[0012]A.若線程不存在,則新建管理線程管理Socket ;
[0013]B.若線程已執(zhí)行完畢,刪除該線程并新建管理線程管理Socket ;
[0014]C.若存在管理線程且該線程管理的Socket小于64,則把該線程作為最優(yōu)管理線程返回;
[0015]D.若存在管理線程且該線程管理的Socket等于64,則新建同類型管理線程作為最優(yōu)管理線程返回。
[0016]所述步驟2)中Socket在分配至最優(yōu)未注冊(cè)管理線程后,循環(huán)處理把Socket寫入字符集FD_SET,調(diào)用SelectO,由內(nèi)核根據(jù)輸入輸出狀態(tài)修改FD_SET的內(nèi)容,由此來通知進(jìn)程循環(huán)接收可讀的Socket數(shù)據(jù)并處理,檢查是否超出登陸時(shí)限,若智能終端登陸超時(shí),則判定智能終端與前置機(jī)模塊的Socket無效,剔除無效的Socket。
[0017]所述步驟4)中Socket在分配至各管理線程后,循環(huán)處理把Socket寫入字符集FD_SET,調(diào)用SelectO,由內(nèi)核根據(jù)輸入輸出狀態(tài)修改FD_SET的內(nèi)容,由此來通知進(jìn)程循環(huán)接收可讀的Socket數(shù)據(jù)并處理,檢查智能終端和前置機(jī)模塊的心跳,剔除已斷開的Socket
[0018]所述的最優(yōu)管理線程包括應(yīng)用服務(wù)管理線程、采集服務(wù)管理線程、智能終端管理線程和短信服務(wù)器管理線程。
[0019]所述無效Socket需要剔除時(shí),無需銷毀管理線程,而是從線程已登錄連接棧中刪除對(duì)應(yīng)的Socket信息,釋放Socket所占用的資源,避免了額外的新建和銷毀管理線程所帶來的資源消耗。
[0020]本發(fā)明的有益效果是:本發(fā)明采用智能終端的多線程分類管理,使得主站系統(tǒng)能夠依據(jù)不同類型的智能終端,其數(shù)據(jù)類型、采集周期、報(bào)文數(shù)據(jù)格式等不同,采取相應(yīng)的數(shù)據(jù)處理策略,簡化主站系統(tǒng)數(shù)據(jù)處理過程。從未來發(fā)展的角度考慮,便于主站系統(tǒng)的升級(jí)和改造。
[0021]每個(gè)線程管理多個(gè)Socket,在線程內(nèi)循環(huán)處理數(shù)據(jù),相比于現(xiàn)有主站系統(tǒng)一個(gè)線程對(duì)應(yīng)一個(gè)Socket,節(jié)省了系統(tǒng)資源消耗,從而提升前置機(jī)模塊在現(xiàn)有主站系統(tǒng)下的接入能力,并且使前置機(jī)模塊更適應(yīng)由于IP通信技術(shù)的發(fā)展而產(chǎn)生的智能終端與前置機(jī)模塊直接相連的情況,使得前置機(jī)模塊具有海量終端接入的能力。
[0022]在復(fù)雜和惡劣的現(xiàn)場環(huán)境下,智能終端經(jīng)常發(fā)生的斷線等情況,導(dǎo)致Socket失效或斷開,未注冊(cè)服務(wù)器管理線程的引入能夠有效篩除無效的Socket,提升系統(tǒng)資源利用率;并且在智能終端的分類管理線程內(nèi)檢測到無效Socket需要剔除時(shí),無需銷毀管理線程,而是從線程已登錄連接棧中刪除對(duì)應(yīng)的Socket信息,釋放Socket所占用的資源,避免了額外的新建和銷毀管理線程所帶來的資源消耗,提高了智能終端管理線程的管理效率。
[0023]本發(fā)明針對(duì)現(xiàn)有用電采集信息系統(tǒng)接入“瓶頸”問題,改進(jìn)Socket管理方法,提升了前置機(jī)模塊接入能力,并更加適應(yīng)未來IPv6地址應(yīng)用條件下的海量智能終端的接入。
【附圖說明】
[0024]圖1是本發(fā)明所采用的多線程管理示意圖;
[0025]圖2是本發(fā)明中Socket管理流程圖。
【具體實(shí)施方式】
[0026]下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步的說明。
[0027]為了更好地解決現(xiàn)如今大量智能終端以及未來IPv6地址應(yīng)用下的海量智能終端接入到主站系統(tǒng)而帶來的通信連接管理和前置機(jī)模塊資源消耗等問題,本發(fā)明提出一種新的Socket管理方法;提出在前置機(jī)模塊上采用多線程分類管理不同類型的終端,線程內(nèi)以循環(huán)方式管理多個(gè)Socket。
[0028]本發(fā)明中的前置機(jī)模塊示意圖如附圖1所示,其中應(yīng)用服務(wù)模塊和智能終端為和
【發(fā)明內(nèi)容】
相關(guān)的Socket連接和數(shù)據(jù)流向,每個(gè)線程內(nèi)包含兩個(gè)動(dòng)態(tài)數(shù)組連接棧(預(yù)登陸連接棧和已登錄連接棧)