本文介紹使用 Rainbond 快速部署 Spring Cloud Blade 微服務平臺。Spring Cloud Blade 是一個由商業級專案升級最佳化而來的微服務架構,採用Spring Boot 2.7 、Spring Cloud 2021 等核心技術構建,完全遵循阿里巴巴編碼規範。提供基於 React 和 Vue 的兩個前端框架用於快速搭建企業級的 SaaS 多租戶微服務平臺。
關於 Spring Cloud Blade
- 採用前後端分離的模式,前端開源兩個框架:Sword (基於 React、Ant Design)、Saber (基於 Vue、Element-UI)
- 後端採用SpringCloud全家桶,並同時對其基礎元件做了高度的封裝,單獨開源出一個框架:BladeTool
- BladeTool 已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重於業務開發
- 整合Sentinel從流量控制、熔斷降級、系統負載等多個維度保護服務的穩定性。
- 註冊中心、配置中心選型Nacos,為工程瘦身的同時加強各模組之間的聯動。
- 極簡封裝了多租戶底層,用更少的程式碼換來擴充性更強的SaaS多租戶系統。
- 借鑑OAuth2,實現了多終端認證系統,可控制子系統的token許可權互相隔離。
- 借鑑Security,封裝了Secure模組,採用JWT做Token認證,可擴充整合Redis等細顆粒度控制方案。
- 專案分包明確,規範微服務的開發模式,使包與包之間的分工清晰。
模組說明
SpringBlade
├── blade-auth -- 授權服務提供
├── blade-common -- 常用工具封裝包
├── blade-gateway -- Spring Cloud 閘道器
├── blade-ops -- 運維中心
├ ├── blade-admin -- spring-cloud後臺管理
├ ├── blade-develop -- 程式碼生成
├ ├── blade-resource -- 資源管理
├ ├── blade-seata-order -- seata分散式事務demo
├ ├── blade-seata-storage -- seata分散式事務demo
├── blade-service -- 業務模組
├ ├── blade-desk -- 工作臺模組
├ ├── blade-log -- 日誌模組
├ ├── blade-system -- 系統模組
├ └── blade-user -- 使用者模組
├── blade-service-api -- 業務模組api封裝
├ ├── blade-desk-api -- 工作臺api
├ ├── blade-dict-api -- 字典api
├ ├── blade-system-api -- 系統api
└── └── blade-user-api -- 使用者api
Spring Cloud Blade 完整部署的服務拓撲圖
基於應用商店快速部署 Spring Cloud Blade
透過開源應用商店部署 Spring Cloud Blade,在 平臺管理 -> 應用市場 -> 開源應用商店 中搜尋 SpringBlade
並一鍵安裝。
部署完成後,如上圖 Spring Cloud Blade 完整部署的服務拓撲圖 所示。
基於原始碼部署 Spring Cloud Blade
本篇文章基於 Spring Cloud Blade v3.5.0 版本部署。
一、部署 Nacos
透過開源應用商店部署 Nacos
,在開源應用商店中搜尋 Nacos單機
並選擇安裝 2.1.2
版本。
二、部署 Redis
透過開源應用商店部署 Redis
,在開源應用商店中搜尋 Redis
並選擇安裝 5.0.7
版本。
三、部署 Sentinel Dashboard
透過開源應用商店部署 Sentinel Dashboard
,在開源應用商店中搜尋 Sentinel-Dashboard
並選擇安裝 1.8.6
版本。
四、初始化資料庫
從開源應用商店安裝的 Nacos
自帶了 Mysql
元件,進入該元件中 -> 埠 -> 開啟對外服務,透過客戶端工具連線。
- 建立
blade
資料庫。 - 初始化表結構和資料:Blade SQL
五、部署 Blade 後端服務
1.基於原始碼建立元件,填寫以下資訊:
內容 | |
---|---|
元件名稱 | 自定義 |
元件英文名稱 | 自定義 |
倉庫地址 | https://gitee.com/smallc/SpringBlade |
程式碼版本: Tag | v3.5.0 |
2.檢測出多模組構建,進入多模組構建頁面
- 建立前,在多模組構建頁面 -> 右側修改按鈕 -> 修改每個模組的啟動命令,如下。
- 建立後,刪除每個元件的預設埠,為每個元件新增對應的新埠和埠別名並開啟埠的對內服務,如下。
- 修改完成後構建元件。
元件 | 埠 | 啟動命令 |
---|---|---|
blade-auth | 8100 | web: java $JAVA_OPTS -jar blade-auth/target/blade-auth.jar |
blade-gateway | 80 | web: java $JAVA_OPTS -jar blade-gateway/target/blade-gateway.jar |
blade-admin | 7002 | web: java $JAVA_OPTS -jar blade-ops/blade-admin/target/blade-admin.jar |
blade-develop | 7007 | web: java $JAVA_OPTS -jar blade-ops/blade-develop/target/blade-develop.jar |
blade-report | 8108 | web: java $JAVA_OPTS -jar blade-ops/blade-report/target/blade-report.jar |
blade-resource | 8010 | web: java $JAVA_OPTS -jar blade-ops/blade-resource/target/blade-resource.jar |
blade-swagger | 18000 | web: java $JAVA_OPTS -jar blade-ops/blade-swagger/target/blade-swagger.jar |
blade-desk | 8105 | web: java $JAVA_OPTS -jar blade-service/blade-desk/target/blade-desk.jar |
blade-log | 8103 | web: java $JAVA_OPTS -jar blade-service/blade-log/target/blade-log.jar |
blade-system | 8106 | web: java $JAVA_OPTS -jar blade-service/blade-system/target/blade-system.jar |
blade-user | 8102 | web: java $JAVA_OPTS -jar blade-service/blade-user/target/blade-user.jar |
3.編輯依賴關係,切換到 編排模式
拖動元件進行依賴關係建立。
4.進入 Nacos
元件內 -> 埠 -> 開啟 8848
埠的對外服務,訪問 Nacos 並登入,預設使用者密碼 nacos/nacos
,建立配置檔案。
建立 blade.yaml
配置檔案,內容如下:
#伺服器配置
server:
undertow:
# 以下的配置會影響buffer,這些buffer會用於伺服器連線的IO操作,有點類似netty的池化記憶體管理
buffer-size: 1024
# 是否分配的直接記憶體
direct-buffers: true
# 執行緒配置
threads:
# 設定IO執行緒數, 它主要執行非阻塞的任務,它們會負責多個連線, 預設設定每個CPU核心一個執行緒
io: 16
# 阻塞任務執行緒池, 當執行類似servlet請求阻塞操作, undertow會從這個執行緒池中取得執行緒,它的值設定取決於系統的負載
worker: 400
#spring配置
spring:
cloud:
sentinel:
eager: true
devtools:
restart:
log-condition-evaluation-delta: false
livereload:
port: 23333
#feign配置
feign:
sentinel:
enabled: true
okhttp:
enabled: true
httpclient:
enabled: false
#對外暴露埠
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
#knife4j配置
knife4j:
#啟用
enable: true
#基礎認證
basic:
enable: false
username: blade
password: blade
#增強配置
setting:
enableSwaggerModels: true
enableDocumentManage: true
enableHost: false
enableHostText: http://localhost
enableRequestCache: true
enableFilterMultipartApis: false
enableFilterMultipartApiMethodType: POST
language: zh-CN
enableFooter: false
enableFooterCustom: true
footerCustomContent: Copyright © 2022 SpringBlade All Rights Reserved
#swagger配置資訊
swagger:
title: SpringBlade 介面文件系統
description: SpringBlade 介面文件系統
version: 3.5.0
license: Powered By SpringBlade
licenseUrl: https://bladex.vip
terms-of-service-url: https://bladex.vip
contact:
name: smallchill
email: smallchill@163.com
url: https://gitee.com/smallc
#blade配置
blade:
token:
sign-key: 請配置32位簽名提高安全性
xss:
enabled: true
skip-url:
- /weixin
secure:
skip-url:
- /test/**
client:
- client-id: sword
path-patterns:
- /sword/**
- client-id: saber
path-patterns:
- /saber/**
tenant:
column: tenant_id
tables:
- blade_notice
建立 blade-dev.yaml
配置檔案,內容如下:
#spring配置
spring:
redis:
##redis 單機環境配置
host: 127.0.0.1
port: 6379
password:
database: 0
ssl: false
#專案模組集中配置
blade:
#通用開發生產環境資料庫地址(特殊情況可在對應的子工程裡配置覆蓋)
datasource:
dev:
url: jdbc:mysql://127.0.0.1:3306/blade?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8
username: root
password: root
更新或重啟除 Nacos
Mysql
Redis
Sentinel Dashboard
之外的所有元件。
六、部署 Blade 前端 Saber
- 基於原始碼建立元件,填寫以下資訊:
內容 | |
---|---|
元件名稱 | 自定義 |
元件英文名稱 | 自定義 |
倉庫地址 | https://gitee.com/zhangbigqi/Saber.git |
程式碼版本 | v3.5.0 |
- 進入
Saber
元件內 -> 埠 -> 刪除預設埠,新增8080
埠並開啟對外服務。 - 編輯依賴關係,切換到
編排模式
拖動元件進行依賴關係建立,將Saber
依賴blade-gateway
並更新元件。 - 使用預設域名訪問
Saber UI
並登入。
部署完成後,如上圖 Spring Cloud Blade 完整部署的服務拓撲圖 所示。