王志軒 王永剛 沈永良 鄔軍軍
摘要:在大數(shù)據(jù)時(shí)代,電力系統(tǒng)運(yùn)行方式日趨復(fù)雜,業(yè)務(wù)應(yīng)用變得越來越龐大,若電力信息系統(tǒng)依然采用單體架構(gòu),復(fù)雜的代碼以及緊密的耦合關(guān)系會(huì)導(dǎo)致牽一發(fā)而動(dòng)全身,無法快速高效的進(jìn)行項(xiàng)目的開發(fā)維護(hù)以及擴(kuò)展。而微服務(wù)架構(gòu)的出現(xiàn),有助于大型項(xiàng)目解耦,從而實(shí)現(xiàn)快速開發(fā)。本文首先對(duì)不同架構(gòu)在電力信息系統(tǒng)的應(yīng)用進(jìn)行了介紹,分析了不同架構(gòu)的優(yōu)缺點(diǎn),然后針對(duì)微服務(wù)架構(gòu)在電力系統(tǒng)中的繼電保護(hù)故障信息主站系統(tǒng)的應(yīng)用進(jìn)行了可行性研究,提出了一種軟件設(shè)計(jì)方案。
關(guān)鍵詞:微服務(wù)架構(gòu);繼電保護(hù);故障信息主站
中圖分類號(hào):TM774 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)09-0095-03
0 引言
近年來,電力信息系統(tǒng)架構(gòu)經(jīng)歷了從單體架構(gòu)到面向服務(wù)SOA架構(gòu)的發(fā)展歷程。圖1是一個(gè)單體架構(gòu)模型,如圖所示,單體架構(gòu)將所有的功能模塊集成在一個(gè)項(xiàng)目工程中,作為一個(gè)整體運(yùn)行,這樣的架構(gòu)優(yōu)點(diǎn)是項(xiàng)目架構(gòu)簡(jiǎn)單,開發(fā)周期短,對(duì)于小型項(xiàng)目比較友好,但是全部功能集中在一起的特點(diǎn),對(duì)于大型項(xiàng)目,由于復(fù)雜性的升高,部署頻率會(huì)隨之降低,給開發(fā)擴(kuò)展以及后期維護(hù)帶來很大麻煩。
單體架構(gòu)為了實(shí)現(xiàn)可擴(kuò)展以及可靠,增加負(fù)載均衡,就成為垂直架構(gòu)。后來發(fā)展出的服務(wù)導(dǎo)向架構(gòu)(service-oriented architecture,縮寫 SOA)抽取重用的功能作為組件,通過“服務(wù)”接口的方式提供給系統(tǒng)其他應(yīng)用,基于服務(wù)組件的SOA使得系統(tǒng)更易于維護(hù),大大提高了可重用性,但是由于系統(tǒng)和服務(wù)之間的界限不夠清晰,加上抽取的服務(wù)組件粒度較大,系統(tǒng)與服務(wù)耦合性高,在開發(fā)上需要更多的投入。
作為SOA的升級(jí),微服務(wù)架構(gòu),英文全稱為MICROSERVICES ARCHITECTURE,是一種較新的架構(gòu)思想,微服務(wù)和SOA架構(gòu)都是使用對(duì)外提供接口的方式實(shí)現(xiàn)系統(tǒng)功能,微服務(wù)架構(gòu)在細(xì)粒度上更精細(xì),接口更通用。
1 原理介紹
1.1 微服務(wù)架構(gòu)
2014年,Martin Fowler在其博客文章《Micro Services》首次提出微服務(wù)概念,微服務(wù)圍繞業(yè)務(wù)領(lǐng)域,通過分解功能的方式,將一個(gè)系統(tǒng)分解成一個(gè)或多個(gè)組件,從而實(shí)現(xiàn)獨(dú)立開發(fā)管理,每個(gè)組件被稱為微服務(wù)。每個(gè)微服務(wù)代表一個(gè)小的業(yè)務(wù)能力,微服務(wù)之間松耦合,可被獨(dú)立部署。谷歌、推特等很多互聯(lián)網(wǎng)公司開始使用微服務(wù)架構(gòu)來實(shí)現(xiàn)其業(yè)務(wù)邏輯。
微服務(wù)架構(gòu)模型如圖2所示。
微服務(wù)架構(gòu)下的系統(tǒng)具備如下特點(diǎn):
更靈活:不同微服務(wù)之間的松耦合關(guān)系使得系統(tǒng)的更改對(duì)微服務(wù)影響更小,微服務(wù)可以按需更改;
易開發(fā):不同微服務(wù)可由不同團(tuán)隊(duì)甚至不同編程語言、不同數(shù)據(jù)庫進(jìn)行并行開發(fā),只需對(duì)外提供API服務(wù),提高開發(fā)效率;
易測(cè)試:每個(gè)微服務(wù)可獨(dú)立進(jìn)行部署測(cè)試,降低了部署測(cè)試的難度;
微服務(wù)的缺陷在于業(yè)務(wù)邏輯復(fù)雜的情況下微服務(wù)數(shù)量可能過多,導(dǎo)致服務(wù)治理成本的升高。
1.2 微服務(wù)框架Dubbo
Dubbo作為一個(gè)阿里巴巴自主研發(fā)的一個(gè)分布式服務(wù)化治理框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及提供SOA服務(wù)治理解決方案,自2012年開源以來,深受開發(fā)人員歡迎。
如圖3所示,Provider作為服務(wù)提供者,通過向注冊(cè)中心注冊(cè)的方式暴露服務(wù),并向監(jiān)控中心匯報(bào)調(diào)用時(shí)間,Consumer是調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)者,向注冊(cè)中心訂閱所需服務(wù)。各個(gè)組件名稱及功能如表1所示。
1.3 Kafka消息總線
消息總線關(guān)乎系統(tǒng)內(nèi)實(shí)時(shí)數(shù)據(jù)的轉(zhuǎn)發(fā)性能,對(duì)模塊間交互設(shè)計(jì)具有較為關(guān)鍵的影響。
Kafka由LinkedIn開發(fā),作為一個(gè)高時(shí)效、分布式、支持分區(qū)的和多副本的基于發(fā)布/訂閱的消息系統(tǒng),Kafka具有高吞吐率、可擴(kuò)展、低延遲、容錯(cuò)性等特點(diǎn),可實(shí)時(shí)處理保信主站業(yè)務(wù)中大量的數(shù)據(jù)。其使用場(chǎng)景包括消息系統(tǒng)、日志收集、流式處理。
此外,Kafka消息總線還可以搭配Redis實(shí)時(shí)內(nèi)存數(shù)據(jù)庫,打造出超高性能數(shù)據(jù)處理基礎(chǔ)架構(gòu)。
如圖4所示,Producer是消息的發(fā)送者,Consumer作為消息的消費(fèi)者對(duì)消息進(jìn)行消費(fèi),消息通過Topic進(jìn)行分類保存。
2 基于微服務(wù)架構(gòu)的系統(tǒng)模型
如圖5所示,架構(gòu)采用前后端分離的方式,客戶端命令通過調(diào)用業(yè)務(wù)層微服務(wù)接口進(jìn)行用戶操作以及界面展示。微服務(wù)模塊包含: Kafka消息總線微服務(wù)、模型初始化微服務(wù)、數(shù)據(jù)召喚微服務(wù)、WEB發(fā)布微服務(wù),主動(dòng)上送微服務(wù)、故障歸檔微服務(wù)以及其它各個(gè)業(yè)務(wù)微服務(wù)模塊,此外還有數(shù)據(jù)庫訪問微服務(wù)模塊。不同微服務(wù)之間通過Dubbo框架實(shí)現(xiàn)接口之間的調(diào)用。
考慮到數(shù)據(jù)庫使用場(chǎng)景較多,不同業(yè)務(wù)下均有涉及,而且數(shù)據(jù)之間存在關(guān)聯(lián),本系統(tǒng)選用數(shù)據(jù)共享模式,微服務(wù)之間的數(shù)據(jù)共享在一個(gè)數(shù)據(jù)庫模塊中,供所有微服務(wù)模塊使用。
數(shù)據(jù)庫使用歷史數(shù)據(jù)庫MongoDB+實(shí)時(shí)數(shù)據(jù)庫Redis+模型數(shù)據(jù)庫打造出高性能的數(shù)據(jù)存儲(chǔ)模式,每個(gè)數(shù)據(jù)庫提供相應(yīng)的訪問接口:MongoDB歷史庫訪問微服務(wù),Redis實(shí)時(shí)庫訪問微服務(wù)、關(guān)系型數(shù)據(jù)庫訪問微服務(wù)。歷史庫和實(shí)時(shí)庫之間通過數(shù)據(jù)同步微服務(wù)實(shí)現(xiàn)數(shù)據(jù)的更新同步。
數(shù)據(jù)從子站通過103或者61850通訊協(xié)議發(fā)送到通訊前置,通訊前置將消息發(fā)送Kafka消息總線,由Kafka消息系統(tǒng)進(jìn)行統(tǒng)一發(fā)布、供消息消費(fèi)者訂閱。業(yè)務(wù)處理微服務(wù)進(jìn)行消費(fèi)并通過數(shù)據(jù)庫訪問微服務(wù)接口進(jìn)行數(shù)據(jù)庫操作。
3 結(jié)語
本文對(duì)電力信息系統(tǒng)幾種軟件架構(gòu)方式進(jìn)行了介紹,著重對(duì)微服務(wù)這一架構(gòu)思想進(jìn)行了利弊分析,提出了一種基于微服務(wù)架構(gòu)的繼電保護(hù)故障信息主站系統(tǒng)軟件設(shè)計(jì)方法,系統(tǒng)主要優(yōu)勢(shì)在于易維護(hù)、可擴(kuò)展、高性能,解決了傳統(tǒng)單體架構(gòu)的一些弊端,為微服務(wù)架構(gòu)在電力信息系統(tǒng)中應(yīng)用提供了一些參考。