5.6k,又一款接私活神器,值得你擁有!
一、項目介紹
Lamp-Cloud 是一款基于Spring Cloud Alibaba的微服務快速開發平臺,長期位居Gitee企業級開發框架熱榜前五,Star數超8.6k+。項目采用Apache-2.0協議,提供從代碼生成到容器化部署的全生命周期支持,集成多租戶、數據權限、流程引擎等企業級特性,助力開發者快速構建高可用分布式系統,實測微服務開發效率提升3倍。
二、項目特點
- 快速開發:快速CRUD,只需少量配置即可完成單表、主從、樹結構等頁面的增刪改查,節省開發成本,縮短開發周期
- 多種多租戶的解決方案:獨立數據庫、共享數據庫隔離數據架構、共享數據庫共享數據架構等方式
- 前沿的技術:vue3、jdk8、jdk17、jdk21、SpringBoot、SpringCloud、sa-token、hutool等主流版本
- 豐富功能:RBAC權限體系、在線代碼生成器、前后端統一表單校驗、字典回顯、系統配置、自動填充等功能一應俱全
三、應用場景
領域 | 典型應用 | 落地價值 |
SaaS平臺 | 多租戶數據隔離與計費系統 | 某教育SaaS用戶擴容成本降低60% |
供應鏈金融 | 分布式交易與風控系統 | 日處理千萬級訂單無故障運行 |
智慧城市 | 物聯網設備管理平臺 | 支持10萬+設備實時監控 |
醫療云 | 電子病歷共享平臺 | 滿足等保三級數據安全要求 |
新零售 | 全渠道訂單中臺 | 促銷期間系統穩定性達99.99% |
四、功能模塊
1. 核心開發套件
- 代碼生成器:支持DDD領域驅動設計代碼生成
- 多租戶體系:字段級數據隔離(COLUMN模式)
- 灰度發布:基于Nacos的流量染色機制
2. 業務支撐模塊
- 分布式事務:集成Seata AT模式
- 消息中心:支持短信/郵件/企業微信通知
- 文件服務:兼容OSS/MinIO/FastDFS
3. 運維監控體系
- 鏈路追蹤:SkyWalking深度集成
- 健康檢查:Spring Boot Admin面板
- 日志分析:ELK日志聚合方案
4. 擴展能力
- 流程引擎:Activiti 7.0工作流支持
- 規則引擎:Drools集成
- 數據大屏:ECharts數據可視化
五、功能特點
- 開箱即用:預制20+企業通用模塊(用戶/權限/日志等)
- 靈活擴展:模塊化設計,支持功能插件化擴展
- 云原生支持:全鏈路Kubernetes部署方案
- 國產化適配:麒麟OS + 達夢數據庫兼容方案
- 性能卓越:單服務實例支撐5000+ TPS
六、技術架構
1. 四層云原生架構
- 接入層:Spring Cloud Gateway網關集群
- 服務層:Spring Cloud Alibaba微服務集群
- 數據層:MySQL分庫分表 + Redis多級緩存
- 觀測層:Prometheus + Grafana監控告警體系
2. 技術棧
層級 | 核心技術 | 關鍵組件 |
前端框架 | Vue3 + Ant Design Pro | Vite + TypeScript |
后端框架 | Spring Boot 3 + Spring Cloud 2022 | Nacos + Sentinel |
分布式事務 | Seata 1.7 | AT/TCC模式支持 |
消息隊列 | RocketMQ 5.0 | 事務消息/延遲消息 |
容器編排 | Kubernetes 1.26 | Helm Chart部署方案 |
安全體系 | OAuth2.1 + JWT | RBAC+ABAC混合模型 |
七、系統截圖
八、部署指南
1. 后端啟動
(1) 修改配置并編譯項目
① 創建數據庫:根據你使用的數據庫類型,選擇創庫語句
# mysql
CREATEDATABASEIFNOTEXISTS`lamp_none`CHARACTERSET utf8mb4 COLLATE utf8mb4_general_ci;
# oracle
createuser lamp_none identified by lamp_none;
grantcreatesession,createtable,create sequence,createview,resource to lamp_none;
# SQL Server
CREATEDATABASE lamp_none COLLATE Chinese_PRC_CI_AS;
② 導入 sql腳本
向 lamp_none 庫導入 lamp_none.sql。
③ 修改 config/dev/mysql.yml
lamp:
# 修改1:數據庫連接基本信息, 三選一?。。∪x一?。?!不是同時需要三種數據庫?。?!
oracle:&db-oracle
db-type: oracle
validation-query: SELECT 'x' FROM DUAL
filters: stat,wall # druid不支持使用p6spy打印日志,所以采用druid 的 slf4j 過濾器來打印可執行日志
username:'lamp_none'
password:'lamp_none'
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@172.26.3.67:1521:helowin
mysql:&db-mysql
db-type: mysql
validation-query: SELECT 'x'
filters: stat,wall
username:'root'
password:'root'
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/lamp_none?serverTimeznotallow=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoRecnotallow=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&nullCatalogMeansCurrent=true
sqlserver:&db-sqlserver
username:'sa'
password:'1234@abcd'
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://172.26.3.67:1433;DatabaseName=lamp_none
db-type: sqlserver
validation-query: SELECT 'x'
filters: stat,wall
init:
separator: GO
④ 修改 config/dev/redis.yml
lamp:
cache:
type: REDIS
serializerType: jack_son
redis:
ip: 127.0.0.1
port:16379
password:'SbtyMveYNfLzTks7H0apCmyStPzWJqjy'
database:0
⑤ 修改數據庫驅動: 根據使用的數據庫,修改 lamp-public/lamp-database-mode/pom.xml 中的驅動依賴
<!-- mysql 驅動 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
⑥ 修改常量類 Condition.java
publicclassCondition{
/** MySQL、SQL Server 數據庫的 模糊查詢 */
publicstaticfinalStringLIKE=SqlCondition.LIKE;
// /** ORACLE 數據庫的 模糊查詢 */
// public static final String LIKE = SqlCondition.ORACLE_LIKE;
}
⑦ 修改bootstrap.yml
logging.file.path: 日志存放的絕對路徑
logging:
file:
#日志存放的絕對路徑 生產環境,建議修改為絕對路徑
path: ./logs
⑧ 編譯項目, 參考 項目導入 將 lamp-boot 和 lamp-util 同時導入到一個IDEA工作空間, 然后使用 maven 編譯項目
(2) 啟動項目
- 先確保nacos、MySQL、Redis、Seata、 RabbitMQ(可選)、等基礎服務是否啟動成功
- 啟動: BootServerApplication
(3) 驗證是否啟動成功
(4) 訪問以下地址, 能看到Swagger文檔
http://127.0.0.1:18760/doc.html
2. 前端啟動
(1) 環境要求Node.js
- 版本大于 20.2.0pnpm
- 包管理工具.
(2) 下載源碼
# 使git對文件名大小寫敏感
git config core.ignorecase false
# 拉取項目代碼
git clone https://gitee.com/zuihou111/lamp-web.git
cd lamp-web
# 切換分支
git checkout 5.x
# 安裝依賴
pnpminstall--registry=https://registry.npmmirror.com
(3) 修改配置
- 根據自己的需求修改 .env.developmentopen in new window 文件,VITE_PROXY 參數改成跟后端對應的模式
- 根據后端啟動的方式,只需要修改 target 參數,其他參數不需要修改。
- 單體版:配置為后端BootServerApplication類啟動后的端口
- 微服務版:配置為后端GatewayServerApplication類啟動后的端口
# 本地啟動時,代理地址
VITE_PROXY=`{
"cloud":[{
"proxyKey":"/api",
"rewriteBefore":"/api",
"rewriteAfter":"/api",
"target":"http://localhost:18760"
}],
"boot":[{
"proxyKey":"/api/gateway",
"rewriteBefore":"/api/gateway",
"rewriteAfter":"/gateway",
"target":"http://localhost:18760"
},{
"proxyKey":"/api",
"rewriteBefore":"/api/[A-Za-z0-9]+",
"rewriteAfter":"",
"target":"http://localhost:18760"
}]
}
(4) 啟動
啟動命令需要區分后端啟動的是單體模式還是微服務模式。