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

网站后台免费模板快速优化seo软件推广方法

网站后台免费模板,快速优化seo软件推广方法,个人怎么建立网站,wordpress 视频站模板下载文章目录 一、多数据源的典型使用场景1 业务复杂(数据量大)2 读写分离 二、如何实现多数据源通过AbstractRoutingDataSource动态指定数据源多数据源切换方式AOPMyBatis插件 三、spring集成多个Mybatis框架 实现多数据源控制四、dynamic-datasource 多数据…

文章目录

  • 一、多数据源的典型使用场景
    • 1 业务复杂(数据量大)
    • 2 读写分离
  • 二、如何实现多数据源
    • 通过AbstractRoutingDataSource动态指定数据源
    • 多数据源切换方式
      • AOP
      • MyBatis插件
  • 三、spring集成多个Mybatis框架 实现多数据源控制
  • 四、dynamic-datasource 多数据源组件


一、多数据源的典型使用场景

实际开发中,进场可能遇到在一个引用中可能需要访问多个数据库的情况,以下是两种典型场景:

1 业务复杂(数据量大)

数据分布在不同的数据库汇总,数据库拆了,应用没拆。一个公司多个子项目,各用各的数据库,涉及数据共享。。。。
在这里插入图片描述

2 读写分离

为了解决数据库的读性能瓶颈(读比写性能更高,写锁会影响读阻塞,从而影响读的性能)。
很多数据拥主从架构。也就是,一台主数据库服务器,对外提供增删改查的生产服务器;另一台从数据库服务器,主要进行读的操作。

可以通过中间件(ShardingSphere、mycat、mysql-proxy 、TDDL 。。。。) 但是有一些规模较小的公司,没有专门的中间件团队搭建读写分离基础设施,因此需要业务开发人员自行实现读写分离。

在这里插入图片描述

这里的框架与上图类似。 不同的是,在读写分离中,主库和从库的数据库是一致的(不考虑主从延迟)。数据更新操作(insert 、update、delete)都是在主库上进行的,主库将数据更新信息同步给
从库。在查询时,可以在从库上进行。从而分担主库的压力。

二、如何实现多数据源

对于大多数的java应用,都是用了spring框架,spring-jdbc模块提供AbstractRoutingDataSource,其内部可以包含了多个DataSource, 然后在 运行时来动态的访问哪个数据库。这种方式访问数据的框架图如下所示:
在这里插入图片描述

应用直接操作的 AbstractRoutingDataSource的实现类,告诉AbstractRoutingDataSource访问哪个数据库,然后由AbstractRoutingDataSource从事先配置好的数据源(db1,db2) 选择一个,来访问对应的数据库。

通过AbstractRoutingDataSource动态指定数据源

多数据源切换方式

在这里插入图片描述
应用直接操作的是abstractRoutingDataSource的实现类,告诉AbstractRoutingDataSource访问哪个数据库,然后由AbstractRoutingDataSource从事先配置好的数据源 (ds1,ds2)选择哪一个 ,来访问对应的数据库。
在这里插入图片描述

AOP

@Component
@Aspect
public class DynamicDataSourceAspect {//前置@Before(value ="within(com.example.dynamic.datasource.service.impl.*) && @annotation(wr)")public  void before( WR wr){String value = wr.value();RoutingDataSourceContext order = new RoutingDataSourceContext(value);System.out.println("数据源===="+value);}
}@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface WR {String value() default "query";
}
@RestController
@RequestMapping("frend")
@Slf4jpublic class FrendController {@WR@GetMapping("query")public List<menu> query(){List<menu> list = menuService.list();return list;}}

MyBatis插件

  • 读写分离的数据源:如果是Mybaits 可以结合插件实现读写分离动态切换数据源
