当前位置: 首页 > news >正文

佛山北京网站建设wordpress 4.3

佛山北京网站建设,wordpress 4.3,网站建设的组织保障,建设一个外贸网站多少钱呢后台管理项目多数据源管理方案实战 整个权益商城后台本质上是一个访问频率比较低的CRUD管理系统#xff0c;所以本身不需要考虑微服务拆分的事情。接入微服务体系也只是为了能够调用其他的微服务。 但是#xff0c;在做电商管理项目时#xff0c;我们为了简化业务流程…后台管理项目多数据源管理方案实战 整个权益商城后台本质上是一个访问频率比较低的CRUD管理系统所以本身不需要考虑微服务拆分的事情。接入微服务体系也只是为了能够调用其他的微服务。 但是在做电商管理项目时我们为了简化业务流程在做后端管理系统时并没有严格按照微服务原则进行数据隔离而是让管理系统直接访问所有的业务数据。但是这也带来了新的问题怎么让管理系统可以同时管理多个数据库的数据 大型项目中这种多数据源的访问是很常见的场景大家想想ShardingSphere框架适合用来做这种跨库的数据源切换吗 一、电商后台项目需要访问的数据源说明 整个电商项目的数据库设计情况 库名 表前缀 说明 interests_mall_goods pms_ 商品相关表 interests_mall_normal cms_ 其他辅助功能相关表 interests_mall_promotion sms_ 促销相关表 interests_mall_user ums_ 用户管理相关表 interests_mall_cart oms_cart_ 购物车相关表 interests_mall_order oms_ 订单相关表 这些不同库中的很多基础数据除了购物车模块外都需要由电商管理后台进行统一管理。所以对于电商管理系统会采用多数据源管理的方式尽量快速的完成基础数据维护。其中订单库由于进行了分库分表管理比较复杂所以电商管理后台不会直接访问订单相关的表而是通过微服务的方式调用订单模块的相关功能来间接管理订单。 二、电商后台使用MyBatis-plus快速访问多个数据源 电商后台项目使用的MyBatis-plus框架访问数据库。对于MyBatis和MyBatis-plus框架这里就不多做介绍了。而我们这个电商后台管理项目与常见的一些普通的管理系统的最大区别在于这个电商项目管理数据的方式更为直接粗暴直接跨多个数据库管理的后台数据。这里分享三种常用的多数据源管理方案 1、使用Spring提供的AbstractRoutingDataSource 这种方式的核心是使用Spring提供的AbstractRoutingDataSource抽象类注入多个数据源。 将自己实现的DynamicDataSource注册成为默认的DataSource实例后只需要在每次使用DataSource时提前改变一下其中的name标识就可以快速切换数据源。 Component Aspect public class DynamicDataSourceAspect implements Ordered {// 在每个访问数据库的方法执行前执行。Before(within(com.tuling.dynamic.datasource.service.impl.*) annotation(wr))public void before(JoinPoint point, WR wr){String name  wr.value();DynamicDataSource.name.set(name);System.out.println(name);}Overridepublic int getOrder() {return 0;} } 2、使用MyBatis注册多个SqlSessionFactory 如果使用MyBatis框架要注册多个数据源的话就需要将MyBatis底层的DataSource、SqlSessionFactory、DataSourceTransactionManager这些核心对象一并进行手动注册。例如 Configuration MapperScan(basePackages com.tuling.datasource.dynamic.mybatis.mapper.r,sqlSessionFactoryRefrSqlSessionFactory) public class RMyBatisConfig {BeanConfigurationProperties(prefix spring.datasource.datasource2)public DataSource dataSource2() {// 底层会自动拿到spring.datasource中的配置 创建一个DruidDataSourcereturn DruidDataSourceBuilder.create().build();}BeanPrimarypublic SqlSessionFactory rSqlSessionFactory() throws Exception {final SqlSessionFactoryBean sessionFactory  new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource2());// 指定主库对应的mapper.xml文件/*sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/r/*.xml));*/return sessionFactory.getObject();}Beanpublic DataSourceTransactionManager rTransactionManager(){DataSourceTransactionManager dataSourceTransactionManager  new DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource2());return dataSourceTransactionManager;}Beanpublic TransactionTemplate rTransactionTemplate(){return new TransactionTemplate(rTransactionManager());} } 这样就完成了读库的注册。而读库与写库之间就可以通过指定不同的Mapper和XML文件的地址来进行区分。 3、使用dynamic-datasource框架 dynamic-datasource是MyBaits-plus作者设计的一个多数据源开源方案。使用这个框架需要引入对应的pom依赖 dependencygroupIdcom.baomidou/groupIdartifactIddynamicdatasourcespringbootstarter/artifactIdversion3.5.0/version/dependency 这样就可以在SpringBoot的配置文件中直接配置多个数据源 spring:datasource:dynamic:#设置默认的数据源或者数据源组,默认值即为masterprimary: master#严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源strict: falsedatasource:master:url: jdbc:mysql://127.0.0.1:3306/datasource1?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: truedriver-class-name: com.mysql.cj.jdbc.Driverslave_1:url: jdbc:mysql://127.0.0.1:3306/datasource2?serverTimezoneUTCuseUnicodetruecharacterEncodingUTF8useSSLfalseusername: rootpassword: 123456initial-size: 1min-idle: 1max-active: 20test-on-borrow: truedriver-class-name: com.mysql.cj.jdbc.Driver 这样就配置完成了master和slave_1两个数据库。接下来在使用时只要在对应的方法或者类上添加DS注解即可。例如 Service public class FrendImplService implements FrendService {AutowiredFrendMapper frendMapper;OverrideDS(slave) // 从库 如果按照下划线命名方式配置多个  可以指定前缀即可组名public ListFrend list() {return frendMapper.list();}OverrideDS(master)public void save(Frend frend) {frendMapper.save(frend);}DS(master)DSTransactionalpublic void saveAll(){// 执行多数据源的操作} }
http://www.yutouwan.com/news/164380/

