web集群架構(gòu)
圖-1-架構(gòu)整體圖

圖-2-架構(gòu)詳細圖

1. 客戶端層
- 用戶終端:瀏覽器、移動App、第三方系統(tǒng)通過HTTP/HTTPS協(xié)議接入。
2. 負載均衡層
- Nginx集群:
- 反向代理和負載均衡后端服務(wù)。
- 支持SSL終止和靜態(tài)資源緩存。
- 橫向擴展確保高可用性。
3. 應(yīng)用服務(wù)層
- Spring Boot服務(wù)集群:
- 提供RESTful API接口,處理業(yè)務(wù)邏輯。
- 橫向部署多實例,通過Nginx實現(xiàn)負載均衡。
4. 消息隊列層
- Kafka集群:
- 分區(qū)策略:每個Topic劃分為多個分區(qū)(如
Partition 1
、Partition 2
),通過分區(qū)實現(xiàn)消費者負載均衡。 - 消費設(shè)備數(shù)據(jù):從Fmq集群(MQTT/TCP/UDP服務(wù)集群)接收設(shè)備上報的數(shù)據(jù)。
- 生產(chǎn)者:設(shè)備網(wǎng)關(guān)服務(wù)將數(shù)據(jù)寫入Kafka。
- 消費者:Spring Boot服務(wù)消費Kafka數(shù)據(jù),處理設(shè)備指令、告警等。
- 分區(qū)策略:每個Topic劃分為多個分區(qū)(如
5. 數(shù)據(jù)處理層
- 規(guī)則引擎:
- LiteFlow:負責(zé)場景聯(lián)動規(guī)則執(zhí)行(如設(shè)備聯(lián)動、告警觸發(fā))。
- Ignite:存儲和管理LiteFlow的規(guī)則配置,支持動態(tài)更新。
- 分布式任務(wù)調(diào)度:
- Quartz集群:部署Modbus輪詢?nèi)蝿?wù),通過數(shù)據(jù)庫鎖實現(xiàn)集群模式的任務(wù)協(xié)調(diào)。
6. 緩存與元數(shù)據(jù)層
- 分布式緩存:
- Ignite集群:緩存設(shè)備元數(shù)據(jù)(如設(shè)備ID、狀態(tài)、配置),支持分布式查詢。
- 與Spring Boot集成,提供低延遲的元數(shù)據(jù)訪問。
- Redis主從架構(gòu):(待實現(xiàn)....)
- 主節(jié)點:處理寫操作(如會話狀態(tài)、實時計數(shù)器)。
- 從節(jié)點:處理讀操作,通過哨兵(Sentinel)實現(xiàn)自動故障切換。
7. 數(shù)據(jù)存儲層
- 關(guān)系型數(shù)據(jù)庫:
- MySQL主從架構(gòu):(待實現(xiàn)....)
- 主庫:處理事務(wù)性寫入(如用戶數(shù)據(jù)、設(shè)備配置)。
- 從庫:處理查詢請求,通過Binlog同步數(shù)據(jù)。
- MySQL主從架構(gòu):(待實現(xiàn)....)
- 時序數(shù)據(jù)庫:
- TDengine主從架構(gòu):
- 主節(jié)點:存儲設(shè)備采集的歷史數(shù)據(jù)(如溫度、濕度)。
- 從節(jié)點:提供高性能時序數(shù)據(jù)查詢,支持降采樣和聚合。
- TDengine主從架構(gòu):
8. 設(shè)備接入層
- 協(xié)議網(wǎng)關(guān):
- 支持MQTT/TCP/UDP協(xié)議,對接物理設(shè)備。
- 將設(shè)備數(shù)據(jù)轉(zhuǎn)發(fā)至Kafka集群。
架構(gòu)圖關(guān)鍵設(shè)計
- 高可用性:
- 所有關(guān)鍵組件(Nginx、Kafka、MySQL、Redis等)均采用主從或集群部署。
- 數(shù)據(jù)流向:
- 設(shè)備數(shù)據(jù) → MQTT/TCP/UDP網(wǎng)關(guān) → Kafka → Spring Boot服務(wù) → TDengine/MySQL。
- 規(guī)則引擎和任務(wù)調(diào)度服務(wù)通過Ignite實現(xiàn)狀態(tài)共享。
- 性能優(yōu)化:
- Ignite緩存設(shè)備元數(shù)據(jù),降低MySQL查詢壓力。
- TDengine針對時序數(shù)據(jù)優(yōu)化存儲和查詢效率。
- 擴展性:
- 通過Kafka分區(qū)和Nginx負載均衡實現(xiàn)水平擴展。