• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于鍵值對(duì)存儲(chǔ)的水電數(shù)據(jù)中心編碼系統(tǒng)

      2018-12-25 07:02:46翟桂鋒
      水電與抽水蓄能 2018年6期
      關(guān)鍵詞:鍵值水電廠命名

      翟桂鋒,徐 丹,錢 鋒,夏 晨

      (南京南瑞繼保電氣有限公司,江蘇省南京市 211102)

      0 引言

      隨著智能電網(wǎng)建設(shè)的不斷深入,對(duì)水電廠運(yùn)行的可靠性、源網(wǎng)協(xié)調(diào)能力及智能決策能力提出全新的要求[1]。現(xiàn)有的水電廠自動(dòng)化系統(tǒng)由于發(fā)展階段和技術(shù)條件限制,各類業(yè)務(wù)應(yīng)用系統(tǒng)的信息和數(shù)據(jù)相對(duì)獨(dú)立、一體化程度低、標(biāo)準(zhǔn)差異性大、信息孤島現(xiàn)象嚴(yán)重,將不同系統(tǒng)的數(shù)據(jù)進(jìn)行整合,建立一體化的數(shù)據(jù)中心成為進(jìn)行水電廠大數(shù)據(jù)分析和智能化決策的先決條件。但水電廠內(nèi)各系統(tǒng)對(duì)同一設(shè)備在命名和編碼方式上存在差異,必須通過(guò)全局統(tǒng)一的設(shè)備命名和編碼來(lái)保證各系統(tǒng)接入數(shù)據(jù)的一致性。

      本文提出并實(shí)現(xiàn)了一種基于鍵值對(duì)存儲(chǔ)的水電廠一體化數(shù)據(jù)中心全局編碼系統(tǒng),用來(lái)管理水電廠各類業(yè)務(wù)系統(tǒng)中對(duì)象的全局命名和統(tǒng)一編碼,為數(shù)據(jù)中心和各業(yè)務(wù)系統(tǒng)提供統(tǒng)一的對(duì)象編碼、查詢、更改等操作服務(wù),從技術(shù)上保證數(shù)據(jù)中心內(nèi)對(duì)象全局命名和編碼的標(biāo)準(zhǔn)化、統(tǒng)一化,保證數(shù)據(jù)中心接入各業(yè)務(wù)系統(tǒng)數(shù)據(jù)的一致性,解決數(shù)據(jù)中心數(shù)據(jù)集成及各業(yè)務(wù)系統(tǒng)之間數(shù)據(jù)交互的問(wèn)題。

      1 水電數(shù)據(jù)中心編碼系統(tǒng)

      水電數(shù)據(jù)中心編碼系統(tǒng)是水電廠一體化數(shù)據(jù)中心內(nèi)對(duì)象全局編碼的統(tǒng)一管理系統(tǒng),是實(shí)現(xiàn)水電廠內(nèi)各業(yè)務(wù)系統(tǒng)數(shù)據(jù)接入一致性的技術(shù)保證。其主要作用體現(xiàn)在兩個(gè)方面:一是不同系統(tǒng)內(nèi)的同一設(shè)備對(duì)象通過(guò)統(tǒng)一的全局編碼進(jìn)行一一對(duì)應(yīng),數(shù)據(jù)中心全景建模時(shí)來(lái)源于不同應(yīng)用系統(tǒng)的模型可以更好地拼接和擴(kuò)展,數(shù)據(jù)中心進(jìn)行數(shù)據(jù)集成時(shí)也可將不同系統(tǒng)的數(shù)據(jù)根據(jù)設(shè)備對(duì)象的全局編碼進(jìn)行數(shù)據(jù)聚合;二是各類業(yè)務(wù)系統(tǒng)間進(jìn)行數(shù)據(jù)交互時(shí),利用全局編碼標(biāo)識(shí)同一個(gè)設(shè)備對(duì)象,有利于系統(tǒng)間的數(shù)據(jù)交互。

      1.1 標(biāo)準(zhǔn)化命名

      水電數(shù)據(jù)中心編碼系統(tǒng)的核心功能是對(duì)所有業(yè)務(wù)系統(tǒng)的對(duì)象進(jìn)行全局編碼。為存儲(chǔ)全局編碼和實(shí)體對(duì)象的一對(duì)一映射關(guān)系,必須對(duì)實(shí)體對(duì)象進(jìn)行全局唯一的標(biāo)準(zhǔn)化命名。當(dāng)前,IEC61970標(biāo)準(zhǔn)已經(jīng)成為電力系統(tǒng)信息標(biāo)準(zhǔn)化的技術(shù)規(guī)范[2,3]。編碼系統(tǒng)對(duì)象的全局命名也遵循IEC61970標(biāo)準(zhǔn)中的CIM模型來(lái)實(shí)施。圖1是基于IEC61970標(biāo)準(zhǔn)構(gòu)建的水電廠監(jiān)控、水情監(jiān)視、水電調(diào)度等應(yīng)用系統(tǒng)設(shè)備對(duì)象和量測(cè)的層次結(jié)構(gòu)圖。

      圖1 水電數(shù)據(jù)中心多應(yīng)用系統(tǒng)對(duì)象的層次結(jié)構(gòu)示意圖Fig.1 Hierarchical structure of objects from multiple systems in data center of hydropower plant

      依據(jù)層次式的分類結(jié)構(gòu),水電數(shù)據(jù)中心對(duì)象的全局命名也呈現(xiàn)層次式方式。例如水電廠設(shè)備對(duì)象“中國(guó)長(zhǎng)江電力股份有限公司成都梯級(jí)調(diào)度向家壩水電廠1號(hào)機(jī)組”的全局命名可定義為“長(zhǎng)江電力/成都梯調(diào)/向家壩水電廠/#1機(jī)”。

      1.2 鍵值對(duì)存儲(chǔ)

      鍵值對(duì)存儲(chǔ)是數(shù)據(jù)庫(kù)最簡(jiǎn)單的組織方式,其結(jié)構(gòu)是一個(gè)“鍵-值”的集合。鍵值對(duì)存儲(chǔ)中鍵是全局唯一的。Redis是一個(gè)使用ANSI C編寫的開(kāi)源、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù),是目前最流行的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)[4]。Redis由一個(gè)鍵、值映射的字典構(gòu)成。Redis中值的類型不僅限于字符串,還支持抽象的數(shù)據(jù)類型,如字符串列表、無(wú)序不重復(fù)的字符串集合、有序不重復(fù)的字符串集合、鍵值都為字符串的哈希表等。

      水電數(shù)據(jù)中心編碼系統(tǒng)存儲(chǔ)的核心數(shù)據(jù)是對(duì)象的全局命名和全局編碼,同一對(duì)象的全局命名和全局編碼在編碼系統(tǒng)內(nèi)保持唯一。此外,編碼系統(tǒng)還存儲(chǔ)對(duì)象的其他屬性如類型、編碼信息、編碼時(shí)間等。編碼系統(tǒng)的數(shù)據(jù)存儲(chǔ)方式如表1所示。

      將全局命名和全局編碼設(shè)計(jì)為鍵,可以通過(guò)鍵的唯一性來(lái)保證對(duì)象的全局命名和全局編碼的唯一性。此外,對(duì)象的全局命名和全局編碼的互相映射關(guān)系也通過(guò)鍵值對(duì)的形式來(lái)保證,具體細(xì)節(jié)參考2.1的內(nèi)容。

      表1 編碼系統(tǒng)的數(shù)據(jù)存儲(chǔ)方式Tab.1 Data storage method of the encoding system

      1.3 微服務(wù)接口

      根據(jù)水電一體化數(shù)據(jù)中心和各業(yè)務(wù)系統(tǒng)訪問(wèn)編碼系統(tǒng)的需求,編碼系統(tǒng)提供了對(duì)象編碼、查詢、更改及刪除等相關(guān)操作接口。在水電一體化數(shù)據(jù)中心建立過(guò)程中,各業(yè)務(wù)系統(tǒng)通過(guò)編碼系統(tǒng)提供的接口,將本系統(tǒng)接入數(shù)據(jù)中心的所有模型對(duì)象進(jìn)行統(tǒng)一編碼。數(shù)據(jù)中心通過(guò)統(tǒng)一的全局編碼接入各業(yè)務(wù)系統(tǒng)的數(shù)據(jù),對(duì)不同業(yè)務(wù)系統(tǒng)的數(shù)據(jù)進(jìn)行聚合,為后續(xù)基于數(shù)據(jù)中心的數(shù)據(jù)挖掘和智能決策提供一致的數(shù)據(jù)模型和數(shù)據(jù)訪問(wèn)方式。

      水電一體化數(shù)據(jù)中心編碼系統(tǒng)基于Spring/Spring MVC框架[5]實(shí)現(xiàn)操作接口的微服務(wù)化,接口形式上采用HTTPS傳輸協(xié)議與JSON報(bào)文格式相結(jié)合的方式。微服務(wù)通用的接口形式易于數(shù)據(jù)中心和各業(yè)務(wù)系統(tǒng)進(jìn)行改造和開(kāi)發(fā)。微服務(wù)化使得對(duì)編碼系統(tǒng)的訪問(wèn)更加靈活、方便,開(kāi)放性和通用性更好。同時(shí),微服務(wù)架構(gòu)的輕量級(jí)、易擴(kuò)展的特性,使得編碼系統(tǒng)在并發(fā)訪問(wèn)和彈性擴(kuò)展上更具優(yōu)勢(shì),易于承載更高數(shù)據(jù)量級(jí)的對(duì)象數(shù)據(jù)。

      2 關(guān)鍵技術(shù)

      2.1 唯一性和雙向映射

      全局命名和全局編碼都通過(guò)鍵值對(duì)存儲(chǔ)的鍵的唯一性來(lái)保證其唯一性。因此,在鍵值對(duì)存儲(chǔ)中存在著以全局命名為鍵和以全局編碼為鍵的兩個(gè)鍵值對(duì)數(shù)據(jù),而這兩個(gè)鍵值對(duì)數(shù)據(jù)的值實(shí)際上對(duì)應(yīng)的是同一個(gè)對(duì)象的數(shù)據(jù)。

      為了避免對(duì)象數(shù)據(jù)重復(fù)和不一致,在具體的存儲(chǔ)設(shè)計(jì)時(shí),對(duì)象的完整數(shù)據(jù)只存儲(chǔ)在以全局編碼為鍵對(duì)應(yīng)的值數(shù)據(jù)中,以全局命名為鍵對(duì)應(yīng)的值數(shù)據(jù)中只保存對(duì)象的全局編碼。同時(shí),為了能夠從全局編碼直接查詢到全局命名,全局命名也作為對(duì)象的屬性之一,存儲(chǔ)于全局編碼為鍵對(duì)應(yīng)的值數(shù)據(jù)中。具體的鍵值對(duì)映射關(guān)系示意如圖2所示。

      2.2 分布式鎖和彈性擴(kuò)展

      圖2 全局命名和全局編碼的映射關(guān)系示意圖Fig.2 Mappings between global name and global ID

      原子服務(wù)是提供數(shù)據(jù)和業(yè)務(wù)邏輯的一個(gè)最小的單元。根據(jù)編碼系統(tǒng)的特點(diǎn),將編碼系統(tǒng)提供的注冊(cè)、查詢、刪除和更新操作進(jìn)行原子化,形成注冊(cè)原子服務(wù)、查詢?cè)臃?wù)、刪除原子服務(wù)和更新原子服務(wù),并基于Spring/Spring MVC框架實(shí)現(xiàn)微服務(wù)化。

      微服務(wù)的優(yōu)勢(shì)在于通過(guò)彈性擴(kuò)展支持大量并發(fā)訪問(wèn)。在編碼系統(tǒng)提供的四個(gè)原子服務(wù)中,查詢服務(wù)是無(wú)狀態(tài)的,可以直接進(jìn)行擴(kuò)展。而注冊(cè)服務(wù)、刪除服務(wù)和更新服務(wù)是有狀態(tài)的,必須要保證這些有狀態(tài)的服務(wù)能夠按照服務(wù)調(diào)用的順序先后執(zhí)行。為了解決這一問(wèn)題,在實(shí)現(xiàn)過(guò)程中,本文基于Redis的SETNX命令實(shí)現(xiàn)了一個(gè)分布式鎖。通過(guò)分布式鎖的獲取和釋放,解決了有狀態(tài)服務(wù)調(diào)用的串行化。

      2.3 編碼重用

      全局編碼重用指當(dāng)某個(gè)對(duì)象刪除后,同樣全局命名的對(duì)象再次編碼時(shí)重用原有的全局編碼。這就要求在編碼系統(tǒng)在處理對(duì)象刪除時(shí),對(duì)象全局名和全局編碼的對(duì)應(yīng)關(guān)系必須被保留。因此,編碼系統(tǒng)引入一個(gè)狀態(tài)標(biāo)記位,用來(lái)標(biāo)記對(duì)象是否為停用狀態(tài)。當(dāng)對(duì)象被編碼時(shí),狀態(tài)標(biāo)記位被置為“啟用”;當(dāng)對(duì)象被刪除后,狀態(tài)標(biāo)記位被置為“停用”。

      狀態(tài)標(biāo)記位作為一個(gè)新屬性,存儲(chǔ)于鍵值對(duì)存儲(chǔ)的對(duì)象數(shù)據(jù)中。

      3 系統(tǒng)開(kāi)發(fā)和運(yùn)行

      基于上述研究,本文依托開(kāi)源軟件Redis作為鍵值對(duì)存儲(chǔ),基于Spring/Spring MVC框架實(shí)現(xiàn)了一個(gè)水電數(shù)據(jù)中心的編碼系統(tǒng)。

      3.1 系統(tǒng)實(shí)現(xiàn)

      3.1.1 存儲(chǔ)設(shè)計(jì)

      根據(jù)1.2和2.1的內(nèi)容所述,以電廠設(shè)備對(duì)象“中國(guó)長(zhǎng)江電力股份有限公司成都梯級(jí)調(diào)度向家壩水電廠1號(hào)機(jī)組”為例,設(shè)計(jì)如下的鍵值對(duì)存儲(chǔ)方案:

      全局命名的鍵值對(duì)

      鍵:字符串“GlobalName/長(zhǎng)江電力/成都梯調(diào)/向家壩水電廠/#1機(jī)”

      值:字符串“026301170000401126”

      全局編碼的鍵值對(duì)

      鍵:字符串“GlobalID/026301170000401126”

      表2 全局編碼鍵值對(duì)的值中哈希表的內(nèi)容Tab.2 Contents of the hash table as the value of the KV pair

      值:哈希表,其內(nèi)容如表2所示例,對(duì)象數(shù)據(jù)中的屬性并不限于表中所示的哈希鍵值。

      通過(guò)在鍵的字符串中增加“GlobalName”和“GlobaID”的前綴,可以避免命名和編碼在極端情況下重復(fù),引發(fā)系統(tǒng)異常。

      3.1.2 高可用設(shè)計(jì)和備份機(jī)制

      在高可用方面,鍵值對(duì)存儲(chǔ)通過(guò)Redis集群方式進(jìn)行部署。Redis集群存在多個(gè)實(shí)例和數(shù)據(jù)端口,客戶端請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),如果被請(qǐng)求的實(shí)例中沒(méi)有對(duì)應(yīng)的數(shù)據(jù),該請(qǐng)求會(huì)轉(zhuǎn)發(fā)給對(duì)應(yīng)的實(shí)例來(lái)處理。Redis集群通過(guò)Gossip協(xié)議同步節(jié)點(diǎn)信息。

      為了提高編碼系統(tǒng)的可用性,編碼系統(tǒng)通過(guò)自定義腳本的方式實(shí)現(xiàn)定時(shí)數(shù)據(jù)備份,備份方式默認(rèn)按照最近三天、最近一周、最近一月的方式進(jìn)行數(shù)據(jù)全備份。備份的數(shù)據(jù)通過(guò)JSON文件的方式存放在磁盤上,可用于編碼系統(tǒng)的數(shù)據(jù)恢復(fù)和數(shù)據(jù)遷移。

      3.2 系統(tǒng)測(cè)試

      采用模擬某水電站的水電監(jiān)控系統(tǒng)、水情水調(diào)系統(tǒng)的對(duì)象作為數(shù)據(jù)來(lái)源進(jìn)行測(cè)試。水電數(shù)據(jù)中心模擬編碼系統(tǒng)運(yùn)行在華為FusionCube云平臺(tái)的兩臺(tái)虛擬機(jī)上,配置均為8核2.4G,內(nèi)存32G,操作系統(tǒng)為RHEL7.3,測(cè)試程序運(yùn)行在一臺(tái)HPZ400工作站上,機(jī)器配置為雙核2.4G,內(nèi)存8G,操作系統(tǒng)RHEL7.3。

      3.2.1 功能測(cè)試

      功能測(cè)試主要驗(yàn)證水電數(shù)據(jù)中心編碼系統(tǒng)的功能是否達(dá)到預(yù)期目標(biāo)。通過(guò)分別對(duì)水電監(jiān)控系統(tǒng)、水情水調(diào)系統(tǒng)的對(duì)象進(jìn)行編碼、查詢、更改、刪除等一系列測(cè)試,證實(shí)基于鍵值對(duì)存儲(chǔ)的水電數(shù)據(jù)中心編碼系統(tǒng)可以根據(jù)對(duì)象的信息進(jìn)行統(tǒng)一命名和編碼,并提供相應(yīng)的接口供不同業(yè)務(wù)系統(tǒng)進(jìn)行編碼、查詢等功能,解決多業(yè)務(wù)系統(tǒng)的數(shù)據(jù)互操作問(wèn)題。

      3.2.2 性能測(cè)試

      理論上,基于鍵值對(duì)存儲(chǔ)構(gòu)建的編碼系統(tǒng),其查詢速度比傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)要快上幾個(gè)數(shù)量級(jí)。為便于性能對(duì)比,本文以相同的數(shù)據(jù)來(lái)源,基于MySQL實(shí)現(xiàn)了一個(gè)編碼系統(tǒng)原型。該原型系統(tǒng)使用關(guān)系數(shù)據(jù)庫(kù)的外鍵機(jī)制來(lái)描述對(duì)象的層次關(guān)系,通過(guò)視圖的方式進(jìn)行多表訪問(wèn)。

      模擬某水電站的水電監(jiān)控系統(tǒng)、水情水調(diào)系統(tǒng)共約100萬(wàn)對(duì)象數(shù)據(jù)的存儲(chǔ)條件下,進(jìn)行10萬(wàn)次查詢重復(fù)實(shí)驗(yàn),求得平均時(shí)間對(duì)比如表3所示。

      表3 編碼系統(tǒng)的性能測(cè)試Tab.3 Performance of the encoding system

      為了精準(zhǔn)測(cè)試編碼系統(tǒng)存儲(chǔ)的性能,微服務(wù)相關(guān)的額外時(shí)間開(kāi)銷均未計(jì)入測(cè)試結(jié)果。實(shí)驗(yàn)證明,基于鍵值對(duì)存儲(chǔ)的編碼系統(tǒng)比基于MySQL的編碼系統(tǒng)查詢操作快了大約1個(gè)數(shù)量級(jí)以上。

      4 結(jié)論和展望

      本文提出并實(shí)現(xiàn)了一種基于鍵值對(duì)存儲(chǔ)的水電廠一體化數(shù)據(jù)中心全局編碼系統(tǒng),解決水電廠建立一體化數(shù)據(jù)中心時(shí),各類業(yè)務(wù)應(yīng)用的自動(dòng)化系統(tǒng)由于設(shè)備命名和編碼方式差異大,造成數(shù)據(jù)集成與互相操作困難的問(wèn)題。水電廠一體化數(shù)據(jù)中心全局編碼系統(tǒng)通過(guò)對(duì)各業(yè)務(wù)系統(tǒng)的對(duì)象進(jìn)行全局命名和全局編碼,為一體化數(shù)據(jù)中心和各系統(tǒng)提供統(tǒng)一的微服務(wù)接口,從技術(shù)上保證數(shù)據(jù)中心內(nèi)對(duì)象命名和編碼的標(biāo)準(zhǔn)化和一致性,為后續(xù)基于數(shù)據(jù)中心的大數(shù)據(jù)分析和智能化決策提供了先決條件。

      猜你喜歡
      鍵值水電廠命名
      命名——助力有機(jī)化學(xué)的學(xué)習(xí)
      非請(qǐng)勿進(jìn) 為注冊(cè)表的重要鍵值上把“鎖”
      有一種男人以“暖”命名
      東方女性(2018年3期)2018-04-16 15:30:02
      為一條河命名——在白河源
      一鍵直達(dá) Windows 10注冊(cè)表編輯高招
      GMH550測(cè)振測(cè)擺系統(tǒng)在株溪口水電廠的實(shí)踐與應(yīng)用
      iP9000水電廠智能平臺(tái)
      南水電廠擴(kuò)容后過(guò)渡過(guò)程分析
      北斗通信在小型水電廠電量采集中的應(yīng)用
      注冊(cè)表值被刪除導(dǎo)致文件夾選項(xiàng)成空白
      德兴市| 新平| 大洼县| 长春市| 镇原县| 临沭县| 苏尼特左旗| 桑植县| 镇坪县| 威信县| 巴林左旗| 凤山县| 乡城县| 静乐县| 辽阳市| 怀柔区| 五莲县| 浦北县| 磐安县| 绍兴市| 凤阳县| 潞城市| 安平县| 泸西县| 富川| 中江县| 嘉善县| 汉中市| 武强县| 依兰县| 松江区| 温州市| 二手房| 合阳县| 浦县| 南充市| 页游| 博罗县| 宁德市| 荔浦县| 临洮县|