1、简介
MyCat 曾是阿里开源产品Cobar,Cobar核心功能和优势是 MySQL 数据库分片。Mycat 是基于 cobar 演变而来,对 cobar 的代码进行了彻底的重构,使用 NIO 重构了网络模块,并且优化了 Buffer 内核,增强了聚合,Join 等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。MyCAT是一个新颖的数据库中间件产品支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。你可以像使用mysql一样使用mycat。对于开发人员来说根本感觉不到mycat的存在。
2、架构
3、应用场景
解决海量数据存储方案
4、核心概念- 分片
通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。
(1)垂直(纵向)切分
一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。
(2)水平(横向)切分
另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。
5、核心概念- 分片规则
(1)按主键范围分片 rang-long
默认配置如下:
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2
(2)一致性哈希murmur
将制定的主键,均匀的分布在各个分片中。
6、与数据库配合完成读写分离
MySQL负责主从复制;
MyCat负责读写自动切换