mycat概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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开发版)。
是第一代改良版——Mycat诞生。
Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展成为一
个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。
2014年Mycat首次在上海的《中华架构师》大会上对外宣讲,引发围观,更多的人
参与进来,随后越来越多的项目采用了Mycat 超过200万
定期更新的《Mycat权威指南》,绝大多数技术问题,都可以通过文档和社区交 流来解决 式,名利双收,一举两得。
如果需要专业技术支持服务,也可以跟Mycat社区交流,通过赞助开源项目的方
系统切分及其解决方案
何为数据(系统)切分?
简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个 数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负 载的效果。
Oceanus
58 OCEANUS致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。 拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合, 扩容有标准模式,减少意外错误的发生
DATANODE:数据源节点。为一个数据源命名,配置链接属性、报警实现 NAMENODE:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重 TABLE:映射表。匹配解析SQL中的TABLE名称,命中TABLE标签的NAME属性值后,会执行约定的路由逻辑 BEAN:实体。由其他标签引用,实体类必须有无参的构造函数 TRACKER:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其 中的回调函数,便于监控和优化系统
MYCAT是什么
一个用于MySQL读写分离和与数据切分的高可用中间件
一个模拟为MySQL
Server的超级数据库代理
一个能平滑扩展支持1000亿大表的分布式数据库系统 一个可管控多种关系数据库的数据库路由器
MYCAT之前世今生
2013年阿里的Cobar在某大型项目中使用过程中发现存在一些比较严重的问题,于
TDDL
淘宝根据自己的业务特点开发了TDDL(TAOBAO DISTRIBUTED DATA LAYER 外号:头都大了 )框架,主要 解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 JDBC DATASOURCE实现,具有主备,读写分离,动态数据库配置等功能。 TDDL所处的位置(TDDL通用数据访问层,部署在客户端的JAR包,用于将用户的SQL路由到指定的数据库 中). 1.数据库主备和动态切换 2.带权重的读写分离 3.单线程读重试 4.集中式数据源信息管理和动态变更 5.剥离的稳定JBOSS数据源 6.支持MYSQL和ORACLE数据库 7.基于JDBC规范,很容易扩展支持实现JDBC规范的数据源 8.无SERVER,CLIENT-JAR形式存在,应用直连数据库 9.读写次数,并发度流程控制,动态变更 10.可分析的日志打印,日志流控,动态变更
切分方案
-360 ATLAS -ALIBABA COBAR -MYCAT -TDDL -HEISENBERG -OCEANUS -VITESS -ONEPROXY -DRDS
360
Atlas
TLAS是由 QIHOO 360, WEB平台部基础架构团队开发维护的一个基于MYSQL协议的数据中间层项目。它是在MYSQL-PROXY 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用ATLAS运行的MYSQL业务,每天承载的读 写请求数达几十亿条。 主要功能: * 读写分离 * 从库负载均衡 * IP过滤 * SQL语句黑白名单 * 自动分表
Байду номын сангаасvitess
谷歌开发的数据库中间件,集群基于ZOOKEEPER管理,通过RPC方式进行数据处理,总体分为,SERVER ,COMMAND LINE,GUI监控 3部分。
rds/drds
分布式关系型数据库服务DRDS 阿里分布式关系型数据库服务(DISTRIBUTE RELATIONAL DATABASE SERVICE,简称
切分模式:
A.垂直(纵向)切分。 B.水平切分。
垂直拆分
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布 到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图: 优点: --拆分后业务清晰,拆分规则明确。 --系统之间整合或扩展容易。 --数据维护简单。 缺点: --部分业务表无法JOIN,只能通过接口方式解决,提高了系统复杂度。 --受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。 --事务处理复杂。
heisenberg
强大好用的MYSQL分库分表中间件,由百度员工个人编写。
分库分表与应用脱离,分库表如同使用单库表一样 减少DB 连接数压力 — 热重启配置 — 可水平扩容 — 遵守MYSQL原生协议 — 无语言限制,MYSQLCLIENT,C,JAVA等都可以使用 — HEISENBERG服务器通过管理命令可以查看,如连接数,线程池,结点等,并可以调整 —
截至2014年7月,Mycat官方QQ群(106088787)已经超过2700人,大多数为资
深IT工程师、架构师、DBA、以及一些CXO和高端猎头,成为国内具有影响力的高 端IT专业群 到Mycat里,从而吸引和聚集了一大批业内大数据和云计算方面的资深工程师, Mycat社区成为名副其实的国内大数据领域实力派成员。
alibaba
cobar
COBAR是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数 据库一样为您提供海量数据服务.
COBAR的分布式主要是通过将表放入不同的库来实现: 1. COBAR支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分 2. COBAR也支持将不同的表放入不同的库 3. 多数情况下,用户会将以上两种方式混合使用 这里需要强调的是,COBAR不支持将一张表,例如TEST表拆分成TEST_1, TEST_2, TEST_3.....放在同一个库中,必须将拆分后的表分 别放入不同的库来实现分布式。 HA: 在用户配置了MYSQL心跳的情况下,COBAR可以自动向后端连接的MYSQL发送心跳,判断MYSQL运行状况,一旦运行出现异常, COBAR可以自动切换到备机工作。但需要强调的是: 1. COBAR的主备切换有两种触发方式,一种是用户手动触发,一种是COBAR的心跳语句检测到异常后自动触发。那么,当心跳检 测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,COBAR不会在主机恢复时自动切换回主机,除非备机 的心跳也返回异常。 2. COBAR只检查MYSQL主备异常,不关心主备之间的数据同步,因此用户需要在使用COBAR之前在MYSQL主备上配置双向同步, 详情可以参阅MYSQL参考手册。 其次,我们也需要注意COBAR的功能约束: 1) 不支持跨库情况下的JOIN、分页、排序、子查询操作。 2) SET语句执行会被忽略,事务和字符集设置除外。 3) 分库情况下,INSERT语句必须包含拆分字段列名。 4) 分库情况下,UPDATE语句不能更新拆分字段的值。 5) 不支持SAVEPOINT操作。 6) 暂时只支持MYSQL数据节点。
MYCAT
Mycat在线视频培训
代码demo: http://songwie.com/teachs?searthstr=mycat&start=0
© Mycat 开源组
内容:
-MYCAT 是什么? -MYCAT的前世今生。 -MYCAT社区发展。 -数据库切分及其解决方案。 -MYCAT特性及其解决方案。 -MYCAT入门介绍。
Mycat社区首次提出BigSQL的概念,并逐步将大数据和实时计算等先进技术引入
Mycat社区里不断有优秀工程师被创业公司挖走,为了能更好的支持创业公司并
寻求更多的优秀工程师参与采用,Mycat社区目前已经开始开展在线高端IT培训, 培养高端Java架构师、工程师。
为什么选择MYCAT
基于阿里的成熟项目Cobar而来,它有过大量的大规模生产案例
切分的处理难点:
前面讲了垂直切分跟水平切分的不同跟优缺点,会发现每种切分方式都有缺点,但共同的特点缺点有: -引入分布式事务的问题。 -跨节点JOIN 的问题。 -跨节点合并排序分页问题。 针对数据源管理,目前主要有两种思路: A. 客户端模式,在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个 数据库,在模块内完成数据的整合; 优点:相对简单,无性能损耗。 缺点:不够通用,数据库连接的处理复杂,对业务不够透明,处理复杂。 B. 通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明; 优点:通用,对应用透明,改造少。 缺点:实现难度大,有二次转发性能损失。 切分原则: -尽量不切分,架构是进化而来,不是一蹴而就。 -最大可能的找到最合适的切分维度。 -由于数据库中间件对数据JOIN 实现的优劣难以把握,而且实现高性能难度极大,业务读取 尽量少使用多表JOIN -尽量通过数据冗余,分组避免数据垮库多表JOIN。 -尽量避免分布式事务。 -单表切分数据1000万以内。
社区非常活跃,维护者的水平很高,重大Bug都24小时修复
目前的生产案例是开源项目中为数最多的,而且很多是大型项目 Mycat的版本分为长期支持版本和当前最新版本两种,前者出现重大Bug后,还
会及时修复,解决了生产中应用的后顾之忧
Mycat的资料非常全,包括志愿者提供的资料,用户分享的经验资料,以及官方
2015年7月为止,Mycat项目总共有16个Committer,其中核心参与者的年薪总额 2015年5月,由核心参与者们一起编写的第一本官方权威指南《Mycat权威指南》电
子版发布,累计超过500本,成为开源项目中的首创。 移动应用、O2O的众多领域和公司。
截至2015年7月,超过100个项目采用Mycat,涵盖银行、电信、电子商务、物流、
水平切分
相对于垂直拆分,水平拆分不是将表的数据做分类,而是按照某个字段的某种规则来分散到多个库之中,每 个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中 的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,主要有分表,分库两种模式,如图:
优点: 不存在单库大数据,高并发的性能瓶颈。 对应用透明,应用端改造较少。 按照合理拆分规则拆分,JOIN操作基本避免跨库。 提高了系统的稳定性跟负载能力。 缺点: 拆分规则难以抽象。 分片事务一致性难以解决。 数据多次扩展难度跟维护量极大。 跨库JOIN性能较差。
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开发版)。
是第一代改良版——Mycat诞生。
Mycat开源以后,一些Cobar的用户参与了Mycat的开发,最终Mycat发展成为一
个由众多软件公司的实力派架构师和资深开发人员维护的社区型开源软件。
2014年Mycat首次在上海的《中华架构师》大会上对外宣讲,引发围观,更多的人
参与进来,随后越来越多的项目采用了Mycat 超过200万
定期更新的《Mycat权威指南》,绝大多数技术问题,都可以通过文档和社区交 流来解决 式,名利双收,一举两得。
如果需要专业技术支持服务,也可以跟Mycat社区交流,通过赞助开源项目的方
系统切分及其解决方案
何为数据(系统)切分?
简单来说,就是指通过某种特定的条件,按照某个维度,将我们存放在同一个 数据库中的数据分散存放到多个数据库(主机)上面以达到分散单库(主机)负 载的效果。
Oceanus
58 OCEANUS致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。 拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合, 扩容有标准模式,减少意外错误的发生
DATANODE:数据源节点。为一个数据源命名,配置链接属性、报警实现 NAMENODE:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重 TABLE:映射表。匹配解析SQL中的TABLE名称,命中TABLE标签的NAME属性值后,会执行约定的路由逻辑 BEAN:实体。由其他标签引用,实体类必须有无参的构造函数 TRACKER:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其 中的回调函数,便于监控和优化系统
MYCAT是什么
一个用于MySQL读写分离和与数据切分的高可用中间件
一个模拟为MySQL
Server的超级数据库代理
一个能平滑扩展支持1000亿大表的分布式数据库系统 一个可管控多种关系数据库的数据库路由器
MYCAT之前世今生
2013年阿里的Cobar在某大型项目中使用过程中发现存在一些比较严重的问题,于
TDDL
淘宝根据自己的业务特点开发了TDDL(TAOBAO DISTRIBUTED DATA LAYER 外号:头都大了 )框架,主要 解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 JDBC DATASOURCE实现,具有主备,读写分离,动态数据库配置等功能。 TDDL所处的位置(TDDL通用数据访问层,部署在客户端的JAR包,用于将用户的SQL路由到指定的数据库 中). 1.数据库主备和动态切换 2.带权重的读写分离 3.单线程读重试 4.集中式数据源信息管理和动态变更 5.剥离的稳定JBOSS数据源 6.支持MYSQL和ORACLE数据库 7.基于JDBC规范,很容易扩展支持实现JDBC规范的数据源 8.无SERVER,CLIENT-JAR形式存在,应用直连数据库 9.读写次数,并发度流程控制,动态变更 10.可分析的日志打印,日志流控,动态变更
切分方案
-360 ATLAS -ALIBABA COBAR -MYCAT -TDDL -HEISENBERG -OCEANUS -VITESS -ONEPROXY -DRDS
360
Atlas
TLAS是由 QIHOO 360, WEB平台部基础架构团队开发维护的一个基于MYSQL协议的数据中间层项目。它是在MYSQL-PROXY 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用ATLAS运行的MYSQL业务,每天承载的读 写请求数达几十亿条。 主要功能: * 读写分离 * 从库负载均衡 * IP过滤 * SQL语句黑白名单 * 自动分表
Байду номын сангаасvitess
谷歌开发的数据库中间件,集群基于ZOOKEEPER管理,通过RPC方式进行数据处理,总体分为,SERVER ,COMMAND LINE,GUI监控 3部分。
rds/drds
分布式关系型数据库服务DRDS 阿里分布式关系型数据库服务(DISTRIBUTE RELATIONAL DATABASE SERVICE,简称
切分模式:
A.垂直(纵向)切分。 B.水平切分。
垂直拆分
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分类,分布 到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面,如下图: 优点: --拆分后业务清晰,拆分规则明确。 --系统之间整合或扩展容易。 --数据维护简单。 缺点: --部分业务表无法JOIN,只能通过接口方式解决,提高了系统复杂度。 --受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高。 --事务处理复杂。
heisenberg
强大好用的MYSQL分库分表中间件,由百度员工个人编写。
分库分表与应用脱离,分库表如同使用单库表一样 减少DB 连接数压力 — 热重启配置 — 可水平扩容 — 遵守MYSQL原生协议 — 无语言限制,MYSQLCLIENT,C,JAVA等都可以使用 — HEISENBERG服务器通过管理命令可以查看,如连接数,线程池,结点等,并可以调整 —
截至2014年7月,Mycat官方QQ群(106088787)已经超过2700人,大多数为资
深IT工程师、架构师、DBA、以及一些CXO和高端猎头,成为国内具有影响力的高 端IT专业群 到Mycat里,从而吸引和聚集了一大批业内大数据和云计算方面的资深工程师, Mycat社区成为名副其实的国内大数据领域实力派成员。
alibaba
cobar
COBAR是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数 据库一样为您提供海量数据服务.
COBAR的分布式主要是通过将表放入不同的库来实现: 1. COBAR支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分 2. COBAR也支持将不同的表放入不同的库 3. 多数情况下,用户会将以上两种方式混合使用 这里需要强调的是,COBAR不支持将一张表,例如TEST表拆分成TEST_1, TEST_2, TEST_3.....放在同一个库中,必须将拆分后的表分 别放入不同的库来实现分布式。 HA: 在用户配置了MYSQL心跳的情况下,COBAR可以自动向后端连接的MYSQL发送心跳,判断MYSQL运行状况,一旦运行出现异常, COBAR可以自动切换到备机工作。但需要强调的是: 1. COBAR的主备切换有两种触发方式,一种是用户手动触发,一种是COBAR的心跳语句检测到异常后自动触发。那么,当心跳检 测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,COBAR不会在主机恢复时自动切换回主机,除非备机 的心跳也返回异常。 2. COBAR只检查MYSQL主备异常,不关心主备之间的数据同步,因此用户需要在使用COBAR之前在MYSQL主备上配置双向同步, 详情可以参阅MYSQL参考手册。 其次,我们也需要注意COBAR的功能约束: 1) 不支持跨库情况下的JOIN、分页、排序、子查询操作。 2) SET语句执行会被忽略,事务和字符集设置除外。 3) 分库情况下,INSERT语句必须包含拆分字段列名。 4) 分库情况下,UPDATE语句不能更新拆分字段的值。 5) 不支持SAVEPOINT操作。 6) 暂时只支持MYSQL数据节点。
MYCAT
Mycat在线视频培训
代码demo: http://songwie.com/teachs?searthstr=mycat&start=0
© Mycat 开源组
内容:
-MYCAT 是什么? -MYCAT的前世今生。 -MYCAT社区发展。 -数据库切分及其解决方案。 -MYCAT特性及其解决方案。 -MYCAT入门介绍。
Mycat社区首次提出BigSQL的概念,并逐步将大数据和实时计算等先进技术引入
Mycat社区里不断有优秀工程师被创业公司挖走,为了能更好的支持创业公司并
寻求更多的优秀工程师参与采用,Mycat社区目前已经开始开展在线高端IT培训, 培养高端Java架构师、工程师。
为什么选择MYCAT
基于阿里的成熟项目Cobar而来,它有过大量的大规模生产案例
切分的处理难点:
前面讲了垂直切分跟水平切分的不同跟优缺点,会发现每种切分方式都有缺点,但共同的特点缺点有: -引入分布式事务的问题。 -跨节点JOIN 的问题。 -跨节点合并排序分页问题。 针对数据源管理,目前主要有两种思路: A. 客户端模式,在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个 数据库,在模块内完成数据的整合; 优点:相对简单,无性能损耗。 缺点:不够通用,数据库连接的处理复杂,对业务不够透明,处理复杂。 B. 通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明; 优点:通用,对应用透明,改造少。 缺点:实现难度大,有二次转发性能损失。 切分原则: -尽量不切分,架构是进化而来,不是一蹴而就。 -最大可能的找到最合适的切分维度。 -由于数据库中间件对数据JOIN 实现的优劣难以把握,而且实现高性能难度极大,业务读取 尽量少使用多表JOIN -尽量通过数据冗余,分组避免数据垮库多表JOIN。 -尽量避免分布式事务。 -单表切分数据1000万以内。
社区非常活跃,维护者的水平很高,重大Bug都24小时修复
目前的生产案例是开源项目中为数最多的,而且很多是大型项目 Mycat的版本分为长期支持版本和当前最新版本两种,前者出现重大Bug后,还
会及时修复,解决了生产中应用的后顾之忧
Mycat的资料非常全,包括志愿者提供的资料,用户分享的经验资料,以及官方
2015年7月为止,Mycat项目总共有16个Committer,其中核心参与者的年薪总额 2015年5月,由核心参与者们一起编写的第一本官方权威指南《Mycat权威指南》电
子版发布,累计超过500本,成为开源项目中的首创。 移动应用、O2O的众多领域和公司。
截至2015年7月,超过100个项目采用Mycat,涵盖银行、电信、电子商务、物流、
水平切分
相对于垂直拆分,水平拆分不是将表的数据做分类,而是按照某个字段的某种规则来分散到多个库之中,每 个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据行的切分,就是将表中 的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库中,主要有分表,分库两种模式,如图:
优点: 不存在单库大数据,高并发的性能瓶颈。 对应用透明,应用端改造较少。 按照合理拆分规则拆分,JOIN操作基本避免跨库。 提高了系统的稳定性跟负载能力。 缺点: 拆分规则难以抽象。 分片事务一致性难以解决。 数据多次扩展难度跟维护量极大。 跨库JOIN性能较差。