• 分库分表-中间件对比


    分库分表-中间件对比

     

    客户端架构

    • good:
      1、客户端直连数据库,降低依赖风险
      2、集成成本低,无需额外运维的组件
      3、没有proxy的lvs的单点问题
    • bad
      1、扩展性一般
      2、分片逻辑的压力在客户端

    代理架构

    • good:
      1、统一管理所有到数据库的连接,连接复用
      2、基础查询功能抽象,减少代码耦合
      3、易于实现监控、数据迁移、连接管理等功能
    • bad
      1、独立部署和运维独立的代理中间件
      2、代理连接数据库、性能有损失或额外风险
     类型作者分库分表读写分离依赖是否开源语言源码库
    shardingsphere lib 当当 java https://github.com/apache/incubator-shardingsphere
    kingshard proxy 个人 Go https://github.com/flike/kingshard
    heisenberg proxy 百度-熊照 java https://github.com/brucexx/heisenberg
    DRDS proxy 阿里云 java ------

    shardingsphere:目前加入apache孵化器,个人感觉lib类是最优选择(支持度较高、代码优美、集成简单)
    kingshard:proxy类综合度较高,目前开发社区较活跃
    DRDS:阿里云提共的解决方案,云上服务优先选择(运维、集成、支持度较高)
    heisenberg:百度-熊照开源,改编自cobar, 结合了cobar和TDDL的优势,让其分片策略变为分库表策略。连接nio优化。

    这里只整理了个人觉得较合适的中间件对比,仅代表个人观点。

    _______________________________________________________________________________________________________________________________________________

    常见的分库分表中间件

     

    比较常见的包括:

    cobar
    TDDL
    atlas
    sharding-jdbc
    mycat
    cobar

    阿里 b2b 团队开发和开源的,属于 proxy 层方案,就是介于应用服务器和数据库服务器之间。应用程序通过 JDBC 驱动访问 cobar 集群,cobar 根据 SQL 和分库规则对 SQL 做分解,然后分发到 MySQL 集群不同的数据库实例上执行。早些年还可以用,但是最近几年都没更新了,基本没啥人用,差不多算是被抛弃的状态吧。而且不支持读写分离、存储过程、跨库 join 和分页等操作。

    TDDL
    淘宝团队开发的,属于 client 层方案。支持基本的 crud 语法和读写分离,但不支持 join、多表查询等语法。目前使用的也不多,因为还依赖淘宝的 diamond 配置管理系统。

    atlas
    360 开源的,属于 proxy 层方案,以前是有一些公司在用的,但是确实有一个很大的问题就是社区最新的维护都在 5 年前了。所以,现在用的公司基本也很少了。

    sharding-jdbc
    当当开源的,属于 client 层方案。确实之前用的还比较多一些,因为 SQL 语法支持也比较多,没有太多限制,而且目前推出到了 2.0 版本,支持分库分表、读写分离、分布式 id 生成、柔性事务(最大努力送达型事务、TCC 事务)。而且确实之前使用的公司会比较多一些(这个在官网有登记使用的公司,可以看到从 2017 年一直到现在,是有不少公司在用的),目前社区也还一直在开发和维护,还算是比较活跃,个人认为算是一个现在也可以选择的方案。

    mycat
    基于 cobar 改造的,属于 proxy 层方案,支持的功能非常完善,而且目前应该是非常火的而且不断流行的数据库中间件,社区很活跃,也有一些公司开始在用了。但是确实相比于 sharding jdbc 来说,年轻一些,经历的锤炼少一些。

     
     
  • 相关阅读:
    【Git】分支管理
    【Java】jprofiler工具初上手
    【中间件】JMS
    【Idea】编译问题Intellij Error: Internal caches are corrupted or have outdated format
    【测试】测试用例选择
    【DevOps】
    【Unix】z/OS系统
    【数据库】表空间释放
    【数据库pojo类】Oracle数据库中各数据类型在Hibernate框架中的映射
    基于闭包实现的显示与隐藏
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/12580020.html
Copyright © 2020-2023  润新知