# 项目体验地址
- 4.x企业版(数据源模式): 体验地址 (opens new window)
- 4.x企业版(字段模式): 体验地址 (opens new window)
- 4.x企业版(非租户模式): 体验地址 (opens new window)
- 3.x开源版 体验地址 (opens new window)
- 3.x开源版 体验地址 (opens new window)
# 模式区别
租户模式 | 描述 | 优点 | 缺点 |
---|---|---|---|
NONE(非租户模式) | 非租户模式:没有租户 | 简单、适合独立系统 | 缺少租户系统的优点 |
COLUMN(字段模式) | 共享数据库,共享数据架构:租户共用一个数据库,在业务表中增加字段来区分 | 简单、不复杂、开发无感知 | 数据隔离性差、安全性差、数据备份和恢复困难、 |
SCHEMA(独立schema) | 共享数据库,隔离数据架构:每个租户独立一个 数据库(schema),执行sql时,动态在表名前增加schema | 简单、开发无感知、数据隔离性好 | 配置文件中必须配置数据库的root账号、不支持复杂sql和 sql嵌套自定义函数 |
DATASOURCE(独立数据源) | 独立数据库:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
DATASOURCE_COLUMN(独立数据源+字段模式) | 先独立数据库隔离租户,在按字段隔离门店等:每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源,在动态拼接 子租户id 二次隔离 | 可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小门店形式 | 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
注意:请勿将 租户隔离 和 数据权限 混为一谈。
# 项目名由来
在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆
一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,大家陷入了沉思。 走着走着,在一盏路灯下,小孩指着前方的路灯打破宁静,喊出:灯灯~
我和媳妇相视一笑,然后一起说:哈哈,就用这个名字!!!
# 简介
lamp-cloud
是基于jdk11/jdk8
+ SpringCloudAlibaba
+ SpringCloud
+ SpringBoot
开发的微服务中后台快速开发平台,专注于多租户(SaaS架构)解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现插拔式 数据库隔离、SCHEMA隔离、字段隔离 等租户隔离方案。
她拥有自研RBAC(基于租户应用的角色权限控制体系)、网关统一鉴权、数据权限、优雅缓存解决方案、防缓存击穿、前后端统一表单校验、字典数据自动回显、可视化前后端代码生成器、支持多种文件存储、支持多种短信邮件发送接口、灰度发布、防XSS攻击、防SQL注入、分布式事务、分布式定时任务等功能; 支持多业务系统并行开发, 支持多服务并行开发,是中后台系统开发脚手架的最佳选择。
lamp-cloud 代码简洁,注释齐全,架构清晰,非常适合个人学习以及中小企业作为基础框架使用。采用Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中间件。 本项目旨在实现基础框架能力,不涉及具体业务。
灯灯(简称灯, 英文名:lamp),她是一个项目集,由"工具集"、"后端"、"前端"组成,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:
# 工具集
项目 | gitee | github | 备注 |
---|---|---|---|
lamp-util | lamp-util (opens new window) | lamp-util (opens new window) | 核心工具集 |
lamp-generator | lamp-generator (opens new window) | lamp-generator (opens new window) | 代码生成器 |
lamp-job | lamp-job (opens new window) | lamp-job (opens new window) | 分布式定时调度器 |
# 后端
项目 | gitee | github | 备注 |
---|---|---|---|
lamp-cloud | lamp-cloud (opens new window) | lamp-cloud (opens new window) | SpringCloud(微服务)版 |
lamp-boot | lamp-boot (opens new window) | lamp-boot (opens new window) | SpringBoot(单体)版 |
微服务版示例 | lamp-samples (opens new window) | lamp-samples (opens new window) | 常用示例 |
# 前端
项目 | gitee | github | 备注 | 演示地址 |
---|---|---|---|---|
lamp-web | lamp-web (opens new window) | lamp-web (opens new window) | 基于 vue-admin-element (element-ui) | https://boot.tangyh.top/lamp-web (opens new window) |
lamp-web-plus(强烈推荐!👏👏👏) | lamp-web-plus (opens new window) | lamp-web-plus (opens new window) | 基于 vue-vben-admin (vue 3 + ant design vue 2) | https://pro.tangyh.top (opens new window) |
# 开源协议
Apache Licence 2.0 Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。 需要满足的条件如下:
- 需要给代码的用户一份Apache Licence
- 如果你修改了代码,需要在被修改的文件中说明。
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
- 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。 Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。
- 若你借鉴或学习了本项目的源码,请你在你的项目源码和说明文档中显著的表明引用于本项目,并附上本项目的github访问地址: https://github.com/dromara/lamp-cloud
# Dromara 成员项目
为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。