Mycat 中间件概述、原理


一、MyCAT 是数据库中间件

​ 中间件: 是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。例如:Tomcat、web中间件。

​ 连接 java程序 和 mysql集群。


二、为什么要用 Mycat

​ java 应用 ———————— mysql 数据库

​ 通过 java 应用程序操作数据库,查询数据,写入数据。完整整个系统存储功能。

提出问题:

1、java与数据库紧耦合,如何解决 数据库宕机继续提供访问?

2、java 程序 对外提供访问,高访问量高并发。如何解决 数据库高并发量?

3、读写请求数据不一致。如何解决 数据库主从请求分离?

解决方法:

由 Mycat 中间件为 java 应用提供访问,Java应用程序只需要通过 Mycat 就能获取数据。

所有的 后端 mysql 数据库可以自由灵活的进行扩充配置。

​ java ———— Mycat ———— mysql 数据库(写)
​ mysql 数据库(读) ,mysql数据库(读)


三、各种数据库 中间件

  • Mycat 是开源社区基于 阿里 Cobar 基础上进行二次开发,解决 cobar 存在的问题,并且加入了许多新的功能。

  • Oneproxy 基于 Mysql 官方的 proxy思想利用 c 进行开发的。Oneproxy 是一款商用收费的中间件。舍弃了一些功能,专注在性能和稳定性上。

  • Vitess 是 YOUtube生产,架构非常复杂,不支持 MySQL原生协议。需要二开

  • Atlas 是 360 团队基于 mysql proxy 改写,功能还算完善,但是并发不够稳定。

  • MaxScale 是 mariadb(MySQL原作者维护的一个版本) 研发的中间件。

  • MySQLRoute 是 mysql 官网 Oracle 公司发布的中间件。


四、Mycat 提供的功能

①、读写分离

由 Mycat 决定 读写请求 具体分给后端哪一台 数据库。在后端数据库实现主从复制。

②、双主双从

后端数据库可以搭建 双主架构,实现后端数据库的高可用。

③、数据分片
  • 垂直拆分(分库)

    • 将一个数据库分成 多个模块,每个模块里包含着对应功能的表。
  • 水平拆分(分表)

    • 将一个达到瓶颈的表,按照时间年限划分,19年之前一个表,19年之后一个表。
  • 垂直+水平(企业使用)

    • mycat 将所有分布式数据库 进行封装,将对应的请求按照分片规则,分到各个数据库里面。


④、多数据源整合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQtBXn2L-1595131710663)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 115120.png)]

后端可以是 多个 不同种类 的 数据库 的集合。

可以是 数据库集群,也可以是 主从mysql,也可以是 NoSQL 数据库集群


Mycat 工作原理

原理

  • Mycat 的原理中最重要的一个 动词 “拦截”。Mycat 可以拦截用户发送过来的 SQL 语句。
    • 首先对 SQL 语句进行特定的分析:分片分析、路由分析、读写分离分析、缓存分析等。
    • 然后将此 SQL 发往后端的真实数据库,并将返回的结果进行适当的处理,再发送给用户。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qfw5ulvX-1595131710665)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 115855.png)]

Mycat 拦截图过程分析:
  1. orders 订表中 包含各个城市的 订单信息。可以通过分库分表,将 一个库的 一个表(orders),分成三个库,三个表。也就是将各个城市的信息,拆分成三个表,三个库,来进行存储。

  2. 当查询 订单 “zhejiang” 的请求 发送到 Mycat,由 Mycat 的各种功能解析,然后发现其结果在 后端 DB1 数据库上。所以将该请求发给 DB1进行查询。

  3. 将查询结果再发回 Mycat,由 Mycat 进行各种数据处理,再返回给应用。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mycat中间件是一种用于分布式数据库架构的工具,它可以将多个数据库节点组合成一个逻辑库,并提供高性能和高可用性的数据库访问。在使用Mycat中间件之前,首先需要下载Mycat并将其上传到服务器。推荐将Mycat放在/usr/local/mycat目录下。你可以从Mycat官网的下载地址http://dl.mycat.io/1.6-RELEASE/下载Mycat的压缩包。 在启动Mycat之前,需要进入Mycat的bin目录,并执行命令"./mycat start"来启动Mycat。默认情况下,Mycat的端口是8066。一旦启动成功,你就可以开始使用Mycat中间件来管理你的分布式数据库了。 如果你想了解更详细的关于Mycat中间件的使用方法,我推荐你阅读一本名为《分布式数据库架构及企业实践-基于Mycat中间件》的高清版本的PDF文件。这本书由资深Mycat专家、一线架构师和DBA编写,共有8章内容,涵盖了Mycat的各个方面,包括基本原理、架构设计、性能优化等等。你可以在书中找到关于Mycat中间件的详尽介绍和使用方法。 在实际开发中,Mycat中间件通常是与数据库进行交互的,而对于开发者来说,Mycat中间件几乎是隐身的。在Mycat中,有一些重要的内部概念需要理解,包括逻辑库、逻辑表、分片节点、节点主机和分片规则等等。逻辑库是指Mycat本身,逻辑表是指Mycat中的表,而分片节点是指每个表分片数据所在的数据库。节点主机有时会将多个分片节点放在同一台服务器上,这些分片节点共享相同的节点主机。为了提高性能,通常会将读写压力较高的分片节点放在不同的节点主机上。分片规则是指数据切分的规则,这个规则非常重要,因为它决定了后续数据处理的难度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Mycat数据库中间件的使用教程](https://blog.csdn.net/weixin_39940088/article/details/88764488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [分布式数据库架构及企业实践-基于Mycat中间件](https://download.csdn.net/download/henanshengpuyangshi/10286770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值