亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        新能源監(jiān)控系統(tǒng)海量終端接入技術(shù)研究

        2018-11-21 08:37:20馮利虎易永輝陳海龍張玉寶
        自動(dòng)化儀表 2018年11期
        關(guān)鍵詞:均衡器海量線程

        馮利虎,易永輝,時(shí) 誼,陳海龍,張玉寶,張 倩,王 剛

        (許繼集團(tuán)有限公司,河南 許昌 461000)

        0 引言

        隨著傳統(tǒng)石化能源危機(jī)和環(huán)境污染兩大問(wèn)題日益嚴(yán)重,大力發(fā)展清潔、可再生新能源已成為世界各國(guó)共識(shí)。風(fēng)電、光伏作為新型綠色無(wú)污染的能源也越來(lái)越受到人們的青睞,裝機(jī)規(guī)模及占比在不斷增大[1-4]。

        新能源電站建設(shè)規(guī)模不斷擴(kuò)大,特別是大型光伏、分布式光伏電站加速發(fā)展,接入新能源監(jiān)控/集控系統(tǒng)的數(shù)據(jù)量及終端數(shù)量也在不斷增多[5]。如100 MW大型地面光伏電站考慮到光伏區(qū)匯流箱設(shè)備的通信接入,全站設(shè)備數(shù)量將超過(guò)2 000臺(tái);同樣監(jiān)控?cái)?shù)百個(gè)分布式光伏站點(diǎn)的遠(yuǎn)程監(jiān)控/集控中心,終端設(shè)備的數(shù)量也數(shù)以千計(jì)。常規(guī)監(jiān)控系統(tǒng)的容量及架構(gòu)設(shè)計(jì)已無(wú)法滿足新能源領(lǐng)域大量終端的接入需求。

        本文介紹了監(jiān)控系統(tǒng)海量終端接入的關(guān)鍵技術(shù),并給出了具體的實(shí)現(xiàn)方案。

        1 海量終端接入關(guān)鍵技術(shù)

        針對(duì)新能源監(jiān)控系統(tǒng)海量終端接入的需求,必須解決以下兩個(gè)關(guān)鍵問(wèn)題。

        ①海量終端接入系統(tǒng)的網(wǎng)絡(luò)負(fù)載均衡策略[6-8]。

        為了更好地解決因海量終端接入而帶來(lái)的一系列高并發(fā)、潮涌式堵塞等問(wèn)題,需要一種新的網(wǎng)絡(luò)負(fù)載均衡算法處理網(wǎng)絡(luò)連接問(wèn)題。在前置服務(wù)器上搭建EPOLL模型,對(duì)交互數(shù)據(jù)進(jìn)行處理[9-10];增加前置機(jī)調(diào)度模塊,負(fù)責(zé)前置機(jī)和后臺(tái)應(yīng)用的數(shù)據(jù)處理。

        ②海量終端通信連接管理方法研究。

        為了更好地解決目前大量終端接入而帶來(lái)的通信連接管理和前置機(jī)模塊資源消耗等問(wèn)題,研究采用一種新的Socket管理方法。在通信管理機(jī)模塊上采用多線程管理終端以及業(yè)務(wù)服務(wù)器連接,線程內(nèi)以循環(huán)方式管理多個(gè)Socket。

        2 實(shí)現(xiàn)方案

        2.1 海量終端接入系統(tǒng)的網(wǎng)絡(luò)負(fù)載均衡策略

        利用現(xiàn)有的集群服務(wù)器技術(shù),修改針對(duì)網(wǎng)絡(luò)連接的網(wǎng)絡(luò)負(fù)載均衡算法,對(duì)并發(fā)連接進(jìn)行合適的分流,在網(wǎng)絡(luò)負(fù)載均衡器上增加客戶端連接的遷移算法,實(shí)現(xiàn)前置機(jī)服務(wù)器的故障遷移和柔性擴(kuò)容;增加前置機(jī)調(diào)度模塊完成報(bào)文準(zhǔn)確下發(fā)到終端,分擔(dān)和緩解前置機(jī)服務(wù)器負(fù)載;在前置機(jī)服務(wù)器搭建EPOLL模塊進(jìn)行數(shù)據(jù)流處理。該方案可解決海量終端連接時(shí)的高并發(fā)和擁堵的“瓶頸”。

        ①前置機(jī)調(diào)度模塊。該模塊用于連接后臺(tái)應(yīng)用模塊和前置機(jī)集群,主要作用是把前置機(jī)的解析數(shù)據(jù)發(fā)送到相應(yīng)的后臺(tái)應(yīng)用模塊中;同時(shí)根據(jù)關(guān)聯(lián)關(guān)系,把下行數(shù)據(jù)準(zhǔn)確發(fā)送至終端。在本模塊中,保存終端網(wǎng)絡(luò)信息和前置機(jī)服務(wù)器網(wǎng)絡(luò)信息的關(guān)聯(lián)結(jié)構(gòu)圖,并響應(yīng)前置機(jī)的關(guān)聯(lián)修改請(qǐng)求。

        ②前置機(jī)集群。它由N臺(tái)相互獨(dú)立、通過(guò)高速網(wǎng)絡(luò)互聯(lián)的計(jì)算機(jī)構(gòu)成一個(gè)組,并對(duì)單一系統(tǒng)模式加以管理,可以提高服務(wù)器性能、降低成本、提高可擴(kuò)展性、增強(qiáng)可靠性。本方案中采用的是負(fù)載均衡集群。

        ③網(wǎng)絡(luò)負(fù)載均衡器。網(wǎng)絡(luò)負(fù)載均衡器對(duì)終端連接按現(xiàn)有前置機(jī)集群的處理能力進(jìn)行分流,負(fù)載均衡策略按照“閾值輪循+動(dòng)態(tài)負(fù)載反饋”的方法,擴(kuò)展網(wǎng)絡(luò)連接吞吐量,加強(qiáng)前置機(jī)數(shù)據(jù)處理能力。在本方案中,網(wǎng)絡(luò)負(fù)載均衡器中運(yùn)行狀態(tài)機(jī)和前置機(jī)服務(wù)器的狀態(tài)機(jī)進(jìn)行呼應(yīng);處理故障時(shí),Socket的遷移及擴(kuò)容時(shí)前置機(jī)服務(wù)器的負(fù)載分流。

        終端數(shù)據(jù)連接如圖1所示。

        圖1 終端數(shù)據(jù)連接圖

        本方案涉及以下三個(gè)關(guān)鍵點(diǎn)。

        其一,網(wǎng)絡(luò)負(fù)載均衡器的實(shí)現(xiàn)算法。針對(duì)客戶端連接分流均衡算法,先設(shè)定前置服務(wù)器上可連接的客戶端個(gè)數(shù),將連接請(qǐng)求依次順序循環(huán)地連接到每個(gè)允許連接的服務(wù)器上;當(dāng)連接數(shù)達(dá)到設(shè)定的閾值時(shí),根據(jù)各個(gè)前置服務(wù)器的實(shí)時(shí)負(fù)載情況進(jìn)行適當(dāng)?shù)姆峙洹G爸梅?wù)器的實(shí)時(shí)負(fù)載由位于前置服務(wù)器的性能監(jiān)測(cè)軟件經(jīng)過(guò)集群間的“心跳”專用線傳輸。另外,采用一定的算法處理故障遷移和擴(kuò)容時(shí)的負(fù)載均衡。

        其二,前置服務(wù)器的數(shù)據(jù)處理算法。在前置機(jī)對(duì)數(shù)據(jù)流進(jìn)行處理時(shí),采用EPOLL模型。EPOLL模型主要負(fù)責(zé)對(duì)大量并發(fā)用戶的請(qǐng)求進(jìn)行及時(shí)處理,完成服務(wù)器與客戶端的數(shù)據(jù)交互。其具體的實(shí)現(xiàn)步驟如下。

        ①使用EPOLL_create()函數(shù)創(chuàng)建文件描述,設(shè)定可管理的最大Socket描述符數(shù)目。

        ②創(chuàng)建與EPOLL關(guān)聯(lián)的接收線程,應(yīng)用程序可以創(chuàng)建多個(gè)接收線程來(lái)處理Epoll上的讀通知事件,線程的數(shù)量依賴于程序的具體需要和設(shè)備環(huán)境。

        ③創(chuàng)建一個(gè)偵聽(tīng)Socket描述符ListenSock;將該描述符設(shè)定為非阻塞模式,調(diào)用Listen()函數(shù)在套接字上偵聽(tīng)有無(wú)新的連接請(qǐng)求。在 epoll_event結(jié)構(gòu)中設(shè)置要處理的事件類型EPOLLIN,工作方式為epoll_ET,以提高工作效率,同時(shí)使用epoll_ctl()注冊(cè)事件,最后啟動(dòng)網(wǎng)絡(luò)監(jiān)視線程。

        ④創(chuàng)建本地文件,對(duì)數(shù)據(jù)接收鏈表溢出數(shù)據(jù)進(jìn)行本地緩存。

        ⑤網(wǎng)絡(luò)監(jiān)視線程啟動(dòng)循環(huán),epoll_wait()等待epoll事件發(fā)生。

        ⑥如果Epoll事件表明有新的連接請(qǐng)求,則調(diào)用accept()函數(shù),將客戶端Socket描述符添加到epoll_data聯(lián)合體,同時(shí)設(shè)定該描述符為非阻塞,并在epoll_event結(jié)構(gòu)中設(shè)置要處理的事件類型為讀和寫,工作方式為epoll_ET。

        ⑦如果Epoll事件表明Socket描述符上有數(shù)據(jù)可讀,則將該Socket描述符加入可讀隊(duì)列,通知接收線程讀入數(shù)據(jù),并將接收到的數(shù)據(jù)放入到接收數(shù)據(jù)的鏈表中。經(jīng)邏輯處理后,將反饋的數(shù)據(jù)包放入到發(fā)送數(shù)據(jù)鏈表中,等待由發(fā)送線程發(fā)送。

        其三,前置機(jī)調(diào)度模塊。前置機(jī)調(diào)度模塊保存前置機(jī)攜帶終端IP信息和本機(jī)IP地址的注冊(cè)關(guān)聯(lián)表,在下行數(shù)據(jù)傳輸時(shí),前置機(jī)調(diào)度模塊根據(jù)終端信息,在注冊(cè)關(guān)聯(lián)表中找到對(duì)應(yīng)的前置服務(wù)器,并把下行數(shù)據(jù)傳輸?shù)皆撉爸梅?wù)器上進(jìn)行報(bào)文組裝和下發(fā)。當(dāng)發(fā)生Socket遷移時(shí),前置機(jī)調(diào)度模塊接收上行的更改命令對(duì)注冊(cè)關(guān)聯(lián)表進(jìn)行修改。 基于IP的終端設(shè)備發(fā)起連接請(qǐng)求到網(wǎng)絡(luò)負(fù)載均衡器,由網(wǎng)絡(luò)負(fù)載均衡器根據(jù)“閾值輪循+動(dòng)態(tài)負(fù)載反饋”算法將所有的連接請(qǐng)求分發(fā)到前置集群中的各個(gè)前置服務(wù)器,客戶端TCP連接至前置機(jī)分配如圖2所示。

        圖2 客戶端TCP連接至前置機(jī)分配圖

        分發(fā)的原則是依據(jù)前置服務(wù)器的連接數(shù)據(jù)和實(shí)時(shí)負(fù)載情況,并由各個(gè)前置服務(wù)器和終端建立通信鏈路。Socket客戶端建立后的數(shù)據(jù)流如圖3所示。此時(shí),網(wǎng)絡(luò)負(fù)載均衡器保存各個(gè)終端的連接信息,并只對(duì)鏈路的連接情況進(jìn)行監(jiān)測(cè)。

        前置服務(wù)器每建立一個(gè)客戶端請(qǐng)求連接,則要在前置機(jī)調(diào)度模塊上注冊(cè)相應(yīng)的連接信息。假如終端IP地址為10.100.100.202,經(jīng)網(wǎng)絡(luò)負(fù)載均衡器分配到IP地址為10.100.100.104的前置服務(wù)器上。在連接請(qǐng)求建立后,前置服務(wù)器把連接信息注冊(cè)到前置機(jī)調(diào)度模塊上,即在前置機(jī)調(diào)度模塊上新增IP地址為10.100.100.104和10.100.100.202的關(guān)系對(duì)。當(dāng)有上行數(shù)據(jù)傳輸時(shí),經(jīng)前置服務(wù)器解析處理后直接上傳到后臺(tái)應(yīng)用模塊;當(dāng)有下行數(shù)據(jù)時(shí)傳輸,由后臺(tái)應(yīng)用模塊把待發(fā)送的數(shù)據(jù)和終端信息發(fā)送到前置機(jī)調(diào)度模塊。前置機(jī)調(diào)度模塊根據(jù)終端信息查找到該終端通信的前置服務(wù)器,并經(jīng)由查找到的前置服務(wù)器對(duì)數(shù)據(jù)組裝格式化后下發(fā)到相應(yīng)終端。

        圖3 客戶端SOCKET建立后的數(shù)據(jù)流向圖

        前置服務(wù)器處理連接和數(shù)據(jù)流的具體步驟如下。

        ①在前置服務(wù)器上建立一定數(shù)量的線程,并由線程池統(tǒng)一管理。

        ②當(dāng)客戶端進(jìn)行連接時(shí),由主線程對(duì)此連接建立通信并把該客戶端加入到EPOLL監(jiān)視事件中。

        ③當(dāng)EPOLL監(jiān)測(cè)到某連接有可讀事件時(shí),通知接收線程進(jìn)行數(shù)據(jù)讀取,并判斷數(shù)據(jù)接收鏈表長(zhǎng)度是否到達(dá)最大值。如果未達(dá)到最大值,把讀到的數(shù)據(jù)插入到鏈表中;否則把讀到的數(shù)據(jù)以本地文件的形式進(jìn)行緩存,并等待文件操作線程處理本地文件。

        ④數(shù)據(jù)處理線程不斷地從數(shù)據(jù)接收鏈表中取出數(shù)據(jù)進(jìn)行解析、處理;當(dāng)有下行數(shù)據(jù)命令時(shí),數(shù)據(jù)處理線程直接把數(shù)據(jù)保存到數(shù)據(jù)發(fā)送鏈表中等待處理。

        ⑤數(shù)據(jù)發(fā)送線程檢測(cè)到待發(fā)送鏈表中有數(shù)據(jù)時(shí),從中取出數(shù)據(jù),經(jīng)由數(shù)據(jù)處理線程組裝格式化處理后,下發(fā)到前置機(jī)調(diào)度模塊進(jìn)行分發(fā)。

        本方案針對(duì)基于IP端點(diǎn)的海量終端數(shù)據(jù)通信時(shí)的接入“瓶頸”,改進(jìn)采集系統(tǒng)的框架模塊,解決了大規(guī)模連接時(shí)的高并發(fā)和擁堵問(wèn)題。

        2.2 海量終端通信連接管理方法

        目前,終端與主站系統(tǒng)的通信建立機(jī)制一般為:主站系統(tǒng)的前置機(jī)模塊與終端建立Socket連接,新建與之對(duì)應(yīng)的線程用于Socket的維護(hù)、管理,并處理Socket數(shù)據(jù)收發(fā);終端斷開(kāi)連接時(shí),銷毀與之對(duì)應(yīng)的管理線程,回收系統(tǒng)資源。在本方案中,由于每個(gè)終端具有獨(dú)立的IP地址,應(yīng)用服務(wù)平臺(tái)和終端將進(jìn)行端到端直接通信,因此前置機(jī)模塊將面臨更大的接入壓力,前置機(jī)模塊管理海量通信鏈路連接的能力和穩(wěn)定性,將嚴(yán)重影響整個(gè)系統(tǒng)的可靠性、實(shí)時(shí)性和擴(kuò)展性。

        為解決該問(wèn)題,本文采用如下方案。

        ①終端的多線程分類管理。

        通信管理機(jī)每個(gè)線程內(nèi)包含兩個(gè)動(dòng)態(tài)數(shù)組連界棧(預(yù)登陸連接棧和已登錄連接棧)。前置機(jī)模塊采用多線程方式來(lái)分類管理所接入的不同類型終端以及其他業(yè)務(wù)服務(wù)器的Socket連接。每個(gè)管理線程可以管理多個(gè)Socket連接。

        ②管理線程內(nèi)對(duì)Socket連接采用循環(huán)管理方式。

        登錄成功的終端,依據(jù)終端類型和管理線程的負(fù)載情況分配Socket至最優(yōu)管理線程,存放于預(yù)登陸連接棧中;單個(gè)線程最多能夠管理64個(gè)Socket。若現(xiàn)有線程的Socket管理數(shù)已滿,則新建管理線程;若登錄失敗或是斷開(kāi)連接,則判定為無(wú)效Socket被剔除。各管理線程把Socket信息從預(yù)登陸連接棧取出,并存入已登錄連接棧進(jìn)行處理,檢測(cè)各個(gè)Socket是否有事件(數(shù)據(jù)接收、數(shù)據(jù)發(fā)送)發(fā)生,然后循環(huán)處理各Socket的事件。其關(guān)鍵點(diǎn)在于管理線程內(nèi)循環(huán)處理各個(gè)Socket的事件。

        ③無(wú)效Socket的檢測(cè)和剔除。

        當(dāng)終端接入時(shí),首先分配至未注冊(cè)管理線程,在規(guī)定時(shí)限內(nèi)完成登錄過(guò)程后,依據(jù)終端類型分配Socket至最優(yōu)管理線程,未能完成登錄過(guò)程的Socket則視為無(wú)效Socket被剔除;前置系統(tǒng)與Socket建立連接后,在各分類管理線程檢測(cè)已登錄連接棧中存放的Socket是否正常,剔除無(wú)效的Socket(退出登錄或斷線)。

        這種連接管理方法的優(yōu)點(diǎn)如下。

        ①采用終端的多線程分類管理,使得后臺(tái)應(yīng)用系統(tǒng)能夠依據(jù)不同類型的終端(其數(shù)據(jù)類型、采集周期、報(bào)文數(shù)據(jù)格式等不同),采取相應(yīng)的數(shù)據(jù)處理策略,簡(jiǎn)化后臺(tái)應(yīng)用系統(tǒng)數(shù)據(jù)處理過(guò)程。這樣便于后臺(tái)應(yīng)用系統(tǒng)的升級(jí)和改造。

        ②每個(gè)線程管理多個(gè)Socket,在線程內(nèi)循環(huán)處理數(shù)據(jù),相比于現(xiàn)有后臺(tái)應(yīng)用系統(tǒng)一個(gè)線程對(duì)應(yīng)一個(gè)Socket,節(jié)省了系統(tǒng)資源消耗,提升了前置機(jī)模塊在現(xiàn)有后臺(tái)應(yīng)用系統(tǒng)下的接入能力。該方法使前置機(jī)模塊更適應(yīng)由于IP通信技術(shù)的發(fā)展而產(chǎn)生的終端與前置機(jī)模塊直接相連的情況,使得前置機(jī)模塊具有海量終端接入的能力。

        在復(fù)雜和惡劣的現(xiàn)場(chǎng)環(huán)境下,終端經(jīng)常發(fā)生斷線等情況,導(dǎo)致Socket失效或斷開(kāi)。未注冊(cè)服務(wù)器管理線程的引入能夠有效篩除無(wú)效的Socket,提升系統(tǒng)資源利用率;在終端的分類管理線程內(nèi)檢測(cè)到無(wú)效Socket需要剔除時(shí),無(wú)需銷毀管理線程,而是從線程已登錄連界棧中刪除對(duì)應(yīng)的Socket信息,釋放Socket所占用的資源。這就避免了額外的新建和銷毀管理線程所帶來(lái)的資源消耗,提高了終端管理線程的管理效率。

        3 結(jié)束語(yǔ)

        本文介紹了針對(duì)新能源監(jiān)控系統(tǒng)海量終端接入的兩項(xiàng)關(guān)鍵技術(shù),即網(wǎng)絡(luò)負(fù)載均衡策略及通信連接管理方法,并在實(shí)際項(xiàng)目中對(duì)該方法進(jìn)行了驗(yàn)證。該方法處理數(shù)千數(shù)萬(wàn)級(jí)別終端接入效果很好,可解決新能源監(jiān)控/集控系統(tǒng)的需求,同時(shí)對(duì)具有類似需求的配網(wǎng)自動(dòng)化等領(lǐng)域系統(tǒng)設(shè)計(jì)具有參考價(jià)值。

        猜你喜歡
        均衡器海量線程
        一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
        海量快遞垃圾正在“圍城”——“綠色快遞”勢(shì)在必行
        淺談linux多線程協(xié)作
        一個(gè)圖形所蘊(yùn)含的“海量”巧題
        無(wú)線傳感網(wǎng)OFDM系統(tǒng)中信道均衡器的電路實(shí)現(xiàn)
        電子器件(2015年5期)2015-12-29 08:42:39
        一種基于LC振蕩電路的串聯(lián)蓄電池均衡器
        基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
        基于LMS 算法的自適應(yīng)均衡器仿真研究
        Linux線程實(shí)現(xiàn)技術(shù)研究
        基于概率軟切換的兩級(jí)雙模盲均衡器
        免费人成网在线观看品观网| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 狠狠色狠狠色综合日日92| 色偷偷av一区二区三区人妖| 青青草原综合久久大伊人精品| 玩弄人妻少妇精品视频| 男女性高爱潮免费观看| 国产精品国产自线拍免费| 国内精品毛片av在线播放| 国产熟妇与子伦hd| 国产乱子伦视频大全| 成人h视频在线观看| 国产偷国产偷亚洲高清视频| 久草视频这里只有精品| 老色鬼在线精品视频| 国产熟妇搡bbbb搡bb七区| 538亚洲欧美国产日韩在线精品 | 国产成人av一区二区三区无码| 国产精品爽爽VA吃奶在线观看| 国产三级精品三级在线专区| 国产精品泄火熟女| 丁香综合网| 日韩精品国产一区在线| 亚洲av日韩一区二区| 亚洲av天天做在线观看| 国产精品无码无片在线观看3D | 欧美午夜精品久久久久久浪潮| 熟女人妻一区二区中文字幕| 无码免费无线观看在线视| 久久久久久人妻一区二区三区| 777久久| 国产av剧情久久精品久久 | 夫妇交换刺激做爰视频| 日韩少妇无码一区二区免费视频| 日本一区二区三区区视频| 国产精品爽爽v在线观看无码| 96免费精品视频在线观看| 91桃色在线播放国产| 伊人久久大香线蕉av色婷婷色| 高中生粉嫩无套第一次| 高跟丝袜一区二区三区|