【官宣新晋开源项目】微服务中后台快速开发平台[灯灯]加入 Dromara 开源社区
作者介绍
- 名称:最后
- dromara 开源组织成员,dromara/lamp-cloud 作者
- 高级java工程师,热衷开源,兼职开源,认真研究过无数开源项目的源码,参与过多个开源项目,拥有丰富实战经验
- 个人空间:最后 https://github.com/zuihou
关于lamp
灯灯
(简称灯, 英文名:lamp),她是一个项目集,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:
lamp-util:后端工具集
lamp-cloud:基于Spring Cloud实现的后台
lamp-boot:基于Spring Boot实现的后台
lamp-job:基于xxl-job集成本项目的分布式定时任务
lamp-generator:代码生成器
lamp-web:前端
lamp-cloud 简介
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等主要框架和中间件。 本项目旨在实现基础框架能力,不涉及具体业务。
亮点功能介绍:
服务注册&发现与调用:
基于Nacos来实现的服务注册与发现,使用使用Feign来实现服务互调, 可以做到使用HTTP请求远程调用时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
负载均衡:
将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的gateway 和 loadbalancer 可以帮我们进行正常的网关管控和负载均衡。
熔断机制:
因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Sentinel的作为熔断器,避免了服务之间的“雪崩”。
监控:
利用Spring Boot Admin 来监控各个独立服务的运行状态、健康情况。
链路调用监控:
同时实现了SkyWalking作为本项目的全链路性能监控, 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间。
自研RBAC:
自研基于租户、应用、角色的权限配置、授权、认证、鉴权、控制方案。
数据权限
利用基于Mybatis的DataScopeInnerInterceptor拦截器实现了动态数据权限功能。
SaaS(多租户)架构的无感解决方案
本项目支持3种常见的租户解决方案和无租户方案,同一套业务代码,通过配置和全局拦截,可支持多种租户隔离方式
优雅缓存
采用CacheOps操作缓存,内置2种实现:Caffeine、 Redis,可以让项目应急时在无Redis环境正常运行;并通过CacheKey统一封装缓存的key。
优雅的Bean转换
采用Dozer、BeanUtil等组件来对 DTO、DO、PO等对象的优化转换
前后端统一表单校验
严谨的表单验证都需要前端和后端双重验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时修改。 故在
hibernate-validator
的基础上封装了lamp-validator-starter
,提供一个通用接口,用于获取需要校验的表单规则,前端使用后端返回的规则,以后若规则改变,只需要后端修改即可。防跨站脚本攻击(XSS)
- 通过过滤器对所有请求中的 表单参数 进行过滤
- 通过Json反序列化器实现对所有 application/json 类型的参数 进行过滤
当前登录用户信息注入器
- 通过注解实现用户基本信息、部门、岗位、资源、角色等信息注入
在线接口文档
由于原生swagger-ui某些功能支持不够友好,故采用了国内开源的
knife4j
,并封装了stater,方便springboot用户使用。可视化在线代码生成器
通过简单的配置,即可实现由表到代码的生成;通过配置数据库字段的注释,自动生成枚举类、数据字典注解、后端代码、前端代码、表单验证规则注解、Swagger注解等。
定时任务调度器:
基于xxl-jobs进行了功能增强。(如:指定时间发送任务、执行器和调度器合并项目、多数据源)
分布式事务
集成了阿里的分布式事务中间件:seata,以 高效 并且对业务 0侵入 的方式,解决 微服务 场景下面临的分布式事务问题。
跨表、跨库、跨服务的关联数据自动回显
用于解决跨表、跨库、跨服务分页数据的属性或单个对象的属性 回显关联数据之痛, 支持对静态数据属性(数据字典)、动态主键数据进行自动回显。
灰度发布
为了解决频繁的服务更新上线,版本回退,快速迭代,公司内部协同开发,本项目采用修改 loadbalancer 的负载均衡策略来实现来灰度发布。
技术栈
- 开发方面:
- 数据库: MySQL、Oracle、SQL Server
- 缓存:Redis
- 消息队列:RabbitMQ
- 强悍工具类:Jackson、hutool、guava、jjwt、ip2region
- 在线文档:knife4j
- 分布式定时任务:基于xxl-job
- 前端1(后台管理):vue2 + element-ui
- 前端2(后台管理):vue3 + ant-design-vue + vite + TypeScript
- 数据源:druid
- 持久层框架: Mybatis-plus
- 代码生成器(老版本):基于Mybatis-plus-generator自定义
- 代码生成器(新版本):在线可视化代码生成器
- 文件服务器:本地存储、MinIO、FastDFS、阿里云OSS、华为云OBS、七牛云OSS
- 消息中心:阿里云SMS、腾讯云SMS、百度云SMS、创蓝短信、邮件、站内信
- API网关:Gateway
- 服务注册&发现和配置中心: Nacos
- 服务消费:OpenFeign
- 负载均衡:spring-cloud-loadbalancer
- 服务熔断:Sentinel
- 项目构建:Maven
- 分布式事务: seata
- 监控方面:
- 监控: spring-boot-admin
- 链路调用跟踪: SkyWalking
- 分布式系统的流量防卫兵: Sentinel
- 部署方面:
- 服务器:CentOS
- 负载均衡:Nginx
- CI/CD:Jenkins
- 容器:Docker/Kubernetes
关注项目

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
数据可视化平台飞鱼 FlyFish 2.3.0 发布,操作更顺畅,多种数据源等你体验!
关于 FlyFish FlyFish 是云智慧公司自主设计、研发的一款低门槛、高拓展性的低代码应用开发平台, 为数据可视化开发场景提供了高效的一站式解决方案。飞鱼提供丰富的组件和应用模板库, 可通过拖拉拽的形式完成数据可视化开发,零开发背景的用户也可完成数据可视化开发工作。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。 更新内容 🌟新增功能 新增三种数据源SqlServer、MariaDB、达梦 🌟功能增强 组件开发、大屏应用编辑器更新优化 批量导入导出兼容处理 批量导出优化导出配置 解决组件、大屏应用快照生成失败 相关链接 如果你也对数据可视化感兴趣,欢迎点击下方链接 Star FlyFish~ GitHub 地址:https://github.com/CloudWise-OpenSource/FlyFish Gitee 地址:https://gitee.com/CloudWise/fly-fish
- 下一篇
别拿 SQL 不当代码,那些年我们一起埋过的坑
知其所以然 「知其所以然」是数据库 DevOps 流程中审核规范落地的关键。 SQL 审核推动与落实最大的困扰并非缺少相应的审核平台支持,而是来自于被审核者,也就是开发者们的不配合。在一些管理严格的企业可以通过管理层的支持推动落地,或是强大的 DBA 团队通过自身的专业度争得足够的话语权。但在很多组织里, SQL 管理规范依然流于纸面,好一些的勉强针对一些最危险的行为如删除操作进行审核,差一些的甚至依然处于放任自流的状态。为什么开发者不愿意配合?固然,人们天性不喜欢被审核,但是仍能找到两个更深层的原因加剧了这种抵触心: 第一个原因是数据库变更对于很多开发团队来说属于「发射后不管」,我提交后哪管他洪水滔天,反正甩给 DBA 解决就行。 第二个原因是对于开发者而言完全不理解各项 SQL 审核规范有何意义,既然数据库提供了这个功能,凭什么不能用? 随着研发管理流程的演进,第一个原因逐渐弱化,即便团队之间由于 KPI 不同存在矛盾,但仍能完成基本的协作,而在推行 DevOps 理念的组织中这一原因更是不存在。第二个原因则显得更为关键,即便开发者要对自己的变更负责,如果不了解某条语句带来的影响,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8