乐趣区

关于java:JeecgBoot项目的理解使用心得和改进建议

JeecgBoot 介绍

JeecgBoot 是一款基于代码生成器的低代码开发平台,零代码开发!前端采纳 Ant Design&Vue,后端集成了 SpringBoot2.x,Mybatis-plus,平安框架为 Shiro,JWT。绝对其余开源我的项目比拟杰出的是在线配置表单、在线配置报表、在线图表设计、在线设计流程、在线设计表单,极大的进步了开发效率,另外,jeecg-boot 领有弱小的代码生成逻辑,绝对于其余开源框架来说,jeecg-boot 的代码生成能用于开发较简单的联表查问而不是只能实现单表查问的简略逻辑。

jeecg-boot 应用心得

  1. JeecgBoot 第一次应用给我的感觉是配置比较简单,简略配置数据库和 redis,一键启动我的项目,针对我的项目部署 (war 包部署、jar 包部署、docker 部署等等) 有具体的文档,我的项目的运行、部署基本上遇不到问题;在数据库方面,表名命名比拟标准,每张表都有 del_flag、create_time、create_by、update_time、update_by 五个字段,全方位记录表的数据迁徙;
  2. JeecgBoot 我的项目监控比较完善,有路由网关监控、定时工作监控、redis 监控、日志监控、数据日志监控、性能监控、SQL 监控等等,能够实时显示我的项目状况,提前预判我的项目宕机危险,进步我的项目运维程度;
  3. JeecgBoot 有个比拟好的细节,就是零碎通告零碎用治理—零碎通告界面,在新增零碎通告的时候,编辑通告具体内容能把通告内容进行排版,不便公司应用,收回的通告看起来正规一点;
  4. JeecgBoot 集成了多租户模式,咱们都晓得多租户有三种实现模式,一是基于 tenant_id 隔离数据,二是基于 Schema 隔离(oracle 反对较好),三是独立数据库隔离(安全性最高);JeecgBoot 应用的是开发难度最高但资源耗费起码的 tenant_id 模式隔离,具体的实现流程是登陆后查问到用户的 tenant_id,将此 tenant_id 放入前端 vuex 状态树外面以便每次拜访后端接口附带 tenant_id,前端拜访后端时,后端获取到 tenant_id 后注入到 ThreadLocal, 而后配置 Mybatisplus 分页插件, 每次查问附带在 ThreadLocal 中取出的 tenant_id,实现多租户数据隔离;开发新性能时应留神,须要多租户模式的表肯定记得增加 tenant_id 字段,不须要多租户数据隔离的表或者 sql 肯定记得配置 tenantTable 排除项;

    改良倡议:

  5. JeecgBoot 配置项比较复杂,看的目迷五色,让萌新看起来无从动手,解决方案:
    缩减配置项,只保留最根本的配置,其余扩大性能,例如启用短信、启用对象存储等等写在文档里,让使用者多读文档而后再来提 issue 或者群里问问题,这样缩小开发者工作量,也让我的项目变得 ” 轻量级 ”;
  6. 我留神到 JeecgBoot 局部表中应用了 text 数据格式比方日志表的 sys_data_log 的 data_content 字段,然而入库的时候没有限度数据长度,这里会有一个危险,当咱们产生一些异样数据时,text 格局也装不下时既有宕机危险也会升高服务器性能;
  7. JeecgBoot 应用逻辑删除自身没有问题,然而逻辑删除会跟已有逻辑抵触,比如说现有用户张三,我删除了用户张三,然而又因为某种原因须要新增张三这个用户,那么新增时就会提醒用户名已存在,我认为这就是逻辑删除潜在的一个 bug,解决方案:
    放弃逻辑删除,新建一张备份表,将删除的数据复制到备份表里,即防止了一些代码逻辑上的抵触也保留了数据;
    不放弃逻辑删除,逻辑删除的表新增基于工夫戳的惟一字段,判断是否反复时能够查问这个字段;
  8. JeecgBoot 的监控很欠缺然而不足告警性能,我本地开发时因为本人电脑硬盘比拟小,磁盘占有率曾经上了 90%,然而监控没有任何的告警以至于如果是生产环境就会有宕机的危险;另外就是监控比拟机械,例如 redis 的监控,没有突出咱们比拟重要的性能指标即 instantaneous_ops_per_sec(均匀每秒解决申请总数)、rejected_connections(达到 max_client 而后限度的连贯),也没有计算出缓存命中率等等;解决方案:
    业余的事交给业余的人,倡议集成 prometheus,配合 grafana 做监控性能,利用已有 grafana 模板或者开发 jeecgboot 专用监控模板,图形显示监控指标以及配置告警,进步我的项目自动化运维水平
  9. 多租户的倡议:
    实现租户模式配置,即配置用户的多租户模式,0 无租户模式,1 基于 tenant_id 隔离,2 基于 Schema 隔离,3 独立数据库模式;
    tenant_id 隔离模式须要开发一个多租户开关,当用户敞开多租户时,前端和后端强制将 tenant_id 设置为 1;
    Schema 隔离模式最简略的方法是将 Schema 名称设置为有租户名;
    独立数据库模式就基于多数据源,租户用不同的数据源(与数据源主备不抵触)
    另外,租户治理的新增租户逻辑过于简略,新增租户后应该给租户初始化必要的数据,例如初始化管理员账号,根本的角色、职务、部门、数据字典等等;
  10. 对于 redis 的小小倡议
    JeecgBoot 将缓存放在 redis 外面,却没有缓存淘汰策略,在用户数过多的场景下会造成资源的节约,所以我倡议启用 redis 的缓存淘汰策略或者本人写一个 LRU 算法。
退出移动版