你要多数据源,还要动态代码生成,还要分布式事务~我来解决

一、你的要求有点多

自己博客的原创文章:同步自自己的博客地址,比起同步界面好看一些:你要多数据源还要动态代码生成还要分布式事务
我想有一款前后分离的后台项目,数据源在web界面上面直接配置,想要项目可以配置N多个数据源,想要简单配置程序自动去访问数据源,想要手脚架自动生成代码,想要代码可以公共使用,想要数据源支持分布式事务,想要按照指定参数比如地区code进行分库配置进行数据路由,没问题,你想要的都可以解决,来看看我重新封装的若依vue分布式事务版
有人说,我还想要分库分表,嘿嘿,方案我有,代码也写好了,但是不在这里,好了,今天说的只是管理后台,分库分表咱们单独来说

二、项目介绍

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  3. 岗位管理:配置系统用户所属担任职务。
  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  7. 参数管理:对系统动态配置常用参数。
  8. 通知公告:系统通知公告信息发布维护。
  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  10. 登录日志:系统登录日志记录查询包含登录异常。
  11. 在线用户:当前系统中活跃用户状态监控。
  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  14. 系统接口:根据业务代码自动生成相关的api接口文档。
  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  16. 在线构建器:拖动表单元素生成相应的HTML代码。
  17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。(这个目前只能监控主库,动态数据源部分我没有去兼容,我这里用的prometheus+grafana+alertmanager+dingtalk)感兴趣点击链接去看看
  18. 动态多数据源配置
  19. 分布式事务
  20. 动态多数据源代码生成
  21. 业务ID进行片区分库

三、界面展示

  1. 多数据源配置
    你要多数据源,还要动态代码生成,还要分布式事务~我来解决_第1张图片

  2. 多数据源代码生成
    你要多数据源,还要动态代码生成,还要分布式事务~我来解决_第2张图片

  3. 其他界面和ruoyi-vue版本一致,我就不在写一遍了,需要点这里去官方看文档,注意:我的项目加入生态圈但是没有和主版本进行合并

四、分布式事务

测试服务地址详见

TestSourceController.java

测试连接

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("") 

五、数据片区分库

配置片区进行分库

你要多数据源,还要动态代码生成,还要分布式事务~我来解决_第3张图片

测试地址: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


你可能感兴趣的:(java,分布式,vue.js,java)