專利名稱::一種分布式網絡中信號元信息共享的方法
技術領域:
:本發明涉及一種信息共享的方法,特別涉及一種在對等網絡中信號元信息共享的實現方法。
背景技術:
:控制系統、數據采集系統、設備監控系統在各個行業中得到了廣泛的應用。這些系統往往是基于客戶機/服務器(Client/Server)方式的。服務器泛指各種形式的數據提供設備,如計算機、嵌入式控制器、智能數據前端或者是其它智能設備,這些設備直接從被監視、控制的對象獲取實時數據,再通過各類網絡提供給客戶端。客戶機一般是用于數據顯示和數據保存的計算機,裝載了監控畫面應用軟件給操作值班人員監控對象或者裝載了數據庫等軟件保存歷史數據。兩者之間通過各類網絡進行數據交換。在上述系統中,通過位號(tag)來定義系統中的每個信號(被監視量),因此位號在系統中不可重復,具有唯一性。在系統組態(Configuration)時,對每個信號的位號、描述、所屬服務器地址、設備地址、模塊地址、通道地址等進行了詳細的定義,我們把這組態信息稱為信號的元信息,所有的元信息放在一起組成元信息表(taglist),客戶端應用軟件通過信號的元信息在系統中能夠唯一、確定的從服務器端獲取到相應的信號數據。系統為了能夠正常地工作,在每次組態完畢后都必需將這些元信息復制到網絡上的每個客戶端和服務端,否則系統將無法正常工作。如果每個客戶端的元信息表都要從服務端獲得,將大大增加服務端的負荷,因此就需要通過一種有效高速的方法來使客戶端獲得元信息表。
發明內容本發明是針對現有客戶端從服務器端獲取到相應的信號數據,系統在每次組態完畢后都必需將這些元信息復制到網絡上的每個客戶端和服務端從而影響網絡的速度問題,提出了一種分布式網絡中信號元信息共享的方法,提高了網絡的速度,避免不必要的安全問題,是一種自動、高效、安全的信息共享方法。本發明的技術方案為一種布式網絡中信號元信息共享的方法,系統網絡上按照功能分為客戶端和服務端,網絡中每個服務端負責管理若干個信號,形成了一張元信息表,所有服務端的元信息表組合在一起就形成了總的元信息表;服務端只需要維護自己的元信息表,每個客戶端都持有網絡系統的總元信息表,客戶通過總元信息表可以在系統網絡上從相應的服務端獲取相應的信號,完成監控功能。所述客戶端持有網絡系統的總元信息表的步驟如下客戶端先工作,己經在線1)系統組態軟件在組態完畢后,自動根據設備將元信息表分成一個個固定長度的小塊,每個小塊包含若干條信號的元信息并有唯一的索引值,下載到相應的服務端,使服務端能夠開展正常工作;2)服務端在收到組態,并且正常工作后,在網絡上廣播自己的元信息表和版本號,通知在線的客戶端更新這部分元信息表;3)在線的客戶端收到元信息廣播后,如果發現新的元信息表的版本號和自己現有的元信息表的版本號不同,就刪除已有的這個服務端的元信息表,然后將新的元信息表加入總的元信息表,更新完成。客戶端在服務端之后開始工作(1)客戶端上線后,監聽幾秒鐘其它客戶端和服務端發出的網絡狀態廣播包;(2)確定了網絡上存在的服務端以及擁有了元信息表的分塊信息后,向所有的客戶端組播申請包,申請他們擁有的服務端的元信息表小塊的索引信息;(3)如果在線的客戶端都回答不擁有任何元信息表小塊,則向此服務端發出申請,要求其發送元信息表;(4)如果有大于等于一個客戶端回答擁有元信息表小塊并發送來其擁有的小塊索引,則向這些客戶端申請的元信息表小塊,申請哪些小塊和申請數量由客戶端擁有的小塊情況和它的繁忙程度來定,對于所有客戶端都不擁有但服務端擁有的小塊,直接向服務端申請;(5)收到其它客戶端和服務端(如果申請的話)包含元信息表小塊的答復包,將它們拼裝在一起形成完整的元信息表。本發明的有益效果在于本發明是一種分布式網絡中信號元信息共享的方法,提出了一種自動、高效、安全信息共享方法,有助于提供網絡速度和安全性。圖1是本發明分布式網絡中信號元信息共享的方法的系統結構圖2是本發明分布式網絡中信號元信息共享的方法中客戶端先上線程序流程圖3是本發明分布式網絡中信號元信息共享的方法中客戶端后上線程序流程圖。具體實施例方式如圖1所示本發明分布式網絡中信號元信息共享的方法的系統結構圖,系統網絡4上掛接的站點按照功能我們把它們分為客戶端2和服務端5,服務端從被監控對象獲得信息,客戶端通過網絡從服務端獲得實時數據,完成相應的監控功能,允許站點3既是服務端又是客戶端。系統中一般都配置離線組態器l,對整個系統的結構、信號等進行配置。系統中被監視的信號都用位號(tag)進行命名,位號是一個32字節長度的字符串,由字母、數字和下劃線組成,如T101表示了一個溫度信號,而P101表示了一個壓力信號,位號在系統中是唯一的,不能重復。除了位號外,組態時還對信號的一些其它屬性進行了定義,下表簡單列出了信號通常需要定義的一些屬性<table>tableseeoriginaldocumentpage7</column></row><table>信號的這些屬性組合在一些,我們稱之為信號的元信息。每個服務端負責管理若干個信號,形成了一張元信息表,所有服務端的元信息表組合在一起就形成了總的元信息表。服務端只需要維護自己的元信息表,而不需要維護整個系統的元信息表,而每個客戶端都需要持有系統總的元信息表,通過元信息表就可以在系統網絡上從相應的服務端獲取相應的信號,完成監控功能。客戶端自動獲得元信息表最直接的方法是在組態完畢下載到服務端后,直接向服務端申請元信息表,但是因為服務端承擔著從被控對象獲取實時數據的任務,工作繁忙,當客戶端數量很多時,或者客戶端上下線頻繁時,會影響服務端的正常工作,本設計方法避免了這種情況的發生。考慮兩種情況,客戶端在服務端之前上線工作和在服務端之后上線工作。圖2給出了客戶端在服務端之前開始工作的程序框圖,這種情況的處理步驟如下A.將系統網絡上的節點,按照是客戶端還是服務端分成兩組B.系統組態軟件在組態完畢后,為每個服務端生成一張元信息表,這張元信息表再按照若干個元信息、總長度不超過lk字節的原則分成若干個小塊。這張元信息表通過網絡下載到服務端。C.服務端在收到組態,并且正常工作后,在網絡上對所有客戶端組播自己的元信息表和版本號,通知在線的客戶端更新這部分元信息表。D.在線的客戶端收到元信息廣播后,刪除原來存在的這個服務端的元信息(如果已經存在舊版本),然后將新的元信息表加入總的元信息表,更新完成。圖3給出了服務端在客戶端之前開始工作的程序框圖,這種情況的處理歩驟如下一、客戶端上線后,監聽幾秒鐘其它客戶端和服務端發出的網絡狀態廣播包,通過接收到的狀態包確定網絡上存在的服務端,形成服務端列表。所有客戶端和服務端每秒種都在網絡上廣播自己的狀態,狀態包包含下列信息網絡地址、類型(服務端還是客戶端)、工作狀態、繁忙狀態(l到5分級,1級最空閑,5級最繁忙)、元信息表信息(服務端)、元信息表版本號(服務端)。二、新上線的客戶端在網絡上向繁忙程度小于5級的所有客戶端組播,申請他們元信息表的擁有情況,申請包中包含包類型和所有服務端的版本號信息。三、其它的客戶端收到請求包后,如果不擁有任何元信息表小塊或者與請求的所有版本號都不符合,則回答"N0",跳至步驟五繼續執行;否則回答"YES",并答復自己持有的版本號一致的服務端的元信息表小塊的索引(該客戶端有可能也在更新中,沒有全部的元信息表小塊)。四、一)如果有客戶端回答"YES",則根據它們的繁忙程度和擁有元信息小塊情況,向它們申請一定數量的它們擁有的小塊。申請小塊的數量用以下公式計算7V,=^^xM其中,H表示響應的客戶端數量;iV,表示向第i個客戶端申請的小塊數量;&表示第i個客戶端的繁忙程度(l到4);M表示總的小塊數量。計算向客戶端申請小塊的分塊方法(一)根據所有客戶端發來的擁有的元信息小塊的情況,生成一個二元表格如下客戶端擁有的元信息小塊表<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>其中,o代表它對應的客戶端不擁有相應的小塊,l代表它對應的客戶端擁有相應的小塊;Pl,P2,…,Pm是小塊的索引值。(二)對表格中的每一列求和,并以這些和值為權重對所有小塊從小到大進行排序,即按照小塊被擁有的頻率從小到大排序。同時,對于每個小塊,根據擁有它們的客戶端根據繁忙程度值《由小到大進行排序。以上描述的排序結果如下表所示-被客戶端擁有的數量由小到大<formula>formulaseeoriginaldocumentpage10</formula>由上表可知,擁有小塊《的客戶端有。,G等,且繁忙程度(三)從^開始對隊列中所有的小塊進行分配(以上表為例)擁有^的只有客戶端q,則選中C,對它分配申請小塊。向C,申請的小塊的數量是<formula>formulaseeoriginaldocumentpage10</formula>。從下一個小塊A開始遍歷小塊隊列,看它們是否也被q擁有,直到找到^個小塊為止,把它們分配給q。每次分配之后把已經分配好的小塊從隊列中刪除,然后仍然對隊列中第一個小塊重復以上過程。當一個小塊被多個客戶端擁有時,首先按順序査找客戶端隊列中第一個的未被分配過的客戶端,如果隊列中所有的客戶端都被分配過,則把該小塊分配給隊首的客戶端(即最空閑的一個客戶端)。(四)分塊結束后,新客戶端向答復"YES"的所有客戶端申請按照上述方法分出的元信息小塊。(五)跳至步驟六繼續執行。二)對于所有客戶端都不擁有但服務端擁有的小塊,直接向服務端申請,然后跳至步驟六繼續執行。三)如果所有客戶端都回答"N0",則直接向所有的服務端發請求包,申請元信息表,即跳至步驟五繼續執行。五、向所有服務端申請它們的元信息表。六、在接收到任意一個客戶端(或服務端)發送的元信息表小塊后,將自己的繁忙程度置為小于5級,當接收到其它客戶端申請元信息表時,將自己擁有的元信息表信息發送,即準備向其它客戶端發送自己接收到的元信息表。接收到所有客戶端和服務端(如果申請的話)發送來的元信息表小塊后,將它們按照索引值組成完整的元信息表,并在這張表中加入所有服務端組態信息的版本號(從服務端的廣播包中獲得)。至此,新上線的客戶端獲得了完整的的元信息表。權利要求1、一種布式網絡中信號元信息共享的方法,系統網絡上按照功能分為客戶端和服務端,網絡中每個服務端負責管理若干個信號,形成了一張元信息表,所有服務端的元信息表組合在一起就形成了總的元信息表;服務端只需要維護自己的元信息表,每個客戶端都持有網絡系統的總元信息表,客戶通過總元信息表可以在系統網絡上從相應的服務端獲取相應的信號,完成監控功能。2、根據權力要求1所述布式網絡中信號元信息共享的方法,其特征在于,所述客戶端持有網絡系統的總元信息表的步驟如下客戶端先工作,已經在線1)系統組態軟件在組態完畢后,自動根據設備將元信息表分成一個個固定長度的小塊,每個小塊包含若干條信號的元信息并有唯一的索引值,下載到相應的服務端,使服務端能夠開展正常工作;2)服務端在收到組態,并且正常工作后,在網絡上廣播自己的元信息表和版本號,通知在線的客戶端更新這部分元信息表;3)在線的客戶端收到元信息廣播后,如果發現新的元信息表的版本號和自己現有的元信息表的版本號不同,就刪除已有的這個服務端的元信息表,然后將新的元信息表加入總的元信息表,更新完成。客戶端在服務端之后開始工作(1)客戶端上線后,監聽幾秒鐘其它客戶端和服務端發出的網絡狀態廣播包;(2)確定了網絡上存在的服務端以及擁有了元信息表的分塊信息后,向所有的客戶端組播申請包,申請他們擁有的服務端的元信息表小塊的索引信息;(3)如果在線的客戶端都回答不擁有任何元信息表小塊,則向此服務端發出申請,要求其發送元信息表;(4)如果有大于等于一個客戶端回答擁有元信息表小塊并發送來其擁有的小塊索引,則向這些客戶端申請的元信息表小塊,申請哪些小塊和申請數量由客戶端擁有的小塊情況和它的繁忙程度來定,對于所有客戶端都不擁有但服務端擁有的小塊,直接向服務端申請;(5)收到其它客戶端和服務端(如果申請的話)包含元信息表小塊的答復包,將它們拼裝在一起形成完整的元信息表。全文摘要本發明涉及一種分布式網絡中信號元信息共享的方法,使客戶端在加入系統網絡的初始時刻,能夠通過系統網絡從其它客戶端、服務端獲取到系統中定義的所有元信息表,然后再開始正常的工作,提供一種自動、高效、安全的信號元信息共享的方法。文檔編號H04L29/08GK101420446SQ20081004194公開日2009年4月29日申請日期2008年8月21日優先權日2008年8月21日發明者強朱申請人:上海自動化儀表股份有限公司