1. 程式人生 > >Spring Cloud Alibaba 實戰(三)

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直接拖動安裝即可

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 現有架構的問題

  • 地址發生變化怎麼辦?
  • 如何實現負載均衡?
  • 使用者中心掛掉怎麼辦? .

參考