本文源碼:GitHub·點這里 || GitEE·點這里
一、單體架構
單體架構在中等偏小的業務中比較常見,場景模式就是單個應用、單個數據庫。一個程序包(例如war格式或者Jar格式)包含所有業務需求功能,這是一種比較傳統的架構風格。
單體架構的缺陷
- 復雜性高,整個項目包含的模塊多,依賴模糊,修改程序容易觸發不可知問題。
- 擴展能力受限,單體應用只能整體進行擴展,無法針對業務模塊的特性進行伸縮。
- 穩定性差,任何微小的問題,都可能導致整個應用服務直接掛掉。
二、微服務架構
微服務架構是一種架構概念,核心思想在於通過將業務功能和需求分解到各個不同的服務中進行管理,實現對業務整體解耦。圍繞業務模式創建應用服務,應用服務可獨立地進行開發、迭代、部署。使項目的架構更加清晰明確。
微服務優劣勢
- 單個服務對應單個業務功能,方便理解,開發,維護;
- 服務獨立部署,可以根據每個服務的請求量來部署滿足需求的規模;
- 數據庫,服務,架構,業務拆分等難度增大,對技術能力要求較高;
三、項目簡介
微服務架構案例核心內容,基於SpringCloud框架幾個核心組件,Eureka服務注冊與發現組件,Feign聲明式的WebService客戶端組件,Zuul動態路由網關組件。進行多個數據管理,多個服務管理搭建,多個中間件集成,多業務拆分等模式,搭建SpringCloud微服務框架的綜合應用案例。
核心模塊
- 業務拆分架構設計
- 多個中間件服務集成
- 微服務下代碼分塊管理
- 多個MySQL數據源管理
四、技術選型
1、核心框架組件
1. 基礎層框架:Spring5+,SpringBoot2+,SpringCloud2+
2. 持久層框架:mybatis,mybatis-plus
3. 開發組件:Druid,Log4j,FastJson,JodaTime,JavaMail
4. 中間件集成:RocketMQ,Redis,Quart,ElasticSearch
5. 數據存儲:MySQL、Redis、ElasticSearch
2、代碼分層結構
五、項目架構
1、架構圖解
2、架構說明
- 客戶端接口服務
1. 用戶端服務接口;
2. 管理端服務接口;
3. 數據入庫服務接口;
4. 數據分析服務接口
- 通用服務接口
1. RocketMQ消息隊列服務 ;
2. ElasticSearch搜索引擎服務 ;
3. Quart定時器服務 ;
4. Redis緩存服務 ;
5. 基礎業務:Token認證服務 ;
6. 基礎業務:MsgBox消息中心服務 ;
- 微服務組件
1. 路由網關:Zuul組件;
2. 服務注冊與發現:Eureka組件;
3. 服務間調用組件:Feign組件;
- 數據存儲容器
MySQL、Redis、ElasticSearch
六、源代碼地址
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile