美文网首页
分布式数据中间件调研

分布式数据中间件调研

作者: 风沙第一 | 来源:发表于2017-01-19 15:10 被阅读0次

    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平滑重启功能

    相关文章

      网友评论

          本文标题:分布式数据中间件调研

          本文链接:https://www.haomeiwen.com/subject/pzeibttx.html