一、你的要求有点多
自己博客的原创文章:同步自自己的博客地址,比起同步界面好看一些:你要多数据源还要动态代码生成还要分布式事务
我想有一款前后分离的后台项目,数据源在web界面上面直接配置,想要项目可以配置N多个数据源,想要简单配置程序自动去访问数据源,想要手脚架自动生成代码,想要代码可以公共使用,想要数据源支持分布式事务,想要按照指定参数比如地区code进行分库配置进行数据路由,没问题,你想要的都可以解决,来看看我重新封装的若依vue分布式事务版
有人说,我还想要分库分表,嘿嘿,方案我有,代码也写好了,但是不在这里,好了,今天说的只是管理后台,分库分表咱们单独来说
二、项目介绍
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。(这个目前只能监控主库,动态数据源部分我没有去兼容,我这里用的prometheus+grafana+alertmanager+dingtalk)感兴趣点击链接去看看
- 动态多数据源配置
- 分布式事务
- 动态多数据源代码生成
- 业务ID进行片区分库
三、界面展示
-
多数据源配置
-
多数据源代码生成
-
其他界面和ruoyi-vue版本一致,我就不在写一遍了,需要点这里去官方看文档,注意:我的项目加入生态圈但是没有和主版本进行合并
四、分布式事务
测试服务地址详见
测试连接
http://localhost:8080/demo/test-master-one?id=1
http://localhost:8080/demo/test-master-two?id=2
http://localhost:8080/demo/test-one-two?id=3
http://localhost:8080/demo/test-master-one-two?id=4
关于分布式事务相关,目前已经使用jmeter做压力测试,单机并发峰值,满足生产需求
使用过程中发现其他问题欢迎大家一起讨论。动态数据源测试脚本数据库文件,加群获取。
欢迎大家一起讨论,并指出问题。
数据源切换方式
方式一:
配置数据源dao包方式 注解在server类方法上
@DynamicDataSourceAnno("xxx.xxx")
public String demoPlugs(String id) {
return JSONObject.toJSONString(demoMapper.selectById(id));
}
方式二:
使用 DynamicDataSourceContextHolder 调用dao前 传入对应数据源source_code
DynamicDataSourceContextHolder.setDataSourceType("")
五、数据片区分库
配置片区进行分库
测试地址:http://localhost:8080/test/user/testAreaCode
什么意思呢,根据片区配置,项目可以自动切换数据源执行相应代码,目前生成环境暂时还未使用,使用时若出现bug会及时修复 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ejDDqrPr-1655363955674)(https://blog.nxhz1688.com/wp-content/themes/Git-master/img/smilies/icon_biggrin.gif)]
**例如: **
片区编码ID | 数据源code |
111 | one_source |
222 | two_source |
333 | one_source |
参数中出现片区ID时会自动跳转到对应数据源进行查询,返回解决进行合并
六、项目地址
https://gitee.com/zsiyang/ruoyi-vue-atomikos