360 Atlas

较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。

主要功能:
        1. 读写分离
        2. 从库负载均衡
        3. IP过滤
        4. SQL语句黑白名单
        5. 自动分表

Cobar (不维护了)

Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

Cobar的分布式主要是通过将表放入不同的库来实现:
        1. 支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
        2. 支持将不同的表放入不同的库
        3. 多数情况下,用户会将以上两种方式混合使用。

这里需要强调的是,Cobar 不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

在用户配置了 MySQL 心跳的情况下,Cobar 可以自动向后端连接的 MySQL 发送心跳,判断 MySQL 运行状况,一旦运行出现异常,Cobar 可以自动切换到备机工作。

但需要强调的是:
        1. Cobar 的主备切换有两种触发方式,一种是用户手动触发,一种是 Cobar 的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。
        
        2. Cobar 只检查 MySQL 主备异常,不关心主备之间的数据同步,因此用户需要在使用 Cobar 之前在 MySQL 主备上配置双向同步,详情可以参阅MySQL参考手册。

其次,我们也需要注意Cobar的功能约束:
        1. 不支持跨库情况下的join、分页、排序、子查询操作。
        2. SELECT 语句执行会被忽略,事务和字符集设置除外。
        3. 分库情况下,insert 语句必须包含拆分字段列名。
        4. 分库情况下,update 语句不能更新拆分字段的值。
        5. 不支持 SAVEPOINT 操作。
        6. 暂时只支持 MySQL数据节点。

Mycat

前身 Cobar,开源,较为活跃。

特点:
遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持 MySQL 一双主多从,以及一主多从
有效管理数据源连接,基于数据分库,而不是分表的模式。
基于 NIO 实现,有效管理线程,高并发问题。
支持数据的多片自动路由与聚合,支持 sum , count , max 等常用的聚合函数。
支持2表 join,甚至基于 caltlet 的多表 join。
支持通过全局表,ER 关系的分片策略,实现了高效的多表 join 查询。
支持多租户方案。
支持分布式事务(弱xa)
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的 web,命令行监控。
支持前端作为 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于 ZooKeeper 管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

参考有道:MySQL 中间件 Mycat【Blog】.note ,Blog:MySQL 中间件 Mycat
TDDL

已经不再使用,下一代是 DDRS。
        
        淘宝根据自己的业务特点开发了 TDDL (Taobao Distributed Data Layer 外号:头都大了 )框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource 实现,具有主备,读写分离,动态数据库配置等功能。

TDDL 通过部署在客户端的 jar 包,将用户的 SQL 路由到指定的数据库中。

功能:
数据库主备和动态切换
带权重的读写分离
单线程读重试
集中式数据源信息管理和动态变更
剥离的稳定 jboss 数据源
支持 MySQL 和 Oracle 数据库
基于 JDBC 规范,很容易扩展支持实现 JDBC 规范的数据源
无 Server,Client,Jar 形式存在,应用直连数据库
读写次数,并发度流程控制,动态变更
可分析的日志打印,日志流控,动态变更

Heisenberg

整合 Cobar、TDDL,目前并不活跃,由百度员工个人编写。

功能:
分库分表与应用脱离,分库表如同使用单库表一样
减少 DB 连接数压力
热重启配置
可水平扩容
遵守 MySQL 原生协议
无语言限制,MySQLClient,C,Java等都可以使用
        Heisenberg服务器通过管理命令可以查看,如连接数,线程池,结点等,并可以调整

Oceanus

用得较少,58 Oceanus 致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合,扩容有标准模式,减少意外错误的发生 datanode:数据源节点。为一个数据源命名,配置链接属性、报警实现。

主要概念:
namenode:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重
table:映射表。匹配解析sql中的table名称,命中table标签的name属性值后,会执行约定的路由逻辑
bean:实体。由其他标签引用,实体类必须有无参的构造函数
tracker:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其中的回调函数,便于监控和优化系统

Vitess

较全 高大上,和开发中的 Mycat2.0 类似。谷歌开发的数据库中间件,集群基于 ZooKeeper 管理,通过 RPC 方式进行数据处理,总体分为,server,command line,gui监控 3部分。

OneProxy

