1 概述
1.1 單體架構vs微服務架構
- 單體架構是什麼
- 微服務是什麼
- 微服務特性
- 微服務全景架構圖
- 微服務優缺點
- 微服務適用場景
1.2 業務分析與建模
- 項目功能演示與分析
- 微服務拆分
- 項目架構圖
- 數據庫設計
- API文檔
1.3 編寫微服務
- 建立小程序
- 建立項目
- 編寫用戶微服務
- 編寫內容微服務
2 單體應用
一個歸檔包(例如war包)包含全部功能的應用程序,咱們一般稱爲單體應用。而架構單體應用的方法論就是單體應用架構。html
- 架構圖
2.1 單體架構的優勢
2.2 單體架構的缺點
- 複雜性高
- 部署慢,頻率低
- 擴展能力受限
- 阻礙技術創新
3 微服務
一詞最先來自於Martin Fowler的一篇微服務文章前端
- 翻譯
微服務架構風格是一種將一個單一應用程序開發爲一組小型服務
的方法,每一個服務運行在本身的進程
中,服務間通訊採用輕量級通訊機制
(一般用HTTP資源
API)。這些服務圍繞業務能力構建
而且可經過全自動部署機制獨立部署。這些服務共用一個最小型的集中式的管理
,服務可用不一樣的語言開發
,使用不一樣的數據存儲技術
3.1 特性
- 每一個微服務可獨立運行在本身的進程裏
- 一系列獨立,運行的微服務共同構建起整個系統
- 每一個服務爲獨立的業務開發,一個微服務只關注某個特定的功能,例如訂單管理、用戶管理等
- 可以使用不一樣的語言與數據存儲技術(契合項目情
況和團隊實力)
- 微服務之間經過輕量的通訊機制進行通訊,例如經過REST API進行調用;
- 全自動的部署機制
3.2 全景架構圖
3.3 優勢
- 單個服務更易於開發、維護
- 單個微服務啓動較快
- 局部修改容易部署
- 技術棧不受限
- 按需伸縮
3.4 缺點
3.5 適用場景
3.6 不適用場景
4 微服務拆分
4.1 拆法
◆ 領域驅動設計( Domain Driven Design )◆ 面向對象 ( by name./ by verb. )vue
4.2 最佳實踐
◆ 職責劃分◆ 通用性劃分node
4.3 粒度合理
◆ 良好地知足業務◆ 幸福感◆ 增量迭代◆ 持續演進git
- 拆分
- 項目架構圖
5 數據庫設計
5.1 數據表
6 建立小程序
7 前端代碼 - JavaEdge-miniapp
7.1 安裝Node.js
建議和筆者保持一致github
- 前往
下載Node.js。
- 建議使用
下載 。
- 安裝說明
- macOS操做系統,用pkg直接拖動安裝便可
7.2 修改app信息
修改 project.config.json
,按需修改以下兩行spring
"appid": "修改成你的appid"
"projectname": "修改成你的項目名稱,儘可能用英文",複製代碼
其中,appid在 微信公衆平臺 - 開發 - 開發設置中能夠找到。數據庫
7.3 安裝 & 啓動
安裝項目相關依賴 加速!
npm --registry https://registry.npm.taobao.org install複製代碼
開發環境啓動部署
npm run dev複製代碼
生產環境構建
npm run build複製代碼
7.4 下載 & 安裝微信開發者工具
- 前往
下載開發者工具。
- 安裝開發者工具
雙擊安裝便可!
7.5 修改調用API地址
找到src/utils/api.js
,找到npm
// 後端接口基礎路徑
export const BASE_API_URL = '';複製代碼
將其修改成你的後端地址,例如:json
export const BASE_API_URL = 'http://localhost:8080';複製代碼
7.6 將代碼導入到開發者工具
注意:務必勾選 不校驗合法域名...
。
8 建立項目
8.1 技術選型
- Spring Boot ( 快速迭代開發 )
- Spring MVC ( MVC框架 )
Mybatis ( 持久層框架,操做數據庫 ) +通用Mapper
- Spring Cloud Aliababa ( 分佈式 )
8.3 項目結構設計
8.4 整合框架
8.4.1 MyBatis框架 - 通用Mapper
Spring Boot 集成
8.4.1.1 mapper-spring-boot-starter
在 starter 的邏輯中,若是你沒有使用 @MapperScan 註解,你就須要在你的接口上增長 @Mapper 註解,不然 MyBatis 沒法判斷掃描哪些接口。
須要在全部接口上增長 @Mapper 註解。
- 只須要添加通用 Mapper 提供的 starter 就完成了最基本的集成
- 無需配置文件
4.0 以後,增長了一個 @RegisterMapper 註解,通用 Mapper 中提供的全部接口都有這個註解,有了該註解後,通用 Mapper 會自動解析全部的接口,若是父接口(遞歸向上找到的最頂層)存在標記該註解的接口,就會自動註冊上。所以 4.0 後使用通用 Mapper 提供的方法時,不須要再配置這個參數。
8.4.1.2 @MapperScan 註解配置
- 注意MySQL的配置
8.x帶cj
代碼生成器 - mappergenerator
通用的過於複雜,大多數狀況下使用專業版本便可!
使用該插件能夠很方便的生成實體類、Mapper接口以及對應的XML文件。
本篇文檔就是講述如何在 MBG 中使用該插件。
首先對MBG不太瞭解的能夠先閱讀下面的文檔
Mybatis Geneator 詳解
http://blog.csdn.net/isea533/article/details/42102297
使用 Maven 執行MBG
- SB已內置插件
在插件中配置了配置文件的路徑,覆蓋和輸出詳細日誌三個參數。
除此以外須要特別注意的是
,MBG 配置中用到的全部外部代碼都必須經過依賴方式配置在這裏,不然運行時會提示找不到對應的類而報錯。這裏有兩個必須的依賴,一個是 JDBC 驅動,另外一個是 Mapper 的插件。
- 下面看配置文件generatorConfig.xml:
這裏和以前相差很少,只是經過
引入了外部屬性文件,在
配置時,使用的屬性文件中的參數。
在 pom.xml 這一級目錄的命令行窗口執行 mvn mybatis-generator:generate便可(前提是配置了mvn)。
- 使用MyBatis Generator生成器時,發現Mapper文件中出現字段與鏈接數據庫不符,通過查找發現該表是其餘數據庫的同名表的字段。
在構造文件中,這裏是generatorConfig.xml添加鏈接數據庫參數以下:
整合Lombok簡化代碼
- 生成器中整合
9 用戶 & 內容 微服務
業務流程分析
- 架構圖
10 現有架構的問題
- 地址發生變化怎麼辦?
- 如何實現負載均衡?
- 用戶中心掛掉怎麼辦? .
參考