西域大土豆
一個非常好的問題。推薦Java + Spring Boot,詳細功能組件介紹如下。
Java是主流開發語言,應用普遍,Spring Boot是常用框架,有豐富的組件和易用功能,在電商系統、信息管理系統、各種企業應用開發中處於壟斷地位。
一,系統架構
基本框架可分為接口服務、數據層、異步任務調度、業務處理、日誌監控等幾大模塊。
1,集成ActiveMQ消息隊列,平滑高峰期負載
高峰期時,為了及時處理響應客戶端請求,系統架構中引入ActiveMQ消息隊列,異步處理業務數據,將瞬間高負載平滑,保障運行穩定,架構易擴展。
2,集成Redis緩存系統,提高數據讀寫效率,並支持故障恢復
數據保存到Redis緩存中,和使用內存相比有兩個優點:
1)在架構上支持集群擴展,多個服務器節點時,處理業務邏輯讀寫數據時,通過Redis系統保持一致。
2)在服務重啟或者發生故障時,可以恢復當前處理的業務數據。
3,集成WebSocket,實時更新數據到後臺管理頁面,又不增加服務器負載
如何更新顯示數據或者狀態信息到後臺管理頁面中?有兩個方案可選。
1)定時調用接口,為了及時顯示,定時任務執行頻率會設置的比較高。這樣就帶來兩個問題,首先是增加服務器負載,其次是在沒有新數據時,仍然需要頻繁的調用接口。
2)WebSocket推送數據,業務處理服務在收到新請求或者狀態發生變化時,推送數據到後臺管理頁面,不僅做到了信息實時顯示,而且佔用服務器資源非常少,在多個管理後臺打開頁面時,不額外增加服務器負載。
二,功能組件介紹
1. 數據層,MySQL數據庫,MyBatis持久層,Flyway版本化管理數據庫SQL腳本,Ali Druid連接池等框架。Hibernate是另一個經常使用的持久化框架。
MyBatis Plus對MyBatis做了進一步增強、簡化開發和提高效率,並且提供了簡單易用的代碼生成器。
2. 緩存系統,最常使用Redis,也可選用MongoDB等其他NoSQL數據庫。
3. 異步消息隊列,常用ActiveMQ,RocketMQ,RabbitMQ,Kafka,考慮部署維護的複雜度,根據項目的業務量選擇。
4. JSON數據處理,常用Fastjson,Gson,Jackson,Json-lib,推薦Fastjson。
5. 開發工具包,常用Apache Commons套件,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鏡像自動構建系統。
我是工作多年的Web應用架構師,陸續發佈關於軟件開發方面的文章,歡迎關注我,瞭解更多IT專業知識。
急速馬力快de源碼控
服務開發: Springboot、Spring、SpringMVC\t
服務配置與管理:\tNetflix公司的Archaius、阿里的Diamond等\t
服務註冊與發現:\tEureka、Consul、Zookeeper等\t
服務調用:\tREST、RPC、gRPC\t
服務熔斷器:\tHystrix、Envoy等\t
負載均衡:\tRibbon、Nginx等\t
服務接口調用(客戶端調用服務發簡單工具):\tFeign等\t
消息隊列:\tkafka、RabbitMQ、ActiveMQ等\t
服務配置中心管理:\tSpringCloudConfig、Chef等\t
服務路由(API網關):\tZuul等\t
服務監控:\tZabbix、Nagios、Metrics、Spectator等\t
全鏈路追蹤\t:Zipkin、Brave、Dapper等\t
服務部署\t:Docker、OpenStack、Kubernetes等\t
數據流操作開發包\t:SpringCloud Stream(封裝與Redis,Rabbit、Kafka等發送接收消息)\t
事件消息總線\t:SpringCloud Bus
敏捷導航
目前市面比較流行的有springcloud,dubbo等。個人推薦springcloud