• MyCat 插件 的应用


    什么是MyCat

    MyCAT是一款由阿里Cobar演变而来的用于支持数据库,读写分离、分表分库的分布式中间件。MyCAT支持Oracle、MSSQL、MYSQL、PG、DB2关系型数据库同时也支持MongoDB等非关系型数据库

    MyCAT原理MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。 MyCat 是由java语言写的。

    基于MyCat实现读写分离

    读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。主数据库进行写操作后,数据及时同步到所读的数据库,尽可能保证读、写数据库的数据一致,比如MySQL的主从复制、Oracle的data guard、SQL Server的复制订阅等。 

    读的数据库:只能做 select.

    写的数据库:select、create、insert、delete、update。

    实现读写分离,如何路由到不同的数据库进行访问?

    MyCat原理:会拦截客户端的所有JDBC请求,根据sql语句判断转发到不同的数据库进行操作。

    MyCat类似Nginx:

    MyCat 可以实现数据库反向代理,隐藏真实数据库ip地址、负载均衡、黑名单、分片等。

    Linux环境安装MyCat实现读写分离

    1、上传安装Mycat-server-1.6.5-release-20180122220033-linux.tar

    2、解压安装包tar –zxvf

    3、配置schema.xml 和server.xml

    4、客户端连接端口号: 8066 配置文件介绍:

    配置文件介绍:

    Linux环境安装MyCat实现读写分离

    1、进入bin目录 启动MyCat ./mycat start 停止MyCat ./mycat stop

    2、查看/usr/local/mycat/logs wrapper.log日志 如果是为successfully 则启动成功

    关闭防火墙:systemctl stop firewalld.service

    只可读的账号 user user 端口号8066

    可读可写的账号 root 123456 端口号8066

    SpringBoot项目整合动态数据源(读写分离)

    1.配置多个数据源,根据业务需求访问不同的数据,指定对应的策略:增加,删除,修改操作访问对应数据,查询访问对应数据,不同数据库做好的数据一致性的处理。由于此方法相对易懂,简单,不做过多介绍。

    2. 动态切换数据源,根据配置的文件,业务动态切换访问的数据库:此方案通过Spring的AOP,AspactJ来实现动态织入,通过编程继承实现Spring中的AbstractRoutingDataSource,来实现数据库访问的动态切换,不仅可以方便扩展,不影响现有程序,而且对于此功能的增删也比较容易。

    3. 通过mycat来实现读写分离:使用mycat提供的读写分离功能,mycat连接多个数据库,数据源只需要连接mycat,对于开发人员而言他还是连接了一个数据库(实际是mysql的mycat中间件),而且也不需要根据不同 业务来选择不同的库,这样就不会有多余的代码产生。 

    动态数据源核心配置

    在Spring 2.0.1中引入了AbstractRoutingDataSource, 该类充当了DataSource的路由中介, 能有在运行时, 根据某种key值来动态切换到真正的DataSource上。

    1.项目中需要集成多个数据源分别为读和写的数据源,绑定不同的key。

    2.采用AOP技术进行拦截业务逻辑层方法,判断方法的前缀是否需要写或者读的操作

    3.如果方法的前缀是写的操作的时候,直接切换为写的数据源,反之切换为读的数据源 也可以自己定义注解进行封装

     动态数据源与多数据源的区别

    多数据源是以分包形式在项目中使用。

    动态数据源在JVM进行不断的切换数据源,动态数据源包括多数据源。

    mycat 官方网站:http://www.mycat.io/

  • 相关阅读:
    Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
    zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
    项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加)
    黑客级别的文章:把动态库的内存操作玩出了新花样!
    多线程异步日志系统,高效、强悍的实现方式:双缓冲!
    Linux从头学16:操作系统在加载应用程序时,是如何把【页目录和页表】当做普通物理页进行操作的?
    面试官问:什么是布隆过滤器?
    前端-JavaScript异步编程中的Promise
    一文读懂Android进程及TCP动态心跳保活
    cJSON的使用
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10963164.html
Copyright © 2020-2023  润新知