商业、收费。

OneProxy 分布式中间件,是平民软件完全自主开发的分布式数据访问层,帮助用户在 MySQL/PostgreSQL 集群上快速搭建支持分库分表的分布式数据库中间件,也是一款具有 SQ L白名单(防 SQL 注入)及 IP 白名单功能的 SQL 防火墙软件。采用与 MySQL Proxy 一致的反向协议输出模式,对应用非常简单和透明易用,让用户畏惧的分库分表(Horizontal Partitioning)工作变得极其简单可控。基于 Libevent 机制实现,单个实例可以实现25万的 SQL 转发能力,用一个 OneProxy 节点可以带动整个 MySQL 集群。

DRDS(推荐)

整合云服务,收费、Cobar、TDDL整合,商用,首选。

阿里分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝 TDDL,是近千个应用首选组件,已稳定服务了七年以上。
        
转自:https://blog.csdn.net/jerome_s/article/details/53966569

MySQL 中间件汇总比较的更多相关文章

  1. mysql中间件proxysql实现mysql读写分离

    目录 1. mysql实现读写分离的方式 2. ProxySQL简介 3. ProxySQL安装 4. ProxySQL的Admin管理接口 5. 和admin管理接口相关的变量 5.1 admin- ...

  2. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  3. mysql中间件研究(Atlas,cobar,TDDL)

    mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差.下面介绍几款能代替其的mysql开源中间件产品,Atlas ...

  4. MySQL中间件Atlas安装及使用

    简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量 ...

  5. MySQL登录汇总

    --MySQL登录汇总 --------------------2014/5/17 1. ERROR 1045错误ERROR 1045 (28000): Access denied for user ...

  6. MySQL中间件之ProxySQL(1):简介和安装

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL简介 之前的文章里,介绍了一个MySQL的中间件: ...

  7. MySQL中间件方案盘点_搜狐科技_搜狐网

    MySQL中间件方案盘点_搜狐科技_搜狐网

  8. mysql中间件研究(Atlas,cobar,TDDL)[转载]

    mysql中间件研究(Atlas,cobar,TDDL) mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差. ...

  9. MySQL优化汇总

    1)mysql优化汇总,转载自网络

随机推荐

  1. (二)springMvc原理和手写springMvc框架

    我们从两个方面了解springmvc执行原理,首先我们去熟悉springmvc执行的过程,然后知道原理后通过手写springmvc去深入了解代码中执行过程. (一)SpringMVC流程图 (二)Sp ...

  2. atcoder D - Game on Tree(树形dp+尼姆博弈)

    题目链接:http://agc017.contest.atcoder.jp/tasks/agc017_d 题解:简单的树上的尼姆博弈,这个应该看的出来然后就是简单的树形dp然后异或一下就行. #inc ...

  3. lightoj 1074 - Extended Traffic(spfa+负环判断)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1074 题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市I到另一个城市J ...

  4. PHP 实现字符串表达式计算

    什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执 ...

  5. Django + Gunicorn + Nginx 部署之路

    前言 最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候 Django 中的路由配置使用 正则 来进行的,但是我有 ...

  6. java多线程之Executor框架

    Executor框架简介 Executor框架的结构 Executor框架主要由3大部分组成: 任务: 包括被执行的任务需要实现的接口:Runable 接口.Callable接口: 任务的执行: 包括 ...

  7. CF979C Kuro and Walking Route(简单的dfs/树形dp)

    题意:给出一个$n$个点,$n-1$条边的无向连通图,给出两个点$x,y$,经过$x$后的路径上就不能经过$y$,问可以走的路径$(u,v)$有多少条,($(u,v)$和$(v,u)$考虑为两条不同的 ...

  8. JSP中的两种跳转方式分别是什么,有什么区别?

    forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect("跳转页面地址 ...

  9. WInform中实现设置ZedGraph中曲线的X轴与Y轴的上限与下限

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  10. ACM团队招新赛题解

    标程代码全部为C语言编写.代码中的#if LOCAL_ 至#endif为本地一些调试内容,可以忽略. Xenny的A+B(1)[容易][签到] 签到题,做不出的话可能你有点不太适合ACM了. Xenn ...