【官宣新晋开源项目】微服务中后台快速开发平台 [灯灯] 加入 Dromara 开源社区

·  阅读 674

作者介绍

  • 名称:最后
  • dromara 开源组织成员,dromara/lamp-cloud 作者
  • 高级java工程师,热衷开源,兼职开源,认真研究过无数开源项目的源码,参与过多个开源项目,拥有丰富实战经验
  • 个人空间:最后 作者介绍

关于lamp

灯灯(简称灯, 英文名:lamp),她是一个项目集,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:

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等主要框架和中间件。 本项目旨在实现基础框架能力,不涉及具体业务。

lamp-cloud架构图.png

亮点功能介绍:

  1. 服务注册&发现与调用:

    基于Nacos来实现的服务注册与发现,使用使用Feign来实现服务互调, 可以做到使用HTTP请求远程调用时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

  2. 负载均衡:

    将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的gateway 和 loadbalancer 可以帮我们进行正常的网关管控和负载均衡。

  3. 熔断机制:

    因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Sentinel的作为熔断器,避免了服务之间的“雪崩”。

  4. 监控:

    利用Spring Boot Admin 来监控各个独立服务的运行状态、健康情况。

  5. 链路调用监控:

    同时实现了SkyWalking作为本项目的全链路性能监控, 从整体维度到局部维度展示各项指标,将跨应用的所有调用链性能信息集中展现,可方便度量整体和局部性能,并且方便找到故障产生的源头,生产上可极大缩短故障排除时间。

  6. 自研RBAC:

    自研基于租户、应用、角色的权限配置、授权、认证、鉴权、控制方案。

  7. 数据权限

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

  8. SaaS(多租户)架构的无感解决方案

    本项目支持3种常见的租户解决方案和无租户方案,同一套业务代码,通过配置和全局拦截,可支持多种租户隔离方式

  9. 优雅缓存

    采用CacheOps操作缓存,内置2种实现:Caffeine、 Redis,可以让项目应急时在无Redis环境正常运行;并通过CacheKey统一封装缓存的key。

  10. 优雅的Bean转换

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

  11. 前后端统一表单校验

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

  12. 防跨站脚本攻击(XSS)

    • 通过过滤器对所有请求中的 表单参数 进行过滤
    • 通过Json反序列化器实现对所有 application/json 类型的参数 进行过滤
  13. 当前登录用户信息注入器

    • 通过注解实现用户基本信息、部门、岗位、资源、角色等信息注入
  14. 在线接口文档

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

  15. 可视化在线代码生成器

    通过简单的配置,即可实现由表到代码的生成;通过配置数据库字段的注释,自动生成枚举类、数据字典注解、后端代码、前端代码、表单验证规则注解、Swagger注解等。

  16. 定时任务调度器

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

  17. 分布式事务

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

  18. 跨表、跨库、跨服务的关联数据自动回显

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

  19. 灰度发布

    为了解决频繁的服务更新上线,版本回退,快速迭代,公司内部协同开发,本项目采用修改 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

关注项目

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改