微服務(wù)開發(fā)平臺(tái)Spring Cloud Blade部署實(shí)踐
原標(biāo)題:微服務(wù)開發(fā)平臺(tái)Spring Cloud Blade部署實(shí)踐
本文介紹使用 Rainbond[1] 快速部署 「Spring Cloud Blade」微服務(wù)平臺(tái)。Spring Cloud Blade 是一個(gè)由商業(yè)級(jí)項(xiàng)目升級(jí)優(yōu)化而來的微服務(wù)架構(gòu),采用Spring Boot 2.7 、Spring Cloud 2021 等核心技術(shù)構(gòu)建,完全遵循阿里巴巴編碼規(guī)范。提供基于 React 和 Vue 的兩個(gè)前端框架用于快速搭建企業(yè)級(jí)的 SaaS 多租戶微服務(wù)平臺(tái)。
關(guān)于 Spring Cloud Blade
采用前后端分離的模式,前端開源兩個(gè)框架: Sword[2] (基于 React、Ant Design)、 Saber[3] (基于 Vue、Element-UI)
后端采用SpringCloud全家桶,并同時(shí)對(duì)其基礎(chǔ)組件做了高度的封裝,單獨(dú)開源出一個(gè)框架: BladeTool[4]
BladeTool 已推送至Maven中央庫,直接引入即可,減少了工程的臃腫,也可更注重于業(yè)務(wù)開發(fā)
集成Sentinel從流量控制、熔斷降級(jí)、系統(tǒng)負(fù)載等多個(gè)維度保護(hù)服務(wù)的穩(wěn)定性。
注冊(cè)中心、配置中心選型Nacos,為工程瘦身的同時(shí)加強(qiáng)各模塊之間的聯(lián)動(dòng)。
極簡封裝了多租戶底層,用更少的代碼換來拓展性更強(qiáng)的SaaS多租戶系統(tǒng)。
借鑒OAuth2,實(shí)現(xiàn)了多終端認(rèn)證系統(tǒng),可控制子系統(tǒng)的token權(quán)限互相隔離。
借鑒Security,封裝了Secure模塊,采用JWT做Token認(rèn)證,可拓展集成Redis等細(xì)顆粒度控制方案。
項(xiàng)目分包明確,規(guī)范微服務(wù)的開發(fā)模式,使包與包之間的分工清晰。
模塊說明 SpringBlade├── blade-auth -- 授權(quán)服務(wù)提供
├── blade-common -- 常用工具封裝包
├── blade-gateway -- Spring Cloud 網(wǎng)關(guān)
├── blade-ops -- 運(yùn)維中心
├ ├── blade-admin -- spring-cloud后臺(tái)管理
├ ├── blade-develop -- 代碼生成
├ ├── blade-resource -- 資源管理
├ ├── blade-seata-order -- seata分布式事務(wù)demo
├ ├── blade-seata-storage -- seata分布式事務(wù)demo
├── blade-service -- 業(yè)務(wù)模塊
├ ├── blade-desk -- 工作臺(tái)模塊
├ ├── blade-log -- 日志模塊
├ ├── blade-system -- 系統(tǒng)模塊
├ └── blade-user -- 用戶模塊
├── blade-service-api -- 業(yè)務(wù)模塊api封裝
├ ├── blade-desk-api -- 工作臺(tái)api
├ ├── blade-dict-api -- 字典api
├ ├── blade-system-api -- 系統(tǒng)api
└── └── blade-user-api -- 用戶api
Spring Cloud Blade 完整部署的服務(wù)拓?fù)鋱D
基于應(yīng)用商店快速部署 Spring Cloud Blade
通過開源應(yīng)用商店部署 Spring Cloud Blade,在 「平臺(tái)管理 -> 應(yīng)用市場(chǎng) -> 開源應(yīng)用商店」中搜索 SpringBlade 并一鍵安裝。
部署完成后,如上圖 「Spring Cloud Blade 完整部署的服務(wù)拓?fù)鋱D」所示。
基于源碼部署 Spring Cloud Blade
本篇文章基于 Spring Cloud Blade v3.5.0[5] 版本部署。
一、部署 Nacos
通過開源應(yīng)用商店部署 Nacos ,在開源應(yīng)用商店中搜索 Nacos單機(jī) 并選擇安裝 2.1.2 版本。
二、部署 Redis
通過開源應(yīng)用商店部署 Redis ,在開源應(yīng)用商店中搜索 Redis 并選擇安裝 5.0.7 版本。
三、部署 Sentinel Dashboard
通過開源應(yīng)用商店部署 Sentinel Dashboard ,在開源應(yīng)用商店中搜索 Sentinel-Dashboard 并選擇安裝 1.8.6 版本。
四、初始化數(shù)據(jù)庫
從開源應(yīng)用商店安裝的 Nacos 自帶了 Mysql 組件,進(jìn)入該組件中 -> 端口 -> 打開對(duì)外服務(wù),通過客戶端工具連接。
創(chuàng)建 blade 數(shù)據(jù)庫。
初始化表結(jié)構(gòu)和數(shù)據(jù): Blade SQL[6]
五、部署 Blade 后端服務(wù)1. 「基于源碼創(chuàng)建組件,填寫以下信息:」
內(nèi)容 組件名稱 自定義 組件英文名稱 自定義 倉庫地址 https://gitee.com/smallc/SpringBlade 代碼版本: Tag v3.5.02. 「檢測(cè)出多模塊構(gòu)建,進(jìn)入多模塊構(gòu)建頁面」
創(chuàng)建前,在多模塊構(gòu)建頁面 -> 右側(cè)修改按鈕 -> 修改每個(gè)模塊的啟動(dòng)命令,如下。
創(chuàng)建后,刪除每個(gè)組件的默認(rèn)端口,為每個(gè)組件添加對(duì)應(yīng)的新端口和端口別名并打開端口的對(duì)內(nèi)服務(wù),如下。
修改完成后構(gòu)建組件。
組件 端口 啟動(dòng)命令 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.jar3. 「編輯依賴關(guān)系,切換到 編排模式 拖動(dòng)組件進(jìn)行依賴關(guān)系建立?!?
4.進(jìn)入 Nacos 組件內(nèi) -> 端口 -> 打開 8848 端口的對(duì)外服務(wù),訪問 Nacos 并登錄,默認(rèn)用戶密碼 nacos/nacos ,創(chuàng)建配置文件。
「創(chuàng)建 blade.yaml 配置文件,內(nèi)容如下:」
#服務(wù)器配置
server:
undertow:
# 以下的配置會(huì)影響buffer,這些buffer會(huì)用于服務(wù)器連接的IO操作,有點(diǎn)類似netty的池化內(nèi)存管理
buffer-size:1024
# 是否分配的直接內(nèi)存
direct-buffers:true
# 線程配置
threads:
# 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會(huì)負(fù)責(zé)多個(gè)連接, 默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程
io:16
# 阻塞任務(wù)線程池, 當(dāng)執(zhí)行類似servlet請(qǐng)求阻塞操作, undertow會(huì)從這個(gè)線程池中取得線程,它的值設(shè)置取決于系統(tǒng)的負(fù)載
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
#對(duì)外暴露端口
management:
endpoints:
web:
exposure:
include:"*"
endpoint:
health:
show-details:always
#knife4j配置
knife4j:
#啟用
enable:true
#基礎(chǔ)認(rèn)證
basic:
enable:false
username:blade
password:blade
#增強(qiáng)配置
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?2022SpringBladeAllRightsReserved
#swagger配置信息
swagger:
title:SpringBlade接口文檔系統(tǒng)
deion:SpringBlade接口文檔系統(tǒng)
version:3.5.0
license:PoweredBySpringBlade
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:請(qǐng)配置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
「創(chuàng)建 blade-dev.yaml 配置文件,內(nèi)容如下:」
#spring配置
spring:
redis:
##redis 單機(jī)環(huán)境配置
host:127.0.0.1
port:6379
password:
database:0
ssl:false
#項(xiàng)目模塊集中配置
blade:
#通用開發(fā)生產(chǎn)環(huán)境數(shù)據(jù)庫地址(特殊情況可在對(duì)應(yīng)的子工程里配置覆蓋)
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
基于源碼創(chuàng)建組件,填寫以下信息:
內(nèi)容 組件名稱 自定義 組件英文名稱 自定義 倉庫地址 https://gitee.com/zhangbigqi/Saber.git 代碼版本 v3.5.0進(jìn)入 Saber 組件內(nèi) -> 端口 -> 刪除默認(rèn)端口,新增 8080 端口并打開對(duì)外服務(wù)。
編輯依賴關(guān)系,切換到 編排模式 拖動(dòng)組件進(jìn)行依賴關(guān)系建立,將 Saber 依賴 blade-gateway 并更新組件。
使用默認(rèn)域名訪問 Saber UI 并登錄。
部署完成后,如上圖 「Spring Cloud Blade 完整部署的服務(wù)拓?fù)鋱D」所示。
Reference Link
[1]
Rainbond: https://www.rainbond.com/docs/micro-service/example/blade
[2]
Sword: https://gitee.com/smallc/Sword
[3]
Saber: https://gitee.com/smallc/Saber
[4]
BladeTool: https://gitee.com/smallc/blade-tool
[5]
Spring Cloud Blade v3.5.0: https://gitee.com/smallc/SpringBlade/tree/v3.5.0/
[6]
Blade SQL: https://gitee.com/smallc/SpringBlade/blob/v3.5.0/doc/sql/blade/blade-saber-mysql.sql
你參與開源嗎?
抽開源中國周邊啦~
END
怎么理解開源世界里的白嫖?
這里有最新開源資訊、軟件更新、技術(shù)干貨等內(nèi)容
點(diǎn)這里 ↓↓↓ 記得 關(guān)注? 標(biāo)星? 哦~返回搜狐,查看更多
責(zé)任編輯:
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由財(cái)神資訊-領(lǐng)先的體育資訊互動(dòng)媒體轉(zhuǎn)載發(fā)布,如需刪除請(qǐng)聯(lián)系。