Mycat-2015-09
2016-07-25 10:31:24 18 举报
AI智能生成
mycat学习
作者其他创作
大纲/内容
1、简介
MYCAT是什么
一个用于MySql读写分离和与数据切分高可用中间件
一个模拟为MySql Service的超级数据库代理
例如分页:
通过mysql的limit分页可以实现sql service和oracle的分页
一个可以平滑扩展支持1000亿大表的分布式数据库系统
一个可以管控多种关系数据库的数据库路由器
MYCAT的前世今生
2、系统切分及其解决方案
何为数据(系统)切分?
简答来说,就是指通过某种特定的条件,按照某个维度,
将我们存放在同一个数据库中数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负载的效果
切分模式
垂直(纵向)切分
优点
拆分后业务清晰,拆分规则明确。
系统之间整合或扩展容易。
数据维护简单。
缺点
部分业务表无法join,只能通过接口方式解决,提高了系统复杂度。
受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。
事务处理复杂。
水平切分
优点
拆分规则抽象好,join操作基本可以数据库做。
不存在单库大数据,高并发的性能瓶颈。
应用端改造较少。
提高了系统的稳定性跟负载能力。
缺点
拆分规则难以抽象。
那电商项目为例:
我们要统计用户的消费
——>我们水平以用户的userid切分成5个单片
但是如果我们要统计商户在某段时间内那些商品买的好
——>那我们之前按用户的userid切分有问题了
分片事务一致性难以解决。
数据多次扩展难度跟维护量极大。
之前我们水平以用户的userid切分成5个单片,分片规则是userid%5
现在数据量增大了想分9个,那么以前按userid%5的规则存储的
数据就需要导出来,然后重新按userid%9的规则重新分配
跨库join性能较差。
切分方案
360 Atlas
分支主题
alibaba cobar
分支主题
TDDL
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了)框架,
主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
heisenberg
强大好用的MYSQL分库分表中间件,有百度员工个人编写
Oceanus
vitess
Youtube出品的开源分布式MySQL工具集Vitess,自动分片存储MySQL数据表,将单个SQL查询改写为分布式发送到多个MySQL Server上,支持行缓存(比MySQL本身缓存效率高),支持复制容错,已用于Youtube生产环境,文档有待完善
rds/drds
分布式关系型数据库服务DRDS
阿里分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。
前身为淘宝TDDL,是近千个应用首选组件,已稳定服务了七年以上。
MyCat
遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持MySQL一双主多从,以及一主多从
有效管理数据源连接,基于数据分库,而不是分表的模式。
基于Nio实现,有效管理线程,高并发问题。
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。
支持2表join,甚至基于caltlet的多表join。
支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
支持多租户方案。
支持分布式事务(弱xa)
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的web,命令行监控。
支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。
3、Mycat中的概念
逻辑库
逻辑表

收藏
0 条评论
下一页