Mycat学习实战-Mycat初识

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

1. Mycat是什么

Mycat是一个彻底开源的面向企业应用开发的大数据库集群,支持事务、ACID,是可以替代MySQL的加强版数据库。Mycat被视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群,它是融合了内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,是结合了传统数据库和新型分布式数据仓库的新一代的企业级数据库产品,也是一个优秀的数据库中间件。

wKioL1nmtviB-tORAAGKedtvyck216.png

2. Mycat与其他中间件的区别

目前的数据库中间件有很多。

2.1 Mango

Mango的中文名是“芒果”,它是一个轻量级的极速数据层访问框架,目前已有十多个大型线上项目在使用它。据称,某一支付系统利用Mango承载了每秒12万的支付下单请求,其超高的性能及超快的响应速度几乎相当于直接使用JDBC。它采用接口与注解的形式定义DAO,完美地结合了db与cache操作;支持动态SQL,可以构造任意复杂的SQL语句;支持多数据源、分表、分库、事务;内嵌“函数式调用”功能,能将任意复杂的对象映射到数据库的表中。但是从整体上看Mango是一个Java Dao Framework,是一个jar包,它的运行依赖于应用系统的项目代码和服务器,采用了JDBC Shard思想,与TDDL是同款产品。

2.2 Cobar

