基於 abp vNext 微服務開發的敏捷應用構建平台 – 框架分析

總體架構

    本平台從技術上採用ABP vNext.NET Core編寫的微服務架構。客戶端層主要以現代瀏覽器為主,適配了PC端和移動端的訪問,採用API和應用程式進行交互,同時提供第三方使用的API,支援通過Web服務或消息代理與其他應用程式集成。數據工廠用於整合數據,將分散數據整合到一起,並進行匯總計算,採用統一數據介面向服務層提供數據支撐。如果您之前了解過數據倉庫技術,就可以把數據工廠理解為ETL工具。應用支撐層採用Docker部署集群,使用 Kubernetes 進行容器編排和集群管理,靜態文件資源使用第三方提供的 CDN 服務進行加速。

  • ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。

微服務概念

    微服務體系架構(簡稱微服務)是開發軟體系統的一種架構風格,該架構試圖集中精力構建具有明確定義的介面和操作的單功能模組。它將應用程式構建為以業務領域為模型的小型自治服務集合。近年來,隨著企業希望變得更加敏捷並朝著DevOps和持續測試邁進,這一趨勢變得越來越流行。

微服務的利與弊

    微服務不是靈丹妙藥,通過微服務的實施,將暴露出團隊溝通、合作以及其它以前可能隱含但現在被迫公開的問題。但是微服務中的API網關可以大大減少構建和品質檢查的時間和精力。微服務體系結構是否適合您取決於您的業務場景複雜度,當業務不複雜,團隊規模不大的時候,單塊架構比微服務架構具有更高的生產率,因為它們各有優缺點。以下是一些優點和缺點:

  • 優點:
    • 微服務架構使開發人員可以自由地獨立開發和部署服務;
    • 可以由相當小的團隊來開發微服務;
    • 易於集成和自動部署(使用開源持續集成工具,例如Jenkis);
    • 易於擴展並與第三方服務集成;
    • 可以使用不同的語言來編寫用於不同服務的程式碼;
    • 故障隔離:如果一個微服務失敗,則另一個將繼續工作。
  • 缺點:
    • 由於分散式部署,測試可能變得複雜;
    • 服務數量的增加可能會導致資訊壁壘;
    • 作為分散式系統,可能會導致重複工作;
    • 當服務數量增加時,整個產品的集成和管理可能會變得複雜;
    • 開發人員必須付出額外的努力來實現服務之間的通訊機制。

系統架構

    微服務層中提供了各種服務,服務之間使用http相互通訊或者通過隊列服務進行調度來支撐整個業務系統。其中基礎服務提供了應用中心、模板中心、表單和流程引擎等功能;數據可視化服務提供數據展示分析包含模板管理、組件管理等功能;二、三維服務提供組件管理、圖層管理、三維模型管理及空間分析等功能;Iot管控服務提供設備接入管理、協議解析、設備網關管理等功能;第三方服務與阿里雲、騰訊雲、華為雲等服務商提供的雲服務功能進行融合,並與釘釘、企業微信集成;系統管理服務提供整體系統管理功能包含租戶管理、功能管理、許可權管理、單點登錄、企業組織管理等功能。同時系統提供統一日誌、消息列隊、定時任務、文件處理等服務。日誌採用ELK(Elasticsearch、Logstash、Kibana)進行管理,Elasticsearch是實時全文搜索和分析引擎,提供搜集、分析、存儲數據三大功能;Logstash是一個用來搜集、分析、過濾日誌的工具;Kibana是一個基於Web的圖形介面,用於搜索、分析和可視化存儲在 Elasticsearch指標中的日誌數據。消息隊列服務主要提供了各類通知消息的推送,使用隊列的方式防止因消息過多導致推送服務過載。定時任務服務主要用於定時提醒、定時推送等功能。文件處理服務主要用於PDF列印、數據文件導入導出和二維碼生成等功能。

持續集成(CI)、自動化構建

    個人理解持續集成是為了配合敏捷開發的速度和效率而產生的一個用於編譯、測試、發布、部署的工具。為什麼叫持續呢?其實就是編碼人員提交了源碼,那麼該工具就可以進行編譯,測試等一系列運作。怎麼能夠讓編碼人員很快的知道編碼的異常。
工作流程: