当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

lamp-boot

前后分离快速开发平台
授权协议 Apache
开发语言 Java
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 符风畔
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

lamp-boot的前身是zuihou-admin-boot,从3.0.0版本开始,改名为lamp-boot,它是lamp项目的其中一员。

lamp-boot 基于SpringBoot的前后分离的快速开发平台,其中的可配置的SaaS功能尤其闪耀,
具备RBAC功能、网关统一鉴权、Xss防跨站攻击、自动代码生成、多种存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发,支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,注释齐全,架构清晰,非常适合学习和企业作为基础框架使用。

核心技术采用SpringBoot、Mybatis、Redis、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中间件。
希望能努力打造一套从JavaWeb基础框架 - 单体架构 - 持续集成 - 系统监测 的解决方案。本项目旨在实现基础能力,不涉及具体业务。

lamp 项目名字由来

叙事版:

在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,大家陷入了沉思。

走着走着,在一盏路灯下,孩砸盯着路灯打破宁静,喊出:灯灯~ 我和媳妇愣了一下,然后对视着一起说:哈哈,这个名字好~

解释版:

灯灯: 是我小孩学说话时会说的第一个词,也是我在想了很多项目名后,小孩一语点破的一个名字,灯灯象征着光明,给困境的我们带来希望,给加班夜归的程序员们指引前方~

灯灯(简称, 英文名:lamp),他是一个项目的统称,包含以下几个子项目

lamp 项目组成

项目 gitee github 备注
工具集 https://gitee.com/zuihou111/lamp-util https://github.com/zuihou/lamp-util 业务无关的工具集,cloud和boot 项目都依赖它
微服务版 https://gitee.com/zuihou111/lamp-cloud https://github.com/zuihou/lamp-cloud SpringCloud 版
单体版 https://gitee.com/zuihou111/lamp-boot https://github.com/zuihou/lamp-boot SpringBoot 版(和lamp-cloud功能基本一致)
管理后台 https://gitee.com/zuihou111/lamp-web https://github.com/zuihou/lamp-web PC端管理系统
代码生成器 https://gitee.com/zuihou111/lamp-generator https://github.com/zuihou/lamp-generator 给开发人员使用
定时调度器 https://gitee.com/zuihou111/lamp-job https://github.com/zuihou/lamp-job  尚未开发

 lamp 租户模式介绍

本项目可以通过配置,轻松切换项目的租户模式

租户模式 描述 优点 缺点
NONE(非租户模式) 没有租户 简单、适合独立系统 缺少租户系统的优点
COLUMN(字段模式) 租户共用一个数据库,在业务表中增加字段来区分 简单、不复杂、开发无感知 数据隔离性差、安全性差、数据备份和恢复困难
SCHEMA(独立schema) 每个租户独立一个 数据库(schema),执行sql时,动态在表名前增加schema 简单、开发无感知、数据隔离性好 配置文件中必须配置数据库的root账号、不支持复杂sql和 sql嵌套自定义函数
DATASOURCE(独立数据源) 每个租户独立一个 数据库(数据源),执行代码时,动态切换数据源 可独立部署数据库,数据隔离性好、扩展性高、故障影响小 相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库

lamp 会员版项目演示地址 

  1. 地址: https://boot.tangyh.top
  2. 以下内置账号仅限于内置的0000租户 
  3. 平台管理员: lamp_pt/lamp (内置给公司内部运营人员使用)
  4. 超级管理员: lamp/lamp    
  5. 普通管理员: general/lamp
  6. 普通账号: normal/lamp

ps: 演示环境中内置租户没有写入权限,若要在演示环境测试增删改,请使用lamp_pt账号查询租户管理员账号后,登录新租户测试

lamp-cloud/lamp-boot + lamp-web 功能介绍:

1. 租户管理:运营人员管理所有的租户创建
2. 工作台:普通用户常用功能
3. 组织管理:组织、岗位、用户数据维护、重置用户密码等
4. 资源中心:消息、短信、附件管理
5. 流程管理:流程部署、模型管理、流程示例
6. 系统设置:菜单、资源配置、角色管理、给角色绑定用户、给角色授权菜单和资源、字典、地区、系统参数、操作日志、登录日志、应用管理等
7. 网关设置:限流和阻止访问
8. 开发者管理:定时任务、接口文档、注册&配置中心、服务监控、数据库监控、zipkin监控、SkyWalking监控

lamp-boot 项目亮点功能介绍:

1. 服务鉴权:

    通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。

2. 数据权限

    利用基于Mybatis的DataScopeInnerInterceptor拦截器实现了数据权限功能

3. SaaS(多租户)的无感解决方案

    本项目支持3种常见的租户解决方案和无租户方案,同一套代码,修改一个配置即可实现租户模式只有切换。

4. 缓存抽象

    采用CacheOps操作缓存,内置2种实现:Caffeine、 Redis,可以让项目应急时在无Redis环境正常运行

5. 优雅的Bean转换

    采用Dozer、BeanUtil等组件来对 DTO、DO、PO等对象的优化转换

6. 前后端统一表单验证

    严谨的表单验证通常需要 前端+后端同时验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时修改。
    故在`hibernate-validator`的基础上封装了`lamp-validator-starter`起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则,
    以后若规则改变,只需要后端修改即可。

7. 防跨站脚本攻击(XSS)
    
    通过过滤器对所有请求中的 表单参数 进行过滤,通过Json反序列化器实现对所有 application/json 类型的参数 进行过滤
    
8. 当前登录用户信息注入器
    
9. 在线API

    由于原生swagger-ui某些功能支持不够友好,故采用了国内开源的`knife4j`,并制作了stater,方便springboot用户使用。

10. 代码生成器

    基于Mybatis-plus-generator自定义了一套代码生成器, 通过配置数据库字段的注释,自动生成枚举类、数据字典注解、SaveDTO、UpdateDTO、表单验证规则注解、Swagger注解等。

11. 定时任务调度器:

    基于xxl-jobs进行了功能增强。(如:指定时间发送任务、执行器和调度器合并项目、多数据源)

12. 大文件/断点/分片续传

    前端采用webupload.js、后端采用NIO实现了大文件断点分片续传,启动Eureka、Zuul、File服务后,直接打开docs/chunkUploadDemo/demo.html即可进行测试。经测试,本地限制堆栈最大内存128M启动File服务,5分钟内能成功上传4.6G+的大文件,正式服耗时则会受到用户带宽和服务器带宽的影响,时间比较长。

13. 分布式事务

    集成了阿里的分布式事务中间件:seata,以 高效 并且对业务 0侵入 的方式,解决 微服务 场景下面临的分布式事务问题。

14. 跨表、跨库、跨服务的关联数据自动注入器

    用于解决跨表、跨库、跨服务分页数据的属性或单个对象的属性 回显关联数据之痛, 支持对静态数据属性(数据字典)、动态主键数据进行自动注入。

15. 灰度发布
    
    为了解决频繁的服务更新上线,版本回退,快速迭代,公司内部协同开发,本项目采用修改ribbon的负载均衡策略来实现来灰度发布。

lamp-boot 技术栈/版本介绍:

  1. 所涉及的相关的技术有:
    •     JSON序列化:Jackson
    •     消息队列:RabbitMQ
    •     消息队列:RabbitMQ
    •     缓存:Redis
    •     数据库: MySQL 5.7.9 或者 MySQL 8.0.19
    •     定时器:采用xxl-jobs项目进行二次改造
    •     前端:vue + element-ui
    •     持久层框架: Mybatis-plus
    •     代码生成器:基于Mybatis-plus-generator自定义 
    •     API网关:Gateway/zuul
    •     项目构建:Maven 
    •     监控: spring-boot-admin  
    •     文件服务器:FastDFS 5.0.5/阿里云OSS/本地存储/MinIO
    •     Nginx
  2. 部署方面:
    •     服务器:CentOS
    •     Jenkins
    •     Docker  
    •     Kubernetes 

页面预览

  • 今天花了2个小时间,在网上发现一大堆的解答,但都不凑效,自己摸索,终于搞定这个很恶心的问题。 第一步:进入/var目录 执行命令 chmod 755 ./www/ -R ,也就是把WEB目录下的文件的访问权限适当打开 第二步:sudo cd /etc/apache2/sites-enabled/,发现里面有几个目录,比如我的有 000-default,输入sudo gedit /etc/apach

  • mysql二进制 包 安装 [root@tyrr src]# useradd -s /sbin/nologin -M mysql [root@tyrr src]# id mysql uid=500(mysql) gid=500(mysql) 组=500(mysql) [root@tyrr src]# mv mysql-5.1.73-linux-x86_64-glibc23 /usr/local/m

  • 在Spring Boot的官方示例中,都是让我们继承一个spring的 spring-boot-starter-parent作为parent标签 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

  • 1.mysql的主从复制 ##需要两台以上的主机具有mysql数据库 一台主机的数据库为主, 一台为从属的数据库 开启主从复制功能 编写主配置文件/etc/my.cnf server-id=3 /etc/init.d/mysqld restart ##重启mysql log-bin=mysql-bin ##启动二进制日志,并为二进制日志命名 /etc/init.d/mysqld restart 登

 相关资料
  • 前言 上一篇我们遇到'少年,是不是忘了npm run mock?'的警告,这一篇我们就来解决这个问题。 开发 一、安装包 安装koa和一系列的包(我们用的是koa v2): koa koa-bodyparser koa-router boom nodemon mockjs 解释说明一下(知道的同学可以忽略): 名称 作用 koa 我们都知道Node.js有HTTP模块,来处理HTTP请求

  • 移动互联快速开发平台 采用Mongodb为底层数据库:数据设计随需而变; 采用Mongodb集群,支撑大数据量,大并发实时查询,便于扩展; 采用SpringMongodb简化开发,简单得令人发指; 采用SpringRest提供JSON的输出,支持各种转换; 提供程序整合、兼容中文、跨域JSONP的支持; 进行了大数据量的压力测试,参数的最优配置; 各种最佳实践。 HTML5 快速开发的前端架构,专

  • 本文向大家介绍CentOS平台快速搭建LAMP环境的方法,包括了CentOS平台快速搭建LAMP环境的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了CentOS平台快速搭建LAMP环境的方法。分享给大家供大家参考,具体如下: LAMP --  Linux Apache MySQL PHP 在CentOS安装的顺序,我一般是Apache -> MySQL -> PHP 第一步、安装并配

  • 1. 前言 目前,使用 Spring Boot 进行前后端分离项目开发,应该是主流做法了。这种方式,在开发、测试阶段,都比较方便。 开发阶段,项目组定义好接口规范后,前端按规范开发前端页面,后端按规范编写后端接口,职责分明。 测试阶段,后端是独立项目,可以进行单元测试。前端可以随时使用最新版本的后端程序进行实际测试。 前后端分离的模式,有着很多的优越性,所以造就了它的流行。 2. 技术选型 本篇我

  • 前后端分离 在B/S架构的环境中,前后端分离一直都众说纷纭,没有一个标准。我觉得打开可以分为三个阶段: 传统的分离方法 传统意义上的前后端分离,前端指的是美工、切图、设计,后端是实现代码、数据库相关的实现。美工设计和生成的前端页面,给到程序员来做集成。那么这里其实就不分什么前后端了,程序员从数据库一直搞到前端页面的样式,就是“全能型运动员“。当然,一般传统上的开发协作模式有两种: 一种是前端先写一

  • 本文主要面向 Spring Boot 的使用者,通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务发现。 关于 Nacos Spring Boot 的详细文档请参看:nacos-spring-boot-project。 通过 Nacos Server 和 nacos-config-spring-boot-starter 实现配置的动态变更; 通过 Nacos Server