JeecgBoot介绍
JeecgBoot是一款基于代码生成器的低代码开发平台,零代码开发!前端采纳Ant Design&Vue,后端集成了SpringBoot2.x,Mybatis-plus,平安框架为Shiro,JWT。绝对其余开源我的项目比拟杰出的是在线配置表单、在线配置报表、在线图表设计、在线设计流程、在线设计表单,极大的进步了开发效率,另外,jeecg-boot领有弱小的代码生成逻辑,绝对于其余开源框架来说,jeecg-boot的代码生成能用于开发较简单的联表查问而不是只能实现单表查问的简略逻辑。
jeecg-boot应用心得
- JeecgBoot第一次应用给我的感觉是配置比较简单,简略配置数据库和redis,一键启动我的项目,针对我的项目部署(war包部署、jar包部署、docker部署等等)有具体的文档,我的项目的运行、部署基本上遇不到问题;在数据库方面,表名命名比拟标准,每张表都有del_flag、create_time、create_by、update_time、update_by五个字段,全方位记录表的数据迁徙;
- JeecgBoot我的项目监控比较完善,有路由网关监控、定时工作监控、redis监控、日志监控、数据日志监控、性能监控、SQL监控等等,能够实时显示我的项目状况,提前预判我的项目宕机危险,进步我的项目运维程度;
- JeecgBoot有个比拟好的细节,就是零碎通告零碎用治理—零碎通告界面,在新增零碎通告的时候,编辑通告具体内容能把通告内容进行排版,不便公司应用,收回的通告看起来正规一点;
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排除项;
改良倡议:
- JeecgBoot配置项比较复杂,看的目迷五色,让萌新看起来无从动手,解决方案:
缩减配置项,只保留最根本的配置,其余扩大性能,例如启用短信、启用对象存储等等写在文档里,让使用者多读文档而后再来提issue或者群里问问题,这样缩小开发者工作量,也让我的项目变得"轻量级"; - 我留神到JeecgBoot局部表中应用了text数据格式比方日志表的sys_data_log的data_content字段,然而入库的时候没有限度数据长度,这里会有一个危险,当咱们产生一些异样数据时,text格局也装不下时既有宕机危险也会升高服务器性能;
- JeecgBoot应用逻辑删除自身没有问题,然而逻辑删除会跟已有逻辑抵触,比如说现有用户张三,我删除了用户张三,然而又因为某种原因须要新增张三这个用户,那么新增时就会提醒用户名已存在,我认为这就是逻辑删除潜在的一个bug,解决方案:
放弃逻辑删除,新建一张备份表,将删除的数据复制到备份表里,即防止了一些代码逻辑上的抵触也保留了数据;
不放弃逻辑删除,逻辑删除的表新增基于工夫戳的惟一字段,判断是否反复时能够查问这个字段; - JeecgBoot的监控很欠缺然而不足告警性能,我本地开发时因为本人电脑硬盘比拟小,磁盘占有率曾经上了90%,然而监控没有任何的告警以至于如果是生产环境就会有宕机的危险;另外就是监控比拟机械,例如redis的监控,没有突出咱们比拟重要的性能指标即instantaneous_ops_per_sec(均匀每秒解决申请总数)、rejected_connections(达到max_client而后限度的连贯),也没有计算出缓存命中率等等;解决方案:
业余的事交给业余的人,倡议集成prometheus,配合grafana做监控性能,利用已有grafana模板或者开发jeecgboot专用监控模板,图形显示监控指标以及配置告警,进步我的项目自动化运维水平 - 多租户的倡议:
实现租户模式配置,即配置用户的多租户模式,0无租户模式,1基于tenant_id隔离,2基于Schema隔离,3独立数据库模式;
tenant_id隔离模式须要开发一个多租户开关,当用户敞开多租户时,前端和后端强制将tenant_id设置为1;
Schema隔离模式最简略的方法是将Schema名称设置为有租户名;
独立数据库模式就基于多数据源,租户用不同的数据源(与数据源主备不抵触)
另外,租户治理的新增租户逻辑过于简略,新增租户后应该给租户初始化必要的数据,例如初始化管理员账号,根本的角色、职务、部门、数据字典等等; - 对于redis的小小倡议
JeecgBoot将缓存放在redis外面,却没有缓存淘汰策略,在用户数过多的场景下会造成资源的节约,所以我倡议启用redis的缓存淘汰策略或者本人写一个LRU算法。