平臺技術架構設計文檔_第1頁
平臺技術架構設計文檔_第2頁
平臺技術架構設計文檔_第3頁
平臺技術架構設計文檔_第4頁
平臺技術架構設計文檔_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

平臺架構設計文檔

1總體架構

設備狀態分析與診斷平臺整體技術架構由下至上分為5層:邊緣

層、聚合層、數據層、應用層、用戶層。邊緣層負責將采集器的數據

上傳到匯聚層,匯聚層負責與各廠邊緣側的通訊,并將消息落地。數

據層是整體架構的核心和關鍵,負責數據的存儲、計算。應用層負責

應用后端邏輯,用戶層負責和用戶的前端交互邏輯。整體技術架構如

下圖:

2技術方案

2.1邊緣層

邊緣層采集程序使用.NET開發,部署在Windows服務器上,通

過TCP協議與采集器通訊,每個采集器最多可連接8個傳感器。

采集程序將數據基于ProtoBuf吩式進行編碼,并通過MQTT協

議上傳到聚合層網關。MQTT協議采用Level1(AtLeastOnce)的

QoSo當網絡出現故障時,可自動重試。

2.2聚合層

聚合層使用開源免費的EMQXBroker作為MQTT的接收端,部

署在Linux服務器上,通過集群部署保障高可用。

使用開源免費的Kafka作為消息持久化層,部署在Linux服務器

上,通過集群部署保障高可用。

開發MQTT接收程序,通過集群方式部署到KafkaConnect上,

接收EMQXBroker中的數據,并寫入到Kafka集群中。

開發消息消費者程序,通過集群方式部署到KafkaConnect上,

讀取Kafka集群中的數據,并解析、加工、轉換、最終寫入到

InfluxDB中。

