【Mycat2实战】一、Mycat简介

1. 什么是Mycat

什么是Mycat

Mycat是数据库中间件,所谓中间件数据库中间件是连接Java应用程序和数据库中间的软件。

image-20231113173526543

为什么要用Mycat

image-20231113175609542

遇到问题:

  • Java与数据库的紧耦合
  • 高访问量高并发对数据库的压力
  • 读写请求数据不一致

2. Mycat与其他中间件区别

image-20231113175008856

目前的数据库中间件有很多,并从各个维度将其与 Mycat进行对比。

Mycat优势

image-20231113175224220

性能可靠稳定

基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀 的架构和性能以及众多成熟的使用 案例使得MYCAT一开始就拥有一 个很好的起点,站在巨人的肩膀上,我们能看到更远。

强大的技术团队

MyCat现在由一支强大的技术团队维护 , 吸引和聚集了一大批业内 大数据和云计算方面的资深工程师、架构师、DBA,优秀的团队保 障了MyCat的稳定高效运行。而且MyCat不依托于任何商业公司, 而且得到大批开源爱好者的支持。

体系完善

MyCat已经形成了一系列的周边产品,比较有名的是 Mycat-web、 Mycat-NIO、Mycat-Balance 等,已经形成了一个比较完整的解决方 案,而不仅仅是一个中间件。

3. Mycat应用场景

image-20231113175049471

Mycat还形成了一系列周边产品,比较有名的是 Mycat-web、 Mycat-NIO、Mycat-Balance等,已成为一个比较完整的数据处理 解决方案,而不仅仅是中间件。

高可用性与MySQL读写分离

利用Mycat可以轻松实现热备份,当一台服务器停机时,可以由双 机或集群中的另一台服务器自动接管其业务,从而在无须人工干预的情况下,保证系统持续提供服务。这个切换动作由Mycat自动完成。

image-20231113175146091

注意: Mycat 的读写分离及自动切换都依赖于数据库产品的主从数据同步。

100亿大表水平分表、集群并行计算

数据切分是Mycat的核心功能,是指通过某种特定的条件,将存放在同一个数据库中的数据分散存放在多个数据库(主机)中,以达到分散单台设备负载的效果。

image-20231113175303968

数据切分有两种切分模式

  • 按照不同的表将数据切分到不同的数据库中,这种切分可以叫作数据的垂直切分。
  • 根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多个数据库中,这种切 分叫作数据的水平切分。当数据量超过800万行且需要做分片时,可以利用Mycat实现数据切 分。

数据库路由器

Mycat基于MySQL 实例的连接池复用机制,可以让每个应用最大程度地共享一个MySQL实例的所有连接池,让数据库的并发访问能力大大提升。

整合多种数据源

当一个项目需要用到多种数据源如Oracle、MySQL、SQL Server、 PostgreSQL时,可以利用Mycat进行整合,只需访问Mycat 这一个 数据源就行。

image-20231113175321838

4. 核心概念详解

image-20231113175343303

逻辑库schema

业务开发人员通常在实际应用中并不需要知道中间件的存在,只需 要关注数据库,所以数据库中间件可以被当作一个或多个数据库集 群构成的逻辑库。

image-20231113175421169

注意:

逻辑库,与MySQL中的Database(数据库)对应,⼀个逻辑库中定义了所包括的Table。

逻辑表table

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

image-20231113175635716

注意:

Table:表,即物理数据库中存储的某⼀张表,与传统数据库不同,这⾥的表格需要声明其所存储的逻辑数据节点DataNode。

节点主机DataNode

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

image-20231113175659168

数据库主机DataHost

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

用户

MyCat的用户(类似于MySQL的用户,支持多用户)

image-20231113175709775

5. Mycat原理

image-20231113175833663

Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL 语句。

image-20231113175931299

流程: 首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发 往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

流程示例

image-20231113175816845

1 解析SQL语句涉及的表。

2 查看表的定义,如果表存在分片规则,则获取SQL语句的分片字段。

3 将SQL语句发送到相应的分片去执行。

4 最后处理所有分片返回的数据并返回给客户端。

6. Mycat部署安装_MySQL主从复制概述

image-20231113175747700

为什么要主从复制

image-20231113175728467

注意: MySQL是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失。为了保证MySQL数据库的可靠性。就要会一些提高可靠性的技术。

如何解决性能问题

生活中有很形象的例子,比如你去超市买东西,如果只有一个收银台,只可以排一队一次等待,如果有多个收银台,就可以排多队,大大提升了效率。

7. 本系列文章

本系列文章持续更新中,包括Mycat搭建,读写分离,分库分表等,敬请期待。

后续更新陆续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144696.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IC行业秋招真实情况记录,快来看看吧~

2023年,IC行业人才竞争尤为激烈。为了更好的获取到面试的经验,不妨先来了解一下IC面试常见的问题,以及面试该准备的相关事项吧~ (文末可领全部面试题目) 什么是同步逻辑和异步逻辑? 同步逻辑是时钟之间…

固定式液压破碎工作臂系统柱塞液压泵站系统比例阀控制器

固定式液压破碎工作臂系统柱塞液压泵站系统比例阀控制器主要用于:矿山、矿井、采石场,砂石骨料场、冶金冶炼厂、铸造厂、水泥厂、钢包炉渣厂、电厂、港口和码头、辅助翻车机翻卸铁路敞车散料、建材、公路、铁路、水利和化学工业等众多液压控制部门。通过…