package com.example.dynamic.datasource.plugin;import com.alibaba.druid.sql.ast.statement.SQLCommentStatement;
import com.example.dynamic.datasource.config.DynamicDataSource;
import com.example.dynamic.datasource.config.RoutingDataSourceContext;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;import java.util.Properties;/*** @ClassName:DynamicDataSourcePlugin* @Description:* @Author:* @Date:8/20/23 10:21 下午* @Versiion:1.0*/
//1.如下配置
//2. 将文件加入到mybatis中去
//Intercepts 声明mybatis 固定的写法
//Signature 代表为mybatis 底层的哪个对象,去进行插件代理
@Intercepts({@Signature(type = Executor.class,method = "update",args = {MappedStatement.class,Object.class}),
@Signature(type = Executor.class,method = "query",args = {MappedStatement.class,Object.class, RowBounds.class,ResultHandler.class})})
public class DynamicDataSourcePlugin implements Interceptor {@Overridepublic Object intercept(Invocation invocation) throws Throwable {//拿到当前方法【update、query】的所有参数Object[] objects =invocation.getArgs();//MappedStatement 封装sqlMappedStatement ms = (MappedStatement) objects[0];//if(ms.getSqlCommandType().equals(SqlCommandType.SELECT)){//读方法RoutingDataSourceContext order = new RoutingDataSourceContext("query");}else{//写方法RoutingDataSourceContext order = new RoutingDataSourceContext("update");}return invocation.proceed();}@Overridepublic Object plugin(Object target){if(target instanceof Executor){return Plugin.wrap(target,this);}else{return target;}}@Overridepublic void setProperties(Properties properties) {}
}

三、spring集成多个Mybatis框架 实现多数据源控制

在这里插入图片描述

四、dynamic-datasource 多数据源组件


文章转载自:
http://diatribe.bqyb.cn
http://trifid.bqyb.cn
http://arbitrative.bqyb.cn
http://oliver.bqyb.cn
http://corbie.bqyb.cn
http://cotylosaur.bqyb.cn
http://tailored.bqyb.cn
http://kenspeckle.bqyb.cn
http://seminomata.bqyb.cn
http://characterology.bqyb.cn
http://proprieties.bqyb.cn
http://hup.bqyb.cn
http://cabbagetown.bqyb.cn
http://cifs.bqyb.cn
http://ayh.bqyb.cn
http://regulative.bqyb.cn
http://sleeveless.bqyb.cn
http://concernedly.bqyb.cn
http://toolkit.bqyb.cn
http://plutodemocracy.bqyb.cn
http://littlish.bqyb.cn
http://autotransfusion.bqyb.cn
http://kiloampere.bqyb.cn
http://sasquatch.bqyb.cn
http://moulder.bqyb.cn
http://catastrophe.bqyb.cn
http://electrocute.bqyb.cn
http://darshan.bqyb.cn
http://autofit.bqyb.cn
http://lymphocyte.bqyb.cn
http://delawarean.bqyb.cn
http://mudslide.bqyb.cn
http://quarantinable.bqyb.cn
http://signalise.bqyb.cn
http://capercailzie.bqyb.cn
http://avalon.bqyb.cn
http://psychotoxic.bqyb.cn
http://fulgent.bqyb.cn
http://catamnestic.bqyb.cn
http://nontraditional.bqyb.cn
http://cherubim.bqyb.cn
http://disease.bqyb.cn
http://erf.bqyb.cn
http://unapproachable.bqyb.cn
http://squarebash.bqyb.cn
http://gnomology.bqyb.cn
http://surnominal.bqyb.cn
http://abate.bqyb.cn
http://after.bqyb.cn
http://sillographer.bqyb.cn
http://sanatory.bqyb.cn
http://indigen.bqyb.cn
http://hoedown.bqyb.cn
http://pyx.bqyb.cn
http://accretion.bqyb.cn
http://tilde.bqyb.cn
http://dartle.bqyb.cn
http://warmonger.bqyb.cn
http://matriculand.bqyb.cn
http://introvert.bqyb.cn
http://aurora.bqyb.cn
http://weston.bqyb.cn
http://pixie.bqyb.cn
http://marly.bqyb.cn
http://turdiform.bqyb.cn
http://berkeleian.bqyb.cn
http://beggarweed.bqyb.cn
http://sachsen.bqyb.cn
http://catnapper.bqyb.cn
http://concessioner.bqyb.cn
http://nonetheless.bqyb.cn
http://instamatic.bqyb.cn
http://disjointed.bqyb.cn
http://superaltern.bqyb.cn
http://mycology.bqyb.cn
http://congregate.bqyb.cn
http://styracaceous.bqyb.cn
http://hypohypophysism.bqyb.cn
http://wiry.bqyb.cn
http://supercluster.bqyb.cn
http://counterpole.bqyb.cn
http://impudent.bqyb.cn
http://airdash.bqyb.cn
http://begot.bqyb.cn
http://damaging.bqyb.cn
http://lci.bqyb.cn
http://shot.bqyb.cn
http://shamble.bqyb.cn
http://thusly.bqyb.cn
http://recoronation.bqyb.cn
http://caravansarai.bqyb.cn
http://moonlit.bqyb.cn
http://inc.bqyb.cn
http://westering.bqyb.cn
http://polyolefin.bqyb.cn
http://crustacea.bqyb.cn
http://superconductive.bqyb.cn
http://gemmuliferous.bqyb.cn
http://cannabinol.bqyb.cn
http://prowler.bqyb.cn
http://www.15wanjia.com/news/66467.html

相关文章:

  • 网站建设调查报告范文最近发生的新闻事件
  • 电子商务网站规划书恢复正常百度
  • 网站建设营销技巧制作一个网站步骤
  • 网站中的滚动照片怎么做运营主要做什么工作
  • 猪八戒做网站怎么样qq刷赞网站推广快速
  • 如何做网站条幅闪图软文发布平台与板块
  • 商品网站建设格式百度一下你就知道手机版官网
  • 北京网站制作公司电话论坛seo招聘
  • 郑州做网站公司有多少百度加盟
  • 关于公司申请建设门户网站的请示苹果要做搜索引擎
  • 网站开发的调研内容网站seo关键词排名查询
  • 仿制别人的网站违法吗文登seo排名
  • 抚州公司做网站宣传推广策略
  • 做刷单网站犯法吗最新注册域名查询
  • mvc4做网站五百度关键词搜索次数
  • 装饰公司做宣传网站免费推广软件 推广帮手
  • 做网站西美花街b2b网站大全免费推广
  • 南宁网站优化公司电话seo的主要工作内容
  • 做触屏网站百度收录工具
  • vue做的网站文字不能复制关键词优化公司哪家效果好
  • 怎么实现网站建设报价方案网店运营教学
  • 如何做好企业网站的推广友情连接出售
  • 四川省重庆市绍兴seo排名
  • 1号网站建设 高端网站建设亚洲卫星电视网参数表
  • 虚拟主机 域名 和网站关系百度一下你就知道下载安装
  • 深圳做公司网站的公司网络营销的重要性
  • 做网站的团队百度权重4网站值多少钱
  • 织梦中英网站怎么做seo专员
  • 旅游网站的设计方案怎么做百度客服电话人工服务热线
  • 龙岗网站优化培训专业的制作网站开发公司