史宏杰 朱永亮
摘 要:針對于目前國內(nèi)充電樁服務(wù)平臺的問題,本文對于充電樁共享服務(wù)平臺進行完整的技術(shù)架構(gòu)設(shè)計。從總體方案,存儲系統(tǒng)設(shè)計,備份恢復(fù)設(shè)計三個方面,詳細的闡述了如果構(gòu)建高性能,高并發(fā),穩(wěn)定可靠的分布式平臺。為破解構(gòu)建一個基于O2O模式的公共充電服務(wù)體系,完成一套萬臺級、服務(wù)于O2O充電服務(wù)的線上信息管理系統(tǒng)和千臺級智能網(wǎng)聯(lián)公共充電樁構(gòu)成的線下服務(wù)網(wǎng)絡(luò),提供可行的技術(shù)路徑。
關(guān)鍵詞:充電樁;服務(wù)平臺;分布式系統(tǒng)
1 引言
隨著我國電動汽車保有量的不斷提升,對于充電樁的需求越來越大。但是目前國內(nèi)現(xiàn)有充電服務(wù)企業(yè)規(guī)模較小、充電服務(wù)所需的資源分散、商業(yè)模式創(chuàng)新面臨體制機制約束等原因,我國充電基礎(chǔ)設(shè)施發(fā)展的進程還遠滯后于消費者充電需求,這已成為制約新能源汽車產(chǎn)業(yè)發(fā)展的瓶頸。那么構(gòu)建一套完善的充電樁服務(wù)平臺,并為用戶提供良好的服務(wù)成為當務(wù)之急。
本文介紹了一種充電樁共享服務(wù)平臺的技術(shù)架構(gòu)方案,為解決目前充電樁平臺的問題,提供了可行的路徑。
本項目受張江專項資金“基于互聯(lián)網(wǎng)的電動汽車公共充電服務(wù)網(wǎng)絡(luò)建設(shè)”支持,支持號:201505-JD-C105-061。
2 總體方案設(shè)計
2.1 設(shè)計原則
對于整個新能源后臺系統(tǒng),海量數(shù)據(jù)、高并發(fā)是本系統(tǒng)的特點,其運行穩(wěn)定性和高可用性至關(guān)重要。因此,需要通過高可用性設(shè)計來盡量減少系統(tǒng)的計劃內(nèi)和計劃外停機,并在系統(tǒng)出現(xiàn)故障時及時響應(yīng)、快速恢復(fù),以保障關(guān)鍵數(shù)據(jù)和業(yè)務(wù)系統(tǒng)的運行穩(wěn)定性和可持續(xù)訪問性。
系統(tǒng)在應(yīng)用軟件架構(gòu)設(shè)計中從通信層、消息處理層、業(yè)務(wù)處理層等不同層面通過多種措施和策略的綜合設(shè)計來提高應(yīng)用系統(tǒng)的高可用性和穩(wěn)定性。在數(shù)據(jù)接入部分的設(shè)計中,考慮設(shè)置負載均衡、應(yīng)用軟件分布部署、故障隔離等機制。
2.2 設(shè)計思路
采用成熟、穩(wěn)定的云計算平臺,云平臺支持公有云、混合云、專有云等多種部署方式,提供多數(shù)據(jù)中心容災(zāi)及支持,提供多種安全防護技術(shù),如防止Ddos攻擊等,提供云主機和云服務(wù)的實時監(jiān)控。
采用高效率、大容量的實時消息接入,支持高效率數(shù)據(jù)傳輸及多種通信協(xié)議,如TCP\HTTP\MQTT等協(xié)議,支持大容量數(shù)據(jù)傳輸,久經(jīng)市場考驗,具有線性擴展能力,可以根據(jù)業(yè)務(wù)發(fā)展按需擴展。
采用大容量、線性擴展的分布式數(shù)據(jù)存儲,大容量數(shù)據(jù)支持,按需線性擴展,支持讀、寫分離,支持高效率的讀取和寫入。
采用實時數(shù)據(jù)處理及監(jiān)控平臺,提供零編碼的數(shù)據(jù)分析及模型配置工具,提供實時業(yè)務(wù)數(shù)據(jù)計算及分析能力。
采用分布式服務(wù)框架,提高業(yè)務(wù)的處理能力及重用度,自動服務(wù)注冊及服務(wù)發(fā)現(xiàn),支持應(yīng)用全生命周期管理,構(gòu)建共享業(yè)務(wù)能力中心,提高對業(yè)務(wù)的并發(fā)及大容量處理能力。
2.3 架構(gòu)思路
系統(tǒng)分為數(shù)據(jù)接入層、數(shù)據(jù)處理層、分布式數(shù)據(jù)庫層、數(shù)據(jù)統(tǒng)計分析層、業(yè)務(wù)邏輯層、表現(xiàn)層、軟件系統(tǒng)管理層和云平臺層。
數(shù)據(jù)接入層,主要對接不同廠家的充電樁和運營商平臺,基于阿里負載均衡SLB服務(wù),實現(xiàn)網(wǎng)關(guān)的分布式部署,達到數(shù)據(jù)接入的動態(tài)可擴展及接入服務(wù)穩(wěn)定運行。數(shù)據(jù)處理層,包括對于接收數(shù)據(jù)的解密、解析,并對于數(shù)據(jù)做容錯防錯的處理。基于阿里的消息隊列,實現(xiàn)數(shù)據(jù)的分布式消費和處理。分布式數(shù)據(jù)庫層,基于阿里的DRDS分布式數(shù)據(jù)庫服務(wù),采用表格存儲數(shù)據(jù)庫、RDS關(guān)系數(shù)據(jù)庫和Redis內(nèi)存數(shù)據(jù)庫集群。數(shù)據(jù)統(tǒng)計分析層,實時或者定時的對于充電樁實時數(shù)據(jù)、檔案數(shù)據(jù)或日志數(shù)據(jù)等做統(tǒng)計分析。業(yè)務(wù)邏輯層實現(xiàn)系統(tǒng)要求的主要業(yè)務(wù)功能,包括:充電樁檔案管理、報警管理、報表管理、錯誤信息處理。表現(xiàn)層為瀏覽器端,包括基礎(chǔ)信息展示、運維管理、報警處理、統(tǒng)計分析結(jié)果等其他功能界面。軟件系統(tǒng)管理包括用戶管理、權(quán)限管理、部門管理和安全管理。日志系統(tǒng),包括系統(tǒng)運行日志、用戶操作日志和充電樁數(shù)據(jù)日志的收集、存儲、清洗和分析工作。云平臺,包括云主機、云服務(wù)產(chǎn)品和云安全產(chǎn)品等。
2.4 架構(gòu)特點
架構(gòu)分為四個主要模塊。包括:分布式接口集群,阿里消息隊列,分布式業(yè)務(wù)應(yīng)用集群和分布式數(shù)據(jù)庫集群。
分布式接口集群包括,充電樁數(shù)據(jù)接口服務(wù)、管理平臺接口服務(wù)、數(shù)據(jù)接口服務(wù)。
充電樁數(shù)據(jù)模塊負責與充電樁進行數(shù)據(jù)對接,相關(guān)數(shù)據(jù)日志存入日志系統(tǒng), 充電樁接口模塊技術(shù)特點:單機(4C 8G)支持2萬以上TPS,并發(fā)連接數(shù)10萬以上;無狀態(tài),可以橫向擴展,集群支持的處理能力及并發(fā)連接數(shù)無上限,可在線增加。
Web管理平臺負責用戶使用瀏覽器操作Web管理平臺的功能;第三方系統(tǒng)數(shù)據(jù)接口服務(wù)負責和外部的系統(tǒng)進行數(shù)據(jù)的交換。均由負載均衡服務(wù)SLB和分布式Web接口容器組成。(圖1)
Web應(yīng)用模塊提供4層(TCP協(xié)議)和7層(HTTP協(xié)議)的負載均衡服務(wù)。可以對后端ECS進行健康檢查,自動屏蔽異常狀態(tài)的ECS,待該ECS恢復(fù)正常后自動解除屏蔽。
提供會話保持功能,在Session的生命周期內(nèi),可以將同一客戶端請求轉(zhuǎn)發(fā)到同一臺后端ECS上。
分布式消息隊列集群,支持消息海量堆積,單Topic可堆積100億條以上消息。單條消息默認直達支持256K,最大可到4M。公有云單Topic支持10萬以上TPS,單機支持47萬以上TPS。
分布式業(yè)務(wù)應(yīng)用集群,包括檔案管理服務(wù)、實時數(shù)據(jù)服務(wù)、運營服務(wù)、報警管理服務(wù)和統(tǒng)計分析服務(wù)。該應(yīng)用集群作為系統(tǒng)的核心功能模塊,負責處理從消息隊列獲取的數(shù)據(jù),進行邏輯處理,同時對于數(shù)據(jù)庫進行操作。
存儲模塊負責存儲充電樁實時數(shù)據(jù)以及業(yè)務(wù)相關(guān)的關(guān)系數(shù)據(jù)。采用分布式數(shù)據(jù)服務(wù)。存儲模塊技術(shù)特點,讀寫分離、線性伸縮、應(yīng)用透明;負載均衡、異構(gòu)索引、小表廣播、全局唯一ID等功能特性;采用Redis作為系統(tǒng)的高速緩存服務(wù),分布式部署,提高可用性。
2.5 架構(gòu)說明
架構(gòu)充分利用云基礎(chǔ)設(shè)施平臺服務(wù)(IaaS)、分布式平臺服務(wù)(PaaS)實現(xiàn)平臺的可高用、易擴展優(yōu)勢,實現(xiàn)高并發(fā)的充電樁接入能力。采用消息隊列或者對外接口的方式與大數(shù)據(jù)平臺無縫對接。
擴展性分為,性能擴展和存儲擴展。性能擴展,平臺采用基于公有云的分布式服務(wù)框架,可以動態(tài)快速的根據(jù)業(yè)務(wù)量,進行服務(wù)的平行擴展。存儲擴展,平臺采用基于公有云的分布式數(shù)據(jù)庫服務(wù),可以根據(jù)數(shù)據(jù)存儲的要求做到容量的動態(tài)擴展。
數(shù)據(jù)管理,與大數(shù)據(jù)平臺對接可以采用直接消費消息隊列的方式和采用第三方接口的方式。推薦采用第一種方式,處理更加高效,并且避免產(chǎn)生丟失數(shù)據(jù)的問題。采用表格存儲數(shù)據(jù)庫的特性,數(shù)據(jù)分為熱數(shù)據(jù)和冷數(shù)據(jù),達到數(shù)據(jù)的分層,并通過配置足夠的數(shù)據(jù)庫容量滿足存儲3個月數(shù)據(jù)的需求。實時、歷史、報警、報表等數(shù)據(jù),根據(jù)數(shù)據(jù)的類型存入相應(yīng)的數(shù)據(jù)庫中,并建立主鍵進行關(guān)聯(lián),方便導(dǎo)出。對外接口服務(wù),可以根據(jù)需求調(diào)用這些數(shù)據(jù),提供給第三方。
數(shù)據(jù)接口,采用更加標準的RESTFul接口提供數(shù)據(jù)的對接。分布式的接口服務(wù),可以針對大量的接口調(diào)用,提供很好的服務(wù)性能。接口采用RSA加密的方式加密數(shù)據(jù)。
2.6 系統(tǒng)功能
系統(tǒng)功能包括:檔案管理、實時監(jiān)控、報警處理、遠程控制、訂單管理、報表管理和用戶管理(圖2)。
檔案管理包括,采用關(guān)系數(shù)據(jù)庫存儲檔案數(shù)據(jù),并采用該外鍵關(guān)聯(lián)相關(guān)表。在redis內(nèi)存數(shù)據(jù)庫中,保存相關(guān)數(shù)據(jù)的索引,降低關(guān)系庫的使用頻率,提交系統(tǒng)效率。定義數(shù)據(jù)源類型,以區(qū)分外部系統(tǒng)數(shù)據(jù)。保存數(shù)據(jù)的系統(tǒng)更新時間和版本。
實時監(jiān)控包括,充電樁的最新一條實時數(shù)據(jù),采用存redis中調(diào)用的方式,提高頁面的響應(yīng)速度。充電樁的歷史數(shù)據(jù)從高速的數(shù)據(jù)庫中調(diào)用,并考慮查詢的周期,以控制數(shù)據(jù)量的大小。根據(jù)索引,進行多數(shù)據(jù)源數(shù)據(jù)的組合調(diào)用,獲取頁面需要展示的數(shù)據(jù)。
報警處理包括,實時報警信息存儲于redis和關(guān)系庫中。歷史報警信息存儲于表格存儲中。報警結(jié)束完成后,從關(guān)系庫中同步到表格存儲中。
遠程控制包括,控制指令通過阿里云消息隊列發(fā)往充電樁,可以在充電樁網(wǎng)絡(luò)出現(xiàn)問題時,保證下發(fā)指令的不丟失和補發(fā)。用戶管理模塊對于用分配遠程控制權(quán)限。用戶在遠程控制時,需要輸入密碼進行再次保護。數(shù)據(jù)接口通過SSL通道加密,RSA數(shù)據(jù)加密的方式,提供第三方應(yīng)用進行接口調(diào)用。管理控制流程:從控制指令下發(fā)到充電樁應(yīng)答成功等環(huán)節(jié),記錄所有的消息以及處理邏輯日志。基于公有云強大的服務(wù)性能和應(yīng)用系統(tǒng)微服務(wù)架構(gòu),做到控制指令的時效性滿足系統(tǒng)要求。
訂單管理包括,管理訂單從預(yù)約開始到支付完成的所有狀態(tài)。管理每一個用戶的訂單。訂單進行統(tǒng)計。
報表管理包括,根據(jù)業(yè)務(wù)需求開發(fā)相應(yīng)的統(tǒng)計分析模塊或者大數(shù)據(jù)平臺的spark算法。采用第三方主流的前端控件,美觀并高效的展示統(tǒng)計分析結(jié)果。統(tǒng)計分析數(shù)據(jù)提供web端導(dǎo)出功能和對外的加密數(shù)據(jù)接口。實時數(shù)據(jù)統(tǒng)計分析,可以根據(jù)需求采用定時任務(wù)的方式。統(tǒng)計分析結(jié)果調(diào)用郵件服務(wù)器或者第三方短信接口,進行發(fā)送。
用戶管理包括,關(guān)系數(shù)據(jù)庫建立用戶、角色、權(quán)限、資源、部門表,并進行外鍵關(guān)聯(lián)。用戶管理功能實現(xiàn)用戶建立,所屬部門、角色建立、權(quán)限分配等功能。前端通過session的時效來管理用戶超時登錄。用戶賬號加密存儲于數(shù)據(jù)庫中,賬號密碼可以重置和修改。
3 存儲系統(tǒng)設(shè)計
根據(jù)存儲系統(tǒng)的建設(shè)需求,在全新的云平臺存儲網(wǎng)絡(luò)環(huán)境中,我們采用最新的分布式數(shù)據(jù)庫服務(wù)來建設(shè)公共信息服務(wù)平臺的存儲平臺。
基于分布式服務(wù),采用關(guān)系型數(shù)據(jù)庫RDS用于保存系統(tǒng)的靜態(tài)數(shù)據(jù)和相關(guān)業(yè)務(wù)數(shù)據(jù);采用表格存儲用來存儲海量的充電樁的實時數(shù)據(jù)(圖3)。
采用Redis內(nèi)存數(shù)據(jù)庫作為系統(tǒng)的緩存,用于存儲系統(tǒng)運行過程中公共且使用頻率很高的數(shù)據(jù)??紤]到數(shù)據(jù)分析的效率,在數(shù)據(jù)庫中增加了企業(yè)編號、樁型編號、樁編號和區(qū)域編號作為索引字段。為了避免單表的數(shù)據(jù)量過大,采用分庫分表的方式來進行存儲。并且每個月生成一張新表來保存實時數(shù)據(jù)。
3.1 方案設(shè)計優(yōu)勢
分庫分表:在后端將數(shù)據(jù)表水平拆分到后端的每個數(shù)據(jù)庫中,這些數(shù)據(jù)庫被稱為分庫,對應(yīng)的表稱為分表。由每個分庫負責每一份數(shù)據(jù)的讀寫操作,從而有效的分散了整體訪問壓力。多種貼合OLTP業(yè)務(wù)的拆分方案,讓操作聚焦少量數(shù)據(jù),提升操作效率,利用分布式特性,并行操作選項,超越單機關(guān)系型數(shù)據(jù)庫的操作響應(yīng)時間。
平滑擴容:不影響業(yè)務(wù),靜默完成數(shù)據(jù)庫存儲擴容。
讀寫分離:通過添加只讀實例線性增加數(shù)據(jù)庫讀能力,幫你處理好事務(wù)、備機掛、強制走主實例或只讀實例等各種細節(jié)。
冷熱數(shù)據(jù):利用云平臺表格存儲特性,將三個月以上的數(shù)據(jù)轉(zhuǎn)為冷數(shù)據(jù),并對數(shù)據(jù)進行壓縮處理。統(tǒng)計分析數(shù)據(jù)可在更長時間內(nèi)作為熱數(shù)據(jù)保存。
4 備份恢復(fù)設(shè)計
作為服務(wù)平臺,需要防范可能的災(zāi)難發(fā)生造成的數(shù)據(jù)丟失和系統(tǒng)問題。本系統(tǒng)采用云平臺多可用區(qū)域云服務(wù)和數(shù)據(jù)庫跨地域數(shù)據(jù)容災(zāi)的方式,提供數(shù)據(jù)的可靠性和安全性方面的保障。
多可用區(qū)域云服務(wù)和數(shù)據(jù)庫跨地域數(shù)據(jù)容災(zāi)是指利用技術(shù)、管理手段以及相關(guān)資源確保既定的關(guān)鍵數(shù)據(jù)、關(guān)鍵數(shù)據(jù)處理系統(tǒng)和關(guān)鍵業(yè)務(wù)數(shù)據(jù)備份在與源數(shù)據(jù)不同的位置,并在災(zāi)難發(fā)生后可以恢復(fù)的過程。
4.1 多可用區(qū)實例
云平臺為全世界多個地域提供云計算服務(wù),每個地域(Region)都包含多個可用區(qū)(Zone)。同一個地域下的可用區(qū)都被設(shè)計為相互之間網(wǎng)絡(luò)延遲很?。? ms以內(nèi))以及故障隔離的單元。
云平臺數(shù)據(jù)庫服務(wù)單可用區(qū)主實例運行在同一個可用區(qū)下的兩臺物理服務(wù)器上,可用區(qū)內(nèi)機柜、空調(diào)、電路、網(wǎng)絡(luò)都有冗余。通過異步/半同步的數(shù)據(jù)復(fù)制方式和高效的HA切換機制,為用戶提供了高于物理服務(wù)器極限的數(shù)據(jù)庫可用性。
為了提供比單可用區(qū)實例更高的可用性,支持多可用區(qū)實例(也叫做同城雙機房或者同城容災(zāi)實例)。多可用區(qū)實例將物理服務(wù)器部署在不同的可用區(qū),當一個可用區(qū)(A)出現(xiàn)故障時流量可以在短時間內(nèi)切換到另一個可用區(qū)(B)。整個切換過程對用戶透明,應(yīng)用代碼無需變更。
4.2 跨域容災(zāi)實例
云平臺數(shù)據(jù)庫服務(wù)多可用區(qū)實例的容災(zāi)能力局限在同地域的不同可用區(qū)之間。為了提供更高的可用性,還支持跨地域的數(shù)據(jù)容災(zāi)。用戶可以將地域A的實例A通過數(shù)據(jù)傳輸(Data Transmission)異步復(fù)制到地域B的實例B(實例B是一個完整獨立的實例,擁有獨立的連接地址、賬號和權(quán)限)。
配置了跨域容災(zāi)實例后,當實例A所在地域發(fā)生短期不可恢復(fù)的重大故障時,用戶在另外一個地域的實例B隨時可以進行容災(zāi)切換。切換完成后,用戶通過修改應(yīng)用程序中的數(shù)據(jù)庫連接配置,可以將應(yīng)用請求轉(zhuǎn)到實例B上,進而獲得高于地域極限的數(shù)據(jù)庫可用性。
4.3 備份恢復(fù)策略
平臺存在許多關(guān)鍵應(yīng)用系統(tǒng),其中數(shù)據(jù)構(gòu)成了應(yīng)用系統(tǒng)最重要的信息資產(chǎn),因此,必須建立相應(yīng)的備份和災(zāi)難后快速恢復(fù)機制,以保障重要業(yè)務(wù)的連續(xù)性。
項目采用多可用區(qū)實例方式實現(xiàn)系統(tǒng)數(shù)據(jù)備份和恢復(fù)的方式來解決該問題。
可用區(qū)A和可用區(qū)B在同地域作為生產(chǎn)級的平臺,當用戶訪問的時候隨機訪問到A或B。A和B會同步做數(shù)據(jù)復(fù)制,保證數(shù)據(jù)的一致性。
通過異步復(fù)制的方式將數(shù)據(jù)備份到B可用區(qū)的數(shù)據(jù)庫中,由于網(wǎng)絡(luò)通信延遲的問題,正常情況下備份數(shù)據(jù)庫不對外進行數(shù)據(jù)服務(wù),只是做為備份庫使用。 當可用區(qū)A發(fā)生短期不可恢復(fù)的重大故障時,用戶在可用區(qū)B的實例隨時可以進行容災(zāi)切換。切換完成后,用戶通過修改應(yīng)用程序中的數(shù)據(jù)庫連接配置,可以將應(yīng)用請求轉(zhuǎn)到可用區(qū)B實例上,進而獲得數(shù)據(jù)庫的可用性。
5 結(jié)語
本文對于充電樁共享服務(wù)平臺進行完整的技術(shù)架構(gòu)設(shè)計。從總體方案,存儲系統(tǒng)設(shè)計,備份恢復(fù)設(shè)計三個方面,詳細的闡述了如果構(gòu)建高性能,高并發(fā),穩(wěn)定可靠的分布式平臺。為破解構(gòu)建一個基于O2O模式的公共充電服務(wù)體系,完成一套萬臺級、服務(wù)于O2O充電服務(wù)的線上信息管理系統(tǒng)和千臺級智能網(wǎng)聯(lián)公共充電樁構(gòu)成的線下服務(wù)網(wǎng)絡(luò),提供可行的技術(shù)路徑。
參考文獻:
[1]魏國,商慧杰,朱春波,逯仁貴.電動汽車交流充電樁系統(tǒng)設(shè)計,現(xiàn)代電子技術(shù),2012,(21).
[2]汪子夜.電動汽車充電樁調(diào)度管理系統(tǒng)研究與設(shè)計[D]. 電子科技大學(xué), 2016.
[3]葉冠南.基于GPRS的智能充電樁數(shù)據(jù)管理系統(tǒng)的設(shè)計與實現(xiàn)[D].浙江工業(yè)大學(xué), 2014.
[4]陳良亮,張浩.電動汽車能源供給設(shè)施建設(shè)與發(fā)展探討[j].電力系統(tǒng)自動化,2011,35(14).