首页 > 其他分享 >中间件之Mycat

中间件之Mycat

时间:2024-04-02 13:12:16浏览次数:21  
标签:逻辑 数据库 中间件 Mycat 切分 分片 数据 节点

一、概念

  • 介绍

Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在
Mycat不负责存储数据,只是逻辑上多数据进行分处理,实际存储数据的为后端数据库。
Mycat拦截了用户发送过来的SQL 语句,对SQL 语句做了一些特定的分析: 如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL 发往后端的真实数据库并将返回的结果做适当的处理,最终再返回给用户。

  • 分片

简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个 数据库(主机) 上面,以达到分散单台设备负载的效果。 数据的 切分(Sharding) 根据其切分规则的类型,可以分为两种切分模式。

一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。
另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。

  • 逻辑库(schema)

MyCat是一个数据库中间件,通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。

  • 逻辑表(table)

既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。

  • 分片节点(dataNode)

数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是 分片节点(dataNode)。

  • 节点主机(dataHost)

数据切分后,每个 分片节点(dataNode) 不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个 分片节点(dataNode) 所在的机器就是 节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的 分片节点(dataNode)均衡的放在不同的 节点主机(dataHost)。

  • 分片规则(rule)

前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。

二、配置文件

1.server.xml :作为MyCat中最重要的配置文件之一,涵盖了MyCat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置。

2.schema.xml :对应的物理数据库和数据库表的配置

3.rule.xml :分片(分库分表)规则

schema:标签用于定义Mycat实例中的逻辑库
table:标签定义了MyCat中的逻辑表,rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片 5000001-10000000 为第2片....
dataNode:标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost:标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

示例:

schema.xml




rule.xml

server.xml

标签:逻辑,数据库,中间件,Mycat,切分,分片,数据,节点
From: https://www.cnblogs.com/OpenSourceSite/p/18093894

相关文章

  • C#中的消息中间件(RabbitMQ 和 Redis)
    消息中间件是一种用于在分布式系统中进行异步通信的技术,常用于解耦应用程序的不同组件、实现消息传递、提高系统的可伸缩性和可靠性等。以下是关于消息中间件的知识点以及可能会在面试中被问到的一些问题和答案:消息中间件的知识点:消息队列(MessageQueue):消息中间件通常基于消......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-5 同步异步删除zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12721 1重点关注1.1本节内容javaapi客户端删除节点,包含同步修改和异步修改,只做了异步,同步不通用(因为没有回调函数,不知道是否删除成功)也可以参照视频看下 1.2javaapi删除节点......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-4 修改zk节点数据
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12720 1重点关注1.1本节内容javaapi客户端修改节点,只做了同步修改,异步修改方式如1.3,可以参考6-3异步新增 1.2javaapi修改节点同步修改/***参数:......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-3 同步异步创建zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12719 1重点关注1.1本节内容javaapi客户端新增临时节点和永久节点 1.2javaapi新增节点同步调用/***同步或者异步创建节点,都不支持子节点的递归......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-2 zk会话重连机制
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12718 1重点关注1.1本节内容验证了使用sessionid和sessionPassword重连的session和之前的session一致,详见3.1   2课程内容2.1扩展之:echodump|nclocalhost2181......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-1 建立客户端与zk服务端的连接
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12717 1重点关注1.1本节内容使用STS开发工具作为客户端连接zk服务端,详见3.1  1.2连接方式参数说明如下段zk原生class标注:connectString:连接zk服务端的ip和端口(比如案例......
  • 中间件和Auth模块
    中间件1.Django中间件介绍【1】什么是Django中间件Django中间件是一个轻量级、可重用的组件,用于处理Django请求和响应的过程。它提供了对请求和响应进行全局处理的机制,可以在请求达到视图之前进行预处理或在响应返回给客户端之前进行后处理。中间件是按照顺序依次执行的,每......
  • vivo 消息中间件测试环境项目多版本实践
    作者:vivo互联网中间件团队-LiuTao在开源RocketMQ基础之上,关于【测试环境项目多版本隔离】业务诉求的落地与实践。一、背景在2022年8月份vivo互联网中间件团队完成了互联网在线业务的MQ引擎升级,从RabbitMQ到RocketMQ的平滑升级替换。在业务使用消息中间件的过程中......
  • 就业班 第二阶段 2401--3.25 day5 mycat读写分离
    @[TOC] 启动并更改临时密码[root@mysql1~]#systemctlstartmysqld&&passwd=`greppassword/var/log/mysqld.log|awk'END{print$NF}'`&&mysqladmin-p"$passwd"password'Qwer123..';MyCAT读写分离Mycat是一个开源的数据库系统,但是由......
  • CYarp:力压frp的C#高性能http内网反代中间件
    https://www.cnblogs.com/kewei/p/18095638 我以前开发过HttpMouse的http内网反代中间件,但由于当时的知识点与设计水平受限,所以把它下马了。随着自身又遇到http内网反代的需求,在frp不能满足我需求情况下,我又启动了一个叫CYarp的http内网反代项目,这次它的设计完成度是相当高的。......