分布式数据中间件调研

MYSQL官方:

Connector/JJDBC Type 4驱动,纯java实现Mysql协议,并且不依赖Mysql客户端库(MySQL client libraries)

提供的功能:

1:Load balancing,用于读/写操作负载

如:jdbc:mysql:loadbalance://localhost:3306,localhost:3310/sakila

2:replication,用于读/写分离&读/写负载

如:jdbc:mysql:replication://master,slave1,slave2,slave3/test

缺点:

1:不支持分库分表

MySQLProxy

MySQL Proxy is not GA, and is notrecommended for Production use.

We recommend MySQL Router forproduction use. Download MySQL Router

MySQLFabric

主要功能:

1:可扩展

2:HA

3:sharding

缺点:

1:移动数据和分片时,依赖myqldump&mysql,操作不可控

2:数据分片策略不透明,文档不完善

阿里:

TDDL

公布的文档较少,只是部分开源,分表分库部分未开源,还需要依赖diamond

当当 Sharding-JDBC

开源地址:https://github.com/dangdangdotcom/sharding-jdbc/tree/master

Doc:http://dangdangdotcom.github.io/sharding-jdbc/

概述:Sharding-JDBC是JDBC的扩展封装,依jar的形式存在于工程内

特性:

1:分片(支持单库分表)

    支持全局内的group by、order by、limit

    支持inner

    join、outer join

    支分片算法"="、between&in

    分片算法客制化

2:读、写分离

3:柔性事务(目前仅支持最大努力发送)

4:兼容性

    ORM自适应

    连接池自适应

    外部依赖:

1:为了防止事务丢失,需要提供事务日志存储库

2:柔性事务采用异步尝试,需要部署独立的job和Zookeeper

核心概念

    LogicTable/ActualTable/DataNode/DynamicTable/BindingTable

    ShardingColumn/ShardingAlgorithm/SQLHint

缺点:

1:分片规则需要hard

    code到业务代码中,未来路线规划会简化

2:由于业务工程里各自配置多数据源(主、从),不能做到统一数据库连接管理

3:不支持全局表,比如:数据字典类的表

性能:

    基于Druid的高性能SQL解析

    多线程处理结果归并

    性能损失率约0.02%

稳定性

    完善的疲劳测试,普通查询无Full GC(GROUP BY除外)

SQL限制

    DDL/UNION/UNION ALL/批量insert/DISTINCT/子语句,未来路线规划会支持DISTINCT

    单条数据insert必须包括分片键或者hint分片键

    不支持insert into … select

    不支持having,未来路线规划会支持

MyCat

完全开源

基于阿里Cobar

是应用与数据库之间的中间层(代理)

特性:

    基于心跳的自动故障切换,支持读写分离

    单库内任意join

    支持全局表(字典类的表)

    分片规则丰富

    提供web、命令行监控

    柔性事务:XA

    支持IP黑白名单、SQL黑名单、SQL注入攻击拦拦截

    SQL限制

    不支持批量插入

缺点:

    需要保证中间件的可用性,会增加运维成本及复杂度

优点:

    有效解决了数据库链接数多的问题,因为各工程应用只连接中间件,中间件代理了真实的物    理链接,并且与后端mysql物理链接是复用型的

    所有的分库分表等规则集中配置在中间件上,更可控

360 Atlas

基于Mysql Proxy改造

中间件,作为程序访问数据库的代理

主要功能:

    读写分离

    从库LB

    IP过滤

    自动分表(策略:shard key、range、hash)

    DB平滑上、下线

    自动摘除宕机的DB

缺点:

    事务不能跨分片

扩容:

    只支持以range方式的节点扩展,修改配置文件后重启生效

美团DBProxy

基于360Atlas

缺点:

    暂时只支持分表,不支持分库分表

扩容:

    支持平滑backend上下线

    支持DBProxy平滑重启功能

你可能感兴趣的:(分布式数据中间件调研)