陶曉峰,陳方周
(國網電力科學研究院,江蘇南京210003)
用電信息采集系統中主要采用采集終端匯總電表數據再上送主站的采集模式[1],其中采集終端和系統主站之間主要采用GPRS無線通信方式[2]。目前由于地域等原因會造成無線通信信號不穩定,導致周期采集任務中有些任務會執行失敗,造成部分數據缺失。為了保證系統采集數據的成功率和完整率[3],需要引入數據補采機制作為對自動周期定時采集的一種必要補充。為了減少大型數據庫I/O操作和提高檢索效率,文中引入了一種基于緩存的海量數據的補采策略,通過在緩存中保存數據采集成功與否的狀態標識,直接遍歷緩存數據,有效減少對數據庫的檢索壓力,通過制定延時同步回寫數據庫機制對采集成功標識進行持久化保存。
數據補采策略主要由補采服務、分布式緩存、采集服務3個服務子模塊組成。補采服務主要負責根據設定的采集任務將每個數據采集狀態在分布式緩存中進行初始化,根據指定的采集任務模塊檢索緩存中的數據采集狀態發起補采任務,任務保存在分布式緩存的任務隊列,采集機獲取補采任務進行執行,通過解析數據報文,采用數據包標記(DPM)方法對采集數據包進行快速解析,獲取數據信息,對采集成功的數據在分布式緩存中進行標記。補采流程如圖1所示。
在數據規模越來越大的情況下,采用遍歷數據庫判斷數據缺失的方式會增加數據庫I/O的負載,而采用對系統中的數據采集項進行內存初始化打點設計方案,則可減少數據庫的直接操作。
圖1數據補采流程
哈希技術在信息系統的數據存儲與訪問中占有重要地位,它把關鍵詞直接映射為存儲地址,達到快速尋址的目的。根據用電采集系統的物理結構,一個采集設備下負責收集幾百到上千不等的用戶電表數據,數據采集狀態標識采用位打點標記法,系統中通過數據時標Time、測量點號Pn和數據項編碼Fn共同組成數據信息的三元組作為關鍵詞Key;1個用戶電表的數據狀態代表1個數據位,數據位值0代表沒采集成功,1代表采集成功,將所有用戶電表的數據采集狀態按測量點號Pn組合成一個狀態位字符串作為值value,將采集設備的三元組信息關鍵詞Key和狀態位字符串值value進行內存映射成哈希表。
根據數據分布和哈希函數的效率選擇哈希函數,文中采用乘法哈希函數:
式中:H(m)為哈希運算函數;mi,pi分別為信息關鍵詞和狀態位值。此哈希函數利用乘法的不相關性[4],提高了檢索速度。
用電信息系統中數據的采集交互都是以數據包按照一定的協議格式傳輸的,DPM法的主要思想是數據包發送給采集服務器后,由數據包解析器將接收到的數據包中直接分離出數據標識信息[5],對數據格式和詳細的數據明細采用弱化處理方式提高解析效率。數據包的格式如圖2所示,標記服務通過從數據包中提取出數據單元標識,DPM將解析出數據時間、測量點號、數據項編碼項作為數據信息的三元組,根據三元組信息組合成Key,根據上述乘法哈希函數可以快速定位數據采集狀態標記。
圖2數據報文信息域
采集終端下所有用戶的數據采集狀態,根據采集任務模板預先初始化生成狀態位字符,狀態位通過位標識符都標記在了狀態字符串內,將這些狀態位字符保存在分布式緩存中[6],采集成功的數據會更新相對應的狀態位字符,補采服務定期遍歷每個終端的狀態字符串,將狀態位轉化為數組形式,可以一次通過檢索出狀態位是0的數組索引下標值,此下標值代表了數據信息的三元組中的Pn值,根據Pn值可以定位到唯一的用戶電表。根據這些信息生成不同的補采任務,前置模塊可以并發執行補采任務。
對于保存在內存中的采集狀態是一種暫態的狀態,當程序重新初始化時就會丟失,因此需要對這些狀態進行持久化保存,在數據庫中根據Map的Key和Value設計對應的數據表,以數據信息三元組中的3個屬性作為聯合主鍵,狀態屬性為Varchar2屬性,采用延遲回寫機制減少對數據庫的操作[7]。
對于GPRS無線通信方式,特別是信號覆蓋差的地方其在線時間很不穩定,通過上線即補采策略可以在最大程度上消除信號不穩定帶來的影響,其原理是當終端上線后觸發一個上線事件給補采服務,補采服務監聽到上線事件后檢索內存中的采集狀態,實時地生成補采任務[8]。補采流程如圖3所示。
圖3上線即補采流程
設定周期補采策略時根據系統和通信信道的空閑程度可以調整補采的策略,通過靈活定義正則表達式(一種文本模式,包括普通字符和特殊字符)來設定周期補采的時間和補采頻率,對一些優先級高的任務可以提高補采頻率實現提升采集成功率的目標。
該補采策略在青海、新疆、江西、安徽等多個省級集中部署的用電信息采集系統中進行了實際運用,實踐證明對系統提高采集成功率有明顯效果,通過在一天之中的多次補采,采集成功率至少提高了5%以上。如表1所示。
表1補采策略應用和采集成功率關系表
該補采策略針對智能用電信息采集中數據量大、通信不是很穩定的特點設計的,實踐證明該模塊對用電采集系統提高采集成功率有明顯效果,目前已經成為系統中必不可少的關鍵模塊。
[1]李衛良,田 偉,王曉丹.以AMI為核心的智能配用電技術體系研究[J].江蘇電機工程,2011,30(3):1-6.
[2]Q/GDW378.1—2009電力用戶用電信息采集系統設計導則:主站軟件設計導則[S].北京:中國電力出版社,2009.
[3]Q/GDW376.1—2009電力用戶用電信息采集系統通信協議:主站與采集終端通信協議[S].北京:中國電力出版社,2009.
[4]CORMEN T H,LEISERSON C E,RIVEST R L,et al.Introduc-tion to Algorithms.Third Edition.Cambridge,Massachusetts London,England :The MIT Press,,2009:253-285.
[5]閻 冬,王玉龍,蘇 森,等.基于協作交互的概率性數據包標記溯源方法[J].北京郵電大學學報,2012,35(1):51-54.
[6]周功業,吳偉杰,陳進才.一種基于對象存儲系統的元數據緩存實現方法[J].計算機科學,2007,34(10):146-148.
[7]盧成均.緩存機制及其在數據存取層中的應用模型研究[J].計算機應用與軟件, 2008,25(12):172-174.
[8]錢立軍,李新家.用電信息采集系統中數據比對功能的實現及應用[J].江蘇電機工程,2013,32(2):64-65.