有私域和无私域有什么区别?

公域流量和私域流量的区别主要体现在以下几个方面: 1. 渠道区别:私域流量是个体独有的流量池,而公域流量的流量池是公共的。换句话说,私域流量是通过个人平台直接获取用户的渠道,而公域流量是依靠一个公共平台的流量来…

ctfshow sql入门174 175脚本

因为觉得脚本写的太烂了,二分法也迷迷糊糊的 主要是python怎么学的那么烂!! 再研究一下 174 布尔盲注 这是不使用二分法的 import requestsurl http://e9a1012f-6cb2-451d-9084-0d011dfcff89.challenge.ctf.show/api/v4.php flag for …

flutter背景图片设置

本地图片设置 1、在配置文件pubspec.yaml中,设置以下代码 assets:- assets/- assets/test/2、如果目录中没有assets文件夹,则创建一个文件夹,并且取名为assets,在此文件夹中存放图片资源即可,如果想分文件夹管理&…

为什么数据安全很重要?哪些措施保护数据安全?

数据安全很重要的原因是因为数据是现代社会的重要财产之一。很多组织和企业依赖数据来做出商业决策,管理客户关系,进行财务规划等等。如果这些数据泄露或遭到黑客攻击,那么就会影响企业的经济利益,甚至影响到个人的隐私和安全。此…

【算法|动态规划 | 区间dp No.1】AcWing 282. 石子合并

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【AcWing算法提高学习专栏】【手撕算法系列专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

《原则》思维导图

ProcessOn 《原则》是一本投资与管理领域的经典之作,作者瑞达利欧以生动的语言和深入浅出的方式,分享了他的投资原则和管理经验。这本书不仅适合金融从业者,也对一般读者有很大启发。 通过阅读《原则》,你将了解到如何建立有效的…

大模型时代的机器人研究

机器人研究的一个长期目标是开发能够在物理上不同的环境中执行无数任务的“多面手”机器人。对语言和视觉领域而言,大量的原始数据可以训练这些模型,而且有虚拟应用程序可用于应用这些模型。与上述两个领域不同,机器人技术由于被锚定在物理世…

教对象写代码

之前对象工作中需要获取地图上的一些数据, 手工找寻复制 费时费力, 逢此契机, 准备使用代码尽可能简化机械重复操作, 力图一劳永逸. 首选简洁易入门的Python. 下文就是对流程的总结, 及简述每步的意义. 并不Hack,重在感受编程的用途和基本工具的使用. 以百度地图为例,需求如下:…

探索图像形态学变换:理论与应用

图像形态学变换是数字图像处理领域中的重要技术,它通过对图像中的形状和结构进行操作和改变,来实现图像的分析、识别和增强等应用。本文将从图像形态学变换的基本原理和方法入手,介绍膨胀、腐蚀、开运算、闭运算等常见的形态学变换操作&#…

embedding的综述

1 一文读懂Embedding的概念,以及它和深度学习的关系 one-hot 变成地位稠密的向量,降维 什么是词嵌入:讲词汇表中的词或者词语映射成固定长度的向量。 具体过程: one-hot变成低维连续的向量 语义相近的词语,词语赌…

洗地机和扫地机怎么选?洗地机品牌怎么选?2023旗舰洗地机总结

洗地机是一种可以一次性完成吸尘、拖地、洗地以及除菌的多功能智能清洁神器,它可以轻松的应对各种地面的干湿垃圾,提高地面清洁同时让清洁过程变得更加高效,但是目前的洗地机那么多,我们怎么挑选到一款合适的洗地机呢?…

2023-2024-2 高级语言程序设计-二维数组

7-1 矩阵运算 给定一个nn的方阵&#xff0c;本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整数n&#xff08;1<n≤10&#xff09;&#xff1b;随后n行&#xff0c;每行给出…

【Vue 本地项目运行https服务】

配置本地开发环境的https访问 1、下载证书生成库2、创建证书颁发机构3、创建证书4、创建成功后会有4个文件在我们项目根目录5、定位到ca.crt 文件所在在位置 双击 安装证书6、在vue.config.js中引入证书&#xff1b; 1、下载证书生成库 npm install -g mkcert2、创建证书颁发机…

Zookeeper 命令使用和数据说明

文章目录 一、概述二、命令使用2.1 登录 ZooKeeper2.2 ls 命令&#xff0c;查看目录树&#xff08;节点&#xff09;2.3 create 命令&#xff0c;创建节点2.4 delete 命令&#xff0c;删除节点2.5 set 命令&#xff0c;设置节点数据2.6 get 命令&#xff0c;获取节点数据 三、数…

优秀的接口自动化测试方案是啥样的?

1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX&#xff0c;XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开…

Realistic fault detection of li-ion battery via dynamical deep learning

昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》&#xff0c;用已经处理的整车充电段数据&#xff0c;分析车辆当前或近期是否存在故障。 思想步骤&#xff1a; 用正常电池的充电片段数据构造训练集&#xff0c;用如下的方式构造…

从单测入手,完善Vue3源码中底层API effect功能

基于上一篇文章中实现的effect方法&#xff0c;根据 Vue3 源码中单测&#xff0c;完善该方法的三点功能&#xff0c;分别是&#xff1a; runner: effect可以返回自执行的入参runner函数scheduler: effect支持添加第二个参数选项中的scheduler功能stop: effect添加stop功能 ru…