相关文章:

  • 丽江网站建设 莱芜看想看的做想做的电影网站
  • 如何建立一个网站放视频济南12345官网
  • 我是这样做网站的米课上海手机网站制作
  • 公司网站域名cn和com宁波网站优化价格
  • 子网站建设对电子商务专业的认识和了解
  • php 网站做分享功能怎么在ps里做网站设计
  • 美好乡村建设网站微营销推广
  • 杭州专业做网站的公司哪家好宁波建设集团股份有限公司招聘
  • 香橼做空机构网站腾讯云 wordpress博客
  • 北京网站关键词排名公司微信网页版手机端
  • 网络管理专业什么叫做优化
  • win7 iis6.0添加网站攀枝花 网站建设
  • 怎样为企业设计网站自然资源网站建设方案
  • 网站制作 南宁企业商城网站建设价格
  • 深圳公司建立网站学院网站制度建设
  • 昆明网站建设推荐q479185700上墙企业解决方案业务是什么
  • 卖网格布怎样做网站做一个网上商城需要多少钱
  • 网站开发 与 网页设计的区别西安找公司建网站
  • 单县菏泽网站建设维护网站是什么意思
  • 郑州做网站怎么样百度做网站多少钱
  • 免费网站百度收录公司取名网免费版
  • 企业网站建设报价明细表小公司it如何建设
  • 网站开发制作价格前端工程师是做网站吗
  • 凯里市住房和城乡建设局网站中国国内最新新闻
  • 软件公司网站模板图片the7 wordpress 汉化
  • 网站模版 下载工具做家具定制的设计网站
  • 面包屑 网站网页设计目的怎么写
  • 沈阳企业网站怎样制作做网站合同
  • 做医疗竞价网站莱芜网站建设优化
  • 网站服务器在哪里买好企业管理信息系统模式