简介
在企业版文档中,需要配合企业版4.x系列的数据源模式、字段模式进行使用。
4.x_java17 分支的源码使用的是 4.x 系列的非租户模式。
3.x 版本文档仍然需要阅读 https://www.kancloud.cn/zuihou/zuihou-admin-cloud
本文档的密码需要购买企业版后方可获取。
一、名字由来
在一个夜黑风高的晚上,小孩吵着要出去玩,于是,我和程序员老婆一起带小孩出去遛弯。路上讨论给项目改名,在双方想出的名字都被对方否决后,我俩都陷入了沉思。走着走着,走到一盏路灯下,小孩指着路灯打破宁静,喊出“灯灯~灯灯~” ,我和媳妇愣了一下,然后对视一眼,一同说道:“哈哈,这个名字好”
二、项目简介
她是基于 jdk
、SpringCloud
、SpringBoot
开发的微服务中后台快速开发平台,专注于多租户 (SaaS架构) 解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现大租户嵌套小租户隔离、数据库隔离、字段隔离、 无租户隔离 等几种模式。
她拥有RBAC、网关统一鉴权、Xss防跨站攻击、代码自动生成、多种存储系统、分布式事务、分布式定时任务等功能,支持多业务系统、多服务并行开发,可以作为Java Web项目的开发脚手架。代码优美,注释齐全,架构清晰,非常适合学习和企业作为基础框架使用。
核心技术采用Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中间件。希望能努力打造一套从 JavaWeb基础框架
- 分布式微服务架构
- 持续集成
- 系统监测
的解决方案。本项目旨在实现基础能力,不涉及具体业务。
三、项目组成
灯灯(简称灯, 英文名:lamp),她是一个项目集,由工具集、后端、前端组成,如图:
为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:
工具集
项目 | Gitlab | 备注 |
---|---|---|
lamp-util | lamp-util-pro | 核心工具集 |
lamp-job | lamp-job-pro | 分布式定时调度器 |
后端
项目 | datasource模式(gitlab) | column模式(gitlab) | none模式(gitlab) | 备注 |
---|---|---|---|---|
lamp-cloud | lamp-cloud-pro | lamp-cloud-pro | lamp-cloud-pro | 微服务版 |
lamp-boot | lamp-boot-pro | lamp-boot-pro | lamp-boot-pro | 单体版 |
项目 | none模式(gitee) | none模式(github) | 备注 |
---|---|---|---|
lamp-cloud | lamp-cloud | lamp-cloud | 微服务版 |
lamp-boot | lamp-boot | lamp-boot | 单体版 |
前端
项目 | gitee | 备注 | 演示地址 |
---|---|---|---|
lamp-web-pro | lamp-web-pro | 基于 vue-vben-admin (vue 3 + ant design vue 3) | https://datasource.tangyh.top |
四、lamp 租户模式介绍
灯灯可以使用租户模式和非租户模式,其中租户模式支持独立数据库(DATASOURCE模式)、共享数据架构(COLUMN模式)。
租户模式 | 描述 | 优点 | 缺点 | 对应的后端项目 |
---|---|---|---|---|
NONE 非租户模式 | 没有租户 | 简单、适合独立系统 | 缺少租户系统的优点 | lamp-cloud-pro-none lamp-boot-pro-none lamp-cloud lamp-boot |
COLUMN 字段模式 | 租户共用一个数据库,在业务表中增加字段来区分 | 简单、不复杂、开发无感知 | 数据隔离性差、安全性差、数据备份和恢复困难、 | lamp-cloud-pro-column lamp-boot-pro-column |
DATASOURCE 独立数据源 | 每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 | lamp-cloud-pro-datasource-column lamp-boot-pro-datasource-column |
DATASOURCE_COLUMN 独立数据源+字段模式 | 每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源,在动态拼接 子租户id 二次隔离 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小门店形式 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 | lamp-cloud-pro-datasource-column lamp-boot-pro-datasource-column |
五、演示地址
- 3.x : 下载源码,切换到master或java17分支,自行本地启动查看
- 4.x 非租户模式: 点我
❗️❗️❗️若评论区无法显示,请使用"手机热点"或"科学上网"。