Cobar是阿里巴巴研发的关系型数据的分布式处理系统(Amoeba的升级版,该产品成功替代了原先基于Oracle的数据存储方案,目前已经接管了3000多个MySQL数据库的scheme,平均每天处理近50亿次的SQL执行请求。

2.3 Heisenberg

Heisenberg源于Cobar,结合了Cobar和TDDL的优势,让其分片策略变为分库分表策略,节约了大量的连接。优点是分库分表与应用脱离,分库分表如同使用单库表一样,减少了db连接数的压力,采用热重启配置,可水平扩容,并遵循 MySQL原生协议,采用读写分离,无语言限制。MySQL Client、C、Java等都可以使用Heisenberg服务器通过管理命令查看和调整连接数、线程池、节点等。Heisenberg采用velocity的分库分表脚本进行自定义分库分表,相当灵活。

2.4 Atlas

Atlas是由奇虎360的Web平台部基础架构团队开发维护的一个基于MySQL协议的数据库中间层项目。它在MySQL-proxy 0.8.2版本的基础上进行了优化,增加了一些新的功能和特性。奇虎360内部使用Atlas运行的MySQL业务,每天承载的读写请求数达几十亿条。Atlas位于应用程序与MySQL之间,实现了MySQL的客户端与服务端协议,作为服务端与应用程序通信,同时作为客户端与MySQL通信。它对应用程序屏蔽了db的细节,同时为了降低MySQL的负担,维护了连接池。

2.5 Ameoba

Ameoba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的Proxy。它集中响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行,基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,Ameoba的作者强调的是Amoeba配置的便捷性(基于XML的配置文件,用SQLJEP语法书写规则,比基于Lua脚本的MySQL Proxy简单)。

Mycat与以上中间件的对比如下表所示。

对比项目 Mycat Mango Coba Heisenberg Atlas Amoeba
数据切片 支持 支持 支持 支持 支持 支持
读写分离 支持 支持 支持 支持 支持 支持
宕机自动切换 支持 不支持 支持 不支持 半支持,影响写 不支持
MySQL协议 前后端支持 JDBC 前端支持 前后端支持 前后端支持 JDBC
支持的数据库 MySQL、Oracle、MongoDB、PostgreSQL MySQL MySQL MySQL MySQL MySQL、MongoDB
社区活跃度 活跃 停滞 中等 停滞
文档资料 极丰富 较齐全 较齐全 缺少 中等 缺少
是否开源 开源 开源 开源 开源 开源 开源
是否支持事务 弱XA 支持 单库强一致、分布式弱事务 单库强一致、多库弱事务 单库强一致、分布式弱事务 不支持

3. Mycat能解决的问题

wKioL1nmt0zB6CfxAAI183FikoI283.png

wKiom1nmukOBQgfOAAJP6iiIrPg398.png

wKioL1nmt46SL7LOAAFe8F8a2Xk414.png

wKioL1nmt5DxXlpfAAKIr6m4564534.png

wKiom1nmukaBhGa-AAI8fDv68ZE766.png

wKioL1nmt5KjyFuEAAH7R-x3xEw997.png

wKiom1nmukrB7LNGAAK4VUW1Tj0277.png

wKioL1nmt5Wz_YZnAAFbXKu9-kA973.png

wKiom1nmukzBQ04hAAHDrnHXG-M836.png










4. Mycat核心概念

4.1 逻辑库(schema)

业务开发人员通常在实际应用中并不需要知道中间件的存在,只需要关注数据库,所以数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。 
在云计算时代,数据库中间件可以以多租户的形式为一个或多个应用提供服务,每个应用访问的可能是一个独立或者共享的物理库。

wKiom1nmuorBBiXbAAOUEq7T9O8898.png

4.2 逻辑表(table)

wKioL1nmt-3wIvgOAAGOhMXWk2g858.png

4.2.1 分片表

分片表是将指数据量很大的表切分到多个数据库实例中,所有分片组合起来构成了一张完整的表。

wKiom1nmurShkDgrAADB2mKT2oA472.png

4.2.2 非分片表

并非所有的表在数据量很大时都需要进行分片,某些表可以不用分片。非分片表是相对于分片表而言的不需要进行数据切片的表。

4.2.3 ER表

关系型数据库是基于实体关系模型(Entity Relationship Model)的,Mycat中的ER表便来源于此。基于此思想,Mycat提出了基于E-R关系的数据分片策略,子表的记录与其所关系的父表的记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据关联查询不会跨库操作。 
表分组(Table Group)是解决跨分片数据关联查询的一种很好的思路,也是数据切分的一条重要规则。

wKioL1nmuCPinTAzAAHd24qR630226.png

4.2.4 全局表

在一个真实的业务场景中往往存在大量类似的字典表,这些字典表中的数据变动不频繁,而且数据规模不大,很少有超过数十万条的记录。 
当业务表因为规模进行分片后,业务表这些附属的字典表之间的关联查询就成了比较棘手的问题,所以在Mycat中通过数据冗余来解决这类表的关联查询,即所有分片都复制了一份数据,我们把这些冗余数据的表定义为全局表。 
数据冗余是解决跨分片数据关联查询的一种很好的思路,也是数据切分规划的另一条重要规则。

wKioL1nmuDmBGYBUAAFSTTUcvuQ268.png

4.3 分片节点(dataNode)

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

4.4 节点主机(dataHost)

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

wKioL1nmuGrQfdFrAAGGvfDv7Ew561.png

wKioL1nmuGviOAjvAAFc4OdJx7o959.png

wKiom1nmuyHz6f8rAAHr9_4ggzM028.png

wKiom1nmuyLja_NdAAFjT6eJ6xE591.png

wKioL1nmuG2RU58uAAF9p5IzKEo413.png

wKiom1nmuySQclqlAAHvODYcDj8479.png

wKioL1nmuG-iYyBxAAGzSETqNLg388.png

wKioL1nmuHDD0d93AAGZDe6STGI023.png

wKiom1nmuyaSnpjZAAHTNlMB-pc048.png

5. Mycat文件夹以及文件介绍

wKiom1nmu0zB_wC3AADw7aJd8wc195.png

wKiom1nmu03iPYPdAAFGI_GYtBA845.png

wKioL1nmuJij5SyeAAGVDO8xXWg298.png

wKiom1nmu0_xQBFFAAICWERLeMk845.png

wKioL1nmuJriHfHgAAGLnnrGNhg204.png




本文转自 ygqygq2 51CTO博客,原文链接:http://blog.51cto.com/ygqygq2/1973653,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL 缓存 关系型数据库
【Mycat】mycat综述(附安装配置)
【Mycat】mycat综述(附安装配置)
5 0
|
6月前
|
SQL 存储 关系型数据库
04MyCat - MyCat概述
04MyCat - MyCat概述
57 0
|
6月前
|
SQL cobar 关系型数据库
02MyCat - Cobar与MyCat
02MyCat - Cobar与MyCat
58 0
|
6月前
|
SQL cobar 应用服务中间件
03MyCat - MyCat的前世今生
03MyCat - MyCat的前世今生
54 1
|
SQL cobar 前端开发
MyCat:第二章:Mycat前世今生
MyCat:第二章:Mycat前世今生
219 0
|
SQL 存储 分布式计算
MyCat:第三章:Mycat概述
MyCat:第三章:Mycat概述
274 0
|
存储 安全 中间件
MyCat:第四章:Mycat中的概念
MyCat:第四章:Mycat中的概念
|
SQL 存储 关系型数据库
Mycat的常见面试题(全)
目录前言1. 主从复制的原理2. 分库分表是什么3. 全局表,ER表是什么4. 分片的规则有什么5. 全局ID有什么6. mycat的核心配置文件有哪些7. 高可用方案 前言 主要讲解mycat框架的面试题 关于mycat的知识框架可看我之前的文章 Mycat框架从入门到精通(全) 1. 主从复制的原理 这里所运用到的主从复制主要还是mysql的 master将数据的改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;当数据发生改变时,则将其
156 0
Mycat的常见面试题(全)
|
中间件 数据库 开发者
MyCat-需求说明 | 学习笔记
快速学习 MyCat -需求说明
66 0
MyCat-需求说明 | 学习笔记
|
存储 SQL 算法
MyCat - 分片 - MyCat 环境搭建 | 学习笔记
快速学习 MyCat - 分片 - MyCat 环境搭建
94 0
MyCat - 分片 - MyCat 环境搭建 | 学习笔记