首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题105:有哪些常见的分库分表中间件?

面试题105:有哪些常见的分库分表中间件?

作者头像
爪哇缪斯
发布2023-05-10 09:46:47
2420
发布2023-05-10 09:46:47
举报
文章被收录于专栏:爪哇缪斯爪哇缪斯
  • ⽐较常⻅的分库分表中间件包括: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 层⽅案,⽬前已经更名为 ShardingSphere (后⽂所提到的Sharding-jdbc ,等同于 ShardingSphere )。
  • 确实之前⽤的还⽐较多⼀些,因为 SQL 语法⽀持也⽐较多,没有太多限制,⽽且截⾄ 2019.4,已经推出到了 4.0.0-RC1 版本,⽀持分库分表、读写分离、分布式 id ⽣成、柔性事务(最⼤努⼒送达型事务、TCC 事务)。
  • ⽽且确实之前使⽤的公司会⽐较多⼀些,⽬前社区也还⼀直在开发和维护,还算是⽐较活跃,个⼈认为算是⼀个现在也可以选择的⽅案。

【Mycat】

  • 基于 Cobar 改造的,属于 proxy 层⽅案,⽀持的功能⾮常完善,⽽且⽬前应该是⾮常⽕的⽽且不断流⾏的数据库中间件,社区很活跃,也有⼀些公司开始在⽤了。
  • 但是确实相⽐于 Sharding-jdbc 来说,年轻⼀些,经历的锤炼少⼀些。

【总结】

  • 综上,现在其实建议考量的,就是 Sharding-jdbc 和 Mycat,这两个都可以去考虑使⽤。
  • Sharding-jdbc 这种 client 层⽅案的优点在于不⽤部署,运维成本低,不需要代理层的⼆次转发请求,性能很⾼,但是如果遇到升级啥的需要各个系统都重新升级版本再发布,各个系统都需要耦合 Sharding-jdbc 的依赖;
  • Mycat 这种 proxy 层⽅案的缺点在于需要部署,⾃⼰运维⼀套中间件,运维成本⾼,但是好处在于对于各个项⽬是透明的,如果遇到升级之类的都是⾃⼰中间件那⾥搞就⾏了。
  • 通常来说,这两个⽅案其实都可以选⽤,但是我个⼈建议中⼩型公司选⽤ Sharding-jdbc,client层⽅案轻便,⽽且维护成本低,不需要额外增派⼈⼿,⽽且中⼩型公司系统复杂度会低⼀些,项⽬也没那么多;但是中⼤型公司最好还是选⽤ Mycat 这类 proxy 层⽅案,因为可能⼤公司系统和项⽬⾮常多,团队很⼤,⼈员充⾜,那么最好是专⻔弄个⼈来研究和维护 Mycat,然后⼤量项⽬直接透明使⽤即可。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爪哇缪斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档