Spring Cloud Alibaba 實戰(三)
- 架構圖
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. )
4.2 最佳實踐
◆ 職責劃分 ◆ 通用性劃分
4.3 粒度合理
◆ 良好地滿足業務 ◆ 幸福感 ◆ 增量迭代 ◆ 持續演進
-
拆分
-
專案架構圖
5 資料庫設計
5.1 資料表
6 建立小程式
7 前端程式碼 - JavaEdge-miniapp
7.1 安裝Node.js
建議和筆者保持一致
- 前往 <https: nodejs.org en download /> 下載Node.js。
- 建議使用 <https: nodejs.org dist v8.15.0 node-v8.15.0.pkg> 下載 。
- 安裝說明
- macOS作業系統,用pkg直接拖動安裝即可
- macOS作業系統,用pkg直接拖動安裝即可
7.2 修改app資訊
修改 project.config.json
,按需修改如下兩行
"appid": "修改為你的appid"
"projectname": "修改為你的專案名稱,儘量用英文",
其中,appid在 微信公眾平臺 - 開發 - 開發設定中可以找到。
7.3 安裝 & 啟動
安裝專案相關依賴 加速!
npm --registry https://registry.npm.taobao.org install
開發環境啟動部署
npm run dev
生產環境構建
npm run build
7.4 下載 & 安裝微信開發者工具
- 前往 <https: developers.weixin.qq.com miniprogram dev devtools download.html> 下載開發者工具。
- 安裝開發者工具 雙擊安裝即可!
7.5 修改呼叫API地址
找到src/utils/api.js
,找到
// 後端介面基礎路徑
export const BASE_API_URL = '';
將其修改為你的後端地址,例如:
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已內建外掛
在外掛中配置了配置檔案的路徑,覆蓋和輸出詳細日誌三個引數。
除此之外需要特別注意的是 <dependencies>,MBG 配置中用到的所有外部程式碼都必須通過依賴方式配置在這裡,否則執行時會提示找不到對應的類而報錯。這裡有兩個必須的依賴,一個是 JDBC 驅動,另一個是 Mapper 的外掛。
- 下面看配置檔案generatorConfig.xml: 這裡和之前相差不多,只是通過 <properties> 引入了外部屬性檔案,在 <jdbcconnection> 配置時,使用的屬性檔案中的引數。
在 pom.xml 這一級目錄的命令列視窗執行 mvn mybatis-generator:generate即可(前提是配置了mvn)。
- 使用MyBatis Generator生成器時,發現Mapper檔案中出現欄位與連線資料庫不符,經過查詢發現該表是其他資料庫的同名表的欄位。 在構造檔案中,這裡是generatorConfig.xml新增連線資料庫引數如下:
整合Lombok簡化程式碼
- 生成器中整合
9 使用者 & 內容 微服務
業務流程分析
- 架構圖
10 現有架構的問題
- 地址發生變化怎麼辦?
- 如何實現負載均衡?
- 使用者中心掛掉怎麼辦? .
參考
- mpvue
- vant-weapp
- Mapper
- 面向未來微服務:Spring Cloud Alibaba從入門到進階</jdbcconnection></properties></dependencies></https:>&