登录
  • 欢迎访问悠扬的技术博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站😉

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

Java 悠扬 246次浏览 已收录 0个评论

一、你的要求有点多

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

二、项目介绍

  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. 动态多数据源代码生成

三、界面展示

  1. 多数据源配置
    你要多数据源,还要动态代码生成,还要分布式事务~我来解决
  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("") 

五、数据片区分库

配置片区进行分库

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

测试地址:http://localhost:8080/test/user/testAreaCode

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

什么意思呢,根据片区配置,项目可以自动切换数据源执行相应代码,目前生成环境暂时还未使用,使用时若出现bug会及时修复 :D 

例如:     

片区编码ID 数据源code
111 one_source
222 two_source
333 one_source

参数中出现片区ID时会自动跳转到对应数据源进行查询,返回解决进行合并

六、项目地址

https://gitee.com/zsiyang/ruoyi-vue-atomikos


版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明你要多数据源,还要动态代码生成,还要分布式事务~我来解决
喜欢 (2)
支付宝[]
分享 (0)
悠扬
关于作者:
10年以上工作经验,从事2年微服务架构搭建工作,有大数据处理相关工作经验,使用spring全家桶包括:Spring,SpringBoot,SpringCloud 数据层组件服务使用SpringDataJpa,Mybatis以及其他第三方组件Sharding-JDBC,Sharding-Proxy分库分表。熟悉微服务,服务降级,限流,分流,做过项目源码修改,有cat,apollo,nacos使用经验,有Lostash,Elasticsearch,kibana,mysqlMHA生产实践经验,使用开源代码Apache Sarding项目,修改源码支持mysql分库分表使用年月日小时分库分表,docker做集群服务,Jekins做项目发布,GitLab做项目管理,使用docker容器部署,熟悉消息队列RabbitMQ,Kafka,ActiveMQ。RuoYi-Vue-Atomikos项目开源加入生态圈组件,项目支持分布式事务,界面添加多数据源,数据源动态配置,切面切换,多数据源事务支持,支持区域数据源配置,用于区域数据切分,数据层次分库。项目地址:https://gitee.com/zsiyang/ruoyi-vue-atomikos
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址