,、(./01111Ml產

J日一?W瑞I—JKafkaBrokerKafka

[DwiowonBrok.connectorConsumer

2.3數據層

數據層是平臺的核心,在數據層部署三種不同的數據庫,來應對

不同類型的工作負載。

>時序數據庫(TimeSeriesDatabase)

在Linux服務器上部署InfluxDB集群,處理時序數據。聚合層

的所有數據均作為原始數據層(OperationalDataStore)首先寫入到

InfluxDB中。

>關系數據庫

在Linux服務器上部署MySQL主從集群,存儲用戶、角色、權

限、組織機構等基礎信息,以及字典、流程、報警等業務信息。

>列式存儲數據庫

在Linux服務器上部署ClickHouse主從集群,匯聚所有數據。列

式存儲數據庫具有極高的查詢性能,其數據一般不允許修改。

數據層的數據首先由Ka住a進入到InfluxDB集群中,批處理作

業讀取InfluxDB中的設備信息和MySQL中的配置信息進行分析診

斷,并將分析診斷結果寫入到Kafka中,應用層消費診斷信息。

根據業務需要,InfluxDB中只保留1~2年的數據,歷史數據均

歸檔到列式存儲數據庫ClickHouse中。

2.4應用層

應用層負責應用后端邏輯,基于SpringBoot開發,使用微服務架

構。包括消息接收處理、基礎字典維護、用戶查詢等后端邏輯。

2.4.1開發語言

采用目前使用最廣泛的JAVA8版本。

Javaversionsusedin2017

2.4.2組件庫

應用層采用以SpringFramework為核心的組件庫。組件選型如

下:

用途選型

基礎庫Spring

持久化MyBatis+SpringDataCommon

安全ApacheShiro

WebServiceCXF

日志slf4j+logback

MVC框架SpringMVC

定時任務SpringSchedule+Redis/zookeeper(分布式鎖)

緩存SpringCache+Redis

批處理SpringBatch

數據庫連接池Druid

工作流Activiti

單元測試JUnit+AssertJ

數據校驗HibernateValidator

JsonJacksonJson

XMLJDK自帶JAXB

Office文檔Aspose

通用功能GoogleGuava/ApacheCommons

分布式服務Dubbo

2?5用戶層

用戶層負責前端交互邏輯。針對報表、字典維護等管理類操作場

景,采用Web前端。對于大量數據操作、查詢的操作類場景,采用

桌面前端。

2.5.1Web前端

前端技術棧使用單頁面應用架構(SinglePageApplication),基于

MVVM模式開發,技術棧如下:

>開發語言:TypeScript

>代碼質量:ESLint

>打包構建:webpack4

>前端模板:handlebars

>依賴管理:npm5

>基礎框架:JQuery

>輔助類庫:Lodash

>UI組件庫:KendoUI

>開發環境:VSCode

252桌面前端

桌面前端采用WPF技術,基于MVVM模式開發,技術棧如

下:

>開發語言C#

>依賴管理:nuget

>打包構建:msbuild

>UI組件庫:DevExpress

3安全方案

3.1基礎設施安全

使用云平臺部署,充分利用云平臺已有安全解決方案。

3.2網絡安全

將平臺服務器和數據庫隔離在企業內部網絡之中,對外僅開放瀏

覽器需要訪問的https端口。另外,通過https協議與客戶端進行加密

的數據傳輸,以防止數據包被竊取。

邊緣側與聚合層通訊要啟用MQTT協議的安全策略。

3.3操作系統安全

選擇安全性更高的操作系統,如Linux,升級所有必要的補丁,

堵住任何潛在的操作系統漏洞。

具體安全實施辦法:

服務器安全一:從基本做起,及時安裝系統補丁。避免漏洞被蓄

意攻擊利用,是服務器安全最重要的保證之一。

服務器安全二:安裝和設置防火墻。采用訪問白名單方式,僅開

放必要的端口,對服務器安全而言,安裝防火墻非常必要,防火墻對

于非法訪問具有很好的預防作用。

服務器安全三:關閉不需要的服務和端口。服務器操作系統在安

裝時,會啟動一些不需要的服務,這樣會占用系統的資源,而且也會

增加系統的安全隱患。對于一段時間內完全不會用到的服務器,可以

完全關閉;對于期間要使用的服務器,也應該關閉不需要的服務,如

Telnet等。另外,還要關掉沒有必要開的TCP端口。

服務器安全四:定期對服務器進行備份。為防止不能預料的系統

故障或用戶不小心的非法操作,必須對系統進行安全備份。除了對全

系統進行每月一次的備份外,還應對修改過的數據進行每周一次的備

份。同時,應該將修改過的重要系統文件存放在不同服務器上,以便

出現系統崩潰時,可以及時地將系統恢復到正常狀態。

服務器安全五:賬號和密碼保護。賬號和密碼保護可以說是服務

器系統的第一道防線,建議設置8位以上數字+字符+特殊符號的密

碼,回收root用戶權限,創建新用戶進行服務部署。

3.4數據庫安全

及時更新數據庫的安全補丁,采用嚴格的用戶管理策略,禁用無

關的用戶。嚴格控制數據庫用戶的權限,確保每個數據庫用戶只能訪

問其需要訪問的資源。數據庫關閉一切不必要的遠程管理、訪問服

務。采用合適的數據庫備份策略,定期檢查數據庫的健康狀態。

3.5應用安全

351用戶身份認證

身份驗證的目的是增強微服務和保證微服務之間的通信安全。

>提供給網關一個統一的認證入口。

>提供微服務通信的統一的用戶session保證。

>提供token管理,用來生成token,存儲token,撤銷token.

認證體系由以下內容組成:

>認證服務器,即專門用來處理認證的服務器。

>資源服務器,即存放用戶生成的費源的服務器。它與認證服

務器,可以是同一臺服務器,也可以是不同的服務器。資源

服務器主要指平臺中的一個個微服務。

工作流流程:認證流程包含三個階段,授權階段,鑒權階段和

使用階段。

授權階段:

>資源擁有者根據用戶名和密碼,調用授權服務器。

>授權服務器校驗用戶名和密碼,生成對應的token返回給客

戶端,并將token存儲下來,用于之后的鑒權。

>客戶端將token存儲在本地,用于之后每次請求的鑒權。

鑒權階段

>客戶端根據本地的token請求資源。

>網關將根據token去授權服務器鑒權。

>授權服務器將網關傳來的token和存儲的token進行對比,來

確定本次操作是否是合法的。

使用階段

>鑒權通過,網關將token轉化成包含用戶信息的JWTtoken,

并將JWTtoken傳給資源服務器。

>資源服務器根據JWTtoken解析成用戶信息,執行資源操

作。

3.5.2XSS攻擊防范策略

XSS(CrossSiteScripting),跨站腳本攻擊。XSS是常見的Web攻

擊技術之一.所謂的跨站腳本攻擊指得是:惡意攻擊者往Web頁面里注

入惡意Script代碼,用戶瀏覽這些網頁時;就會執行其中的惡意代

碼,可對用戶進行盜取cookie信息、會話劫持等各種攻擊。

解決方案:

1.輸入過濾。對用戶輸入的數據做一定的過濾。如輸入的數據是

否符合預期的格式,比如日期格式,Email格式,電話號碼格式等

等。這樣可以初步對XSS漏洞進行防御。上面的措施只在web端做

了限制,攻擊者通過抓包工具如Fiddler還是可以繞過前端輸入的限

制,修改請求注入攻擊腳本。因此,后臺服務器需要在接收到用戶輸

入的數據后,對特殊危險字符進行過濾或者轉義處理,然后再存儲到

數據庫中。

2.輸出編碼。服務器端輸出到瀏覽器的數據,可以使用系統的安

全函數來進行編碼或轉義來防范XSS攻擊。

3.安全編碼。開發需盡量避免Web客戶端文檔重寫、重定向或

其他敏感操作,同時要避免使用客戶端數據,這些操作需盡量在服務

器端使用動態頁面來實現。

3.5.3SQL注入防范

SQL注入攻擊指的是通過構建特殊的輸入作為參數傳入Web應

用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL

語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾

用戶輸入的數據,致使非法數據侵入系統。

SQL注入的防范,需要規范程序開發,由統一的入口執行傳入

參數到SQL語句的綁定。

在系統后臺代碼框架中,我們要求所有開發人員務必做到以下兩

/占、、、-?

L業務層代碼,所有SQL操作均需要使用持久層框架Mybatiso

2?框架層代碼,如果需要使用底層JDBC,所有SQL操作均需要

使用PreparedStatemento

3.5.4高強度加密

不可逆加密:密碼保存等需要執行單向加密算法的地方,使用

MD5加密。

MD5的全稱是Message-DigestA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論