zoukankan      html  css  js  c++  java
  • 分库分表-中间件对比

    分库分表-中间件对比

     

    客户端架构

    • 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 来说,年轻一些,经历的锤炼少一些。

     
     
  • 相关阅读:
    php服务器安装memcache
    [PHP脚本]安装及使用
    [PHP]针对外服务器mail函数的php.ini配置
    [COBOL]安装配置及大型机模拟Hercules配置
    [Sqlite3].help中的命令介绍
    [NavigatLite4Mysql]DB管理工具使用
    [MS-SQLserver2005]Windows64位安装问题
    [MS-SQL]20130806_LocalDB_DOS命令使用
    [MS-SQL]20130806_LocalDB安装
    [MS]Microsoft SQL Server 2008 R2 开发版/企业版/标准版
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/12580020.html
Copyright © 2011-2022 走看看