一、單體架構
單體架構在中等偏小的業務中比較常見,場景模式就是單個應用、單個資料庫。一個程式包(例如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
這樣,本節案例就結束了。