Mycat-介绍

1, myscat是什么:

?一个用于MySQL读写分离和与数据切分的高可用中间件
?一个模拟为MySQLServer的超级数据库代理
?一个能平滑扩展支持1000亿大表的分布式数据库系统 (普通单表1kw以下)
?一个可管控多种关系数据库的数据库路由器

2, mycat来自2013年阿里的Cobar的改良版, 截至2015年, 成为大多数公司的数据解决方案

?2013年阿里的Cobar在某大型项目中使用过程中发现存在一些比较严重的问题,于是第一代改良版——Mycat诞生。
?Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展成为一个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。
?2014年Mycat首次在上海的《中华架构师》大会上对外宣讲,引发围观,更多的人参与进来,随后越来越多的项目采用了Mycat
?2015年7月为止,Mycat项目总共有16个Committer,其中核心参与者的年薪总额超过200万
?2015年5月,由核心参与者们一起编写的第一本官方权威指南《Mycat权威指南》电子版发布,累计超过500本,成为开源项目中的首创。
?截至2015年7月,超过100个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O的众多领域和公司。

?截至2014年7月,Mycat官方QQ群已经超过2700人,大多数为资深IT工程师、架构师、DBA、以及一些CXO和高端猎头,成为国内具有影响力的高端IT专业群
?Mycat社区首次提出BigSQL的概念,并逐步将大数据和实时计算等先进技术引入到Mycat里,从而吸引和聚集了一大批业内大数据和云计算方面的资深工程师,Mycat社区成为名副其实的国内大数据领域实力派成员。
?Mycat社区里不断有优秀工程师被创业公司挖走,为了能更好的支持创业公司并寻求更多的优秀工程师参与采用,Mycat社区目前已经开始开展在线高端IT培训,培养高端Java架构师、工程师。

3, 系统切分及解决方案

数据切分:

简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负载的效果。

切分模式;

垂直切分,(单库性能瓶颈, 治标不治本)

一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面

优点:

--拆分后业务清晰,拆分规则明确。--系统之间整合或扩展容易。--数据维护简单。

缺点;

--部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。--受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高--事务处理复杂。

水平切分

按照某个字段的某种规则来分散到多个库之中,每个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,主要有分表,分库两种模式

优点;

不存在单库大数据,高并发的性能瓶颈。对应用透明,应用端改造较少。按照合理拆分规则拆分,join操作基本避免跨库。提高了系统的稳定性跟负载能力。

缺点;

拆分规则难以抽象。分片事务一致性难以解决。数据多次扩展难度跟维护量极大。跨库join性能较差

4, 拆分处理:

客户端拆分:

在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个数据库,在模块内完成数据的整合;

优点:相对简单,无性能损耗。缺点:不够通用,数据库连接的处理复杂,对业务不够透明,处理复杂

通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明;

优点:通用,对应用透明,改造少。缺点:实现难度大,有二次转发性能损失。单机损失30% 左右

5, mycat中间件架构:

1, application提交sql后, 经过sql解析, 优化, 路由, 解析为对应的sql指令, 交给具体的sql机器执行

2, 个节点的计算结果进行结果集合并,

3, manager负责master的集群管理, 内存管理等

6, 技术支持:

-遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。

-基于心跳的自动故障切换,支持读写分离,支持MySQL一双主多从,以及一主多从

-有效管理数据源连接,基于数据分库,而不是分表的模式。

-基于Nio实现,有效管理线程,高并发问题。

-支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。

-支持2表join,甚至基于caltlet的多表join。

-支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。

-支持多租户方案。-支持分布式事务(弱xa)

-支持全局序列号,解决分布式下的主键生成问题。

-分片规则丰富,插件化开发,易于扩展。

-强大的web,命令行监控。

-支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server、mongodb、巨杉。

-集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

7, mycat概念:

逻辑库, 逻辑表: 由于作为集群的master, 所以不存放数据, 只存放库表的定义信息

分片规则; 对数据的分片存放

系列来自尚学堂视频

时间: 2024-10-26 18:21:46

Mycat-介绍的相关文章

MYCAT介绍

从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里. MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.SQL Server.Oracle.

MyCat 介绍、分片规则、调优的内容收集

一.MyCat的简介 MyCat高可用.负载均衡架构图: 详细知识点:  MySQL分布式集群之MyCAT(一)简介(修正) 二.MyCat的schema.xml讲解 详细知识点:MySQL分布式集群之MyCAT(二)schema详解(修正) 三.MyCat的分片规则 详细知识点:MySQL分布式集群之MyCAT(三)rule的分析 四.MyCat调优 详细知识点:MySQL分布式集群之MyCAT调优初探(四)

高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

点击链接加入群[Dubbo技术交流2群]:https://jq.qq.com/?_wv=1027&k=46DcDFI 一.环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso JDK版本:jdk1.7.0_45 MyCat版本:Mycat-server-1.4-release-20151019230038-linux.tar.gz MyCat节点IP:192.168.1.203      主机名:edu-mycat-01  主机配置:4核CPU.4G内存 MySQL版本:

Mycat实现读写分离(一)

Mycat介绍 Mycat是一个国产中间件产品,作用在应用层和数据库之间架桥,使应用通过MyCat来对后端数据库进行管理,是一款国人自主的开源的中间件产品.算是比较优秀的一款,前身是阿里公司在维护,很多公司也慢慢的在尝试接入这个产品,但不得不说官方文档似乎做的不太友好.至于为什么选择MyCat可能只有使用者知道了,下面我们用比较通俗的语言来介绍这款产品,也方便自己以后翻阅. Mycat的安装 1)由于需要JDK支持,首先安装JDK环境: [[email protected] local]# ta

MyCAT学习总结

MyCAT介绍 简单的说,MyCAT就是: ?一个彻底开源的,面向企业应用开发的“大数据库集群” ?支持事务.ACID(指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability)).可以替代Mysql的加强版数据库 ?一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 ?一个融合内存缓存技术.Nosql技术.HDFS大数据的新型SQL Server ?结合传

Linux下mysql基于MyCat实现主从复制和读写分离

1.1 MyCat介绍及应用场景MyCat介绍MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里.MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.S

Mycat分表分库 

一.Mycat介绍 Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里. 二.Mycat基础环境搭建 首先需要下载Mycat必需的一些环境:

Mycat分表分库  

一.Mycat介绍 Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里. 二.Mycat基础环境搭建 首先需要下载Mycat必需的一些环境:

JAVAEE——宜立方商城13:Mycat数据库分片、主从复制、读写分离、100%Linux中成功安装Mysql的方法

1 海量数据的存储问题 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机.它通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支持,来获取性能上的提升. 但是,在有些场合NoSQL一些折衷是无法满足使用场景的,就比如有些使用场景是绝对要有事务与安全指标的.这个时候NoSQL肯定是无法满足的,所以还是需要使用关系性数据库.如果使用关系型数据库

Mycat入门教程

mycat介绍 介绍在官方网站上有比较详细的介绍,在这里复制粘贴没什么意思,大家到官网上看 官网链接 前置条件 本教程是在window环境下运行的,实际生产推荐在Linux上运行. 必备条件(自行安装,如果不会装请先打好基础在来学习): JDK:建议是1.7及其以上. MySQL:必须是5.5及其以上. 拓扑结构 两张表users和item,三个数据库db01,db02,db03(三个库在一个数据库实例上) users只在db01中存储. item表被分割到db02和db03中存储. creat