一個非常好的問題。推薦Java+SpringBoot,詳細功能組件介紹如下。
Java是主流開發語言,應用普遍,SpringBoot是常用框架,有豐富的組件和易用功能,在電商系統、信息管理系統、各種企業應用開發中處于壟斷地位。
一,系統架構
基本框架可分為接口服務、數據層、異步任務調度、業務處理、日志監控等幾大模塊。
高峰期時,為了及時處理響應客戶端請求,系統架構中引入ActiveMQ消息隊列,異步處理業務數據,將瞬間高負載平滑,保障運行穩定,架構易擴展。
數據保存到Redis緩存中,和使用內存相比有兩個優點:
1)在架構上支持集群擴展,多個服務器節點時,處理業務邏輯讀寫數據時,通過Redis系統保持一致。
2)在服務重啟或者發生故障時,可以恢復當前處理的業務數據。
如何更新顯示數據或者狀態信息到后臺管理頁面中?有兩個方案可選。
1)定時調用接口,為了及時顯示,定時任務執行頻率會設置的比較高。這樣就帶來兩個問題,首先是增加服務器負載,其次是在沒有新數據時,仍然需要頻繁的調用接口。
2)WebSocket推送數據,業務處理服務在收到新請求或者狀態發生變化時,推送數據到后臺管理頁面,不僅做到了信息實時顯示,而且占用服務器資源非常少,在多個管理后臺打開頁面時,不額外增加服務器負載。
二,功能組件介紹
1.數據層,MySQL數據庫,MyBatis持久層,Flyway版本化管理數據庫SQL腳本,AliDruid連接池等框架。Hibernate是另一個經常使用的持久化框架。
MyBatisPlus對MyBatis做了進一步增強、簡化開發和提高效率,并且提供了簡單易用的代碼生成器。
2.緩存系統,最常使用Redis,也可選用MongoDB等其他NoSQL數據庫。
3.異步消息隊列,常用ActiveMQ,RocketMQ,RabbitMQ,Kafka,考慮部署維護的復雜度,根據項目的業務量選擇。
4.JSON數據處理,常用Fastjson,Gson,Jackson,Json-lib,推薦Fastjson。
5.開發工具包,常用ApacheCommons套件,lang,collections,codec,io等功能庫。
6.異步任務調度,復雜耗時任務,使用Quartz框架異步執行。小型項目可以使用Spring框架自帶的Schedule。
7.單元測試JUnit+Mockit,覆蓋功能函數,保障代碼質量。
8.日志系統,集成LogBack,接入LogStash配合ELK分析處理。
9.服務監控,使用Actuator等框架實現運行信息收集和報警,配合圖像化展示工具,比如Prometheus+Grafana+AlertManager
10.Swagger接口文檔,將代碼和文檔融合一體,在修改代碼的同時維護文檔。
11.Postman接口調試工具,導出腳本文件方便團隊協作,并且可以自動化運行。
三,功能組件列表
四,部署運維
推薦使用Docker容器,啟動本地開發環境,自動化運維部署。阿里云容器鏡像服務+Git+Docker鏡像自動構建系統。