文章目录

  • 1、前言
  • 2、sharding-jdbc
  • 3、mycat
  • 4、DRDS
  • 5、总结

1、前言

一般对于业务记录类随时间会不断增加的数据,当数据量增加到一定量(一般认为整型值为主的表达到千万级,字符串为主的表达到五百万)的时候,性能将遇到瓶颈,同时调整表结构也会变得非常困难。为了避免生产遇到这样的问题,在做系统设计时需要预估可能产生的数据量:预估记录主体个数预估记录主体产生的记录数(e.g.用户订单表预估数据量=预估用户数单用户产生订单数),预估达到一定量时,就不得不考虑分库分表了。

目前国内比较成熟的开源数据库中间件有sharding-jdbc、mycat,而drds是阿里云最近推出的商业产品,考虑到大部分公司都在使用阿里云,做一个全家桶,也是一个不错的选择。接下来将对这三款产品的优缺点及适用场景做以介绍。

2、sharding-jdbc

可以看出 sharding-jdbc 作为一个组件集成在应用内,而mycat则作为一个独立的应用需要单独部署,drds则是阿里云的一个独立产品,不过需要结合rds一起使用。

从架构上看 sharding-jdbc 更符合分布式架构的设计,直连数据库,没有中间应用,理论性能是最高的(实际性能需要结合具体的代码实现,理论性能可以理解为上限,通过不断优化代码实现,逐渐接近理论性能)。

同时缺点也很明显,由于作为组件存在,需要集成在应用内,意味着作为使用方,必须要集成到代码里,使得开发成本相对较高;另一方面,由于需要集成在应用内,使得需要针对不同语言(java、C、PHP……)有不同的实现(事实上sharding-jdbc目前只支持java),这样组件本身的维护成本也会很高。最终将应用场景限定在由java开发的应用这一种场景下。

sharding-jdbc 发展为 Sharding-Sphere,包含 sharding-jdbc、Sharding-Proxy、Sharding-Sidecar。

- Sharding-JDBC Sharding-Proxy Sharding-Sidecar
Database Any MySQL MySQL
Connections Cost More Less More
Heterogeneous Language Java Only Any Any
Performance Low loss High loss Low loss
Centre-less Yes No No
Static Entry No Yes No

项目地址:

GitHub: https://github.com/apache/shardingsphere
码云: https://gitee.com/Sharding-Sphere/sharding-sphere

3、mycat

mycat 是支持SQL92标准,遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。

作为对比可以参考上表中的Sharding-Proxy,需要单独部署,由于遵守Mysql原生协议,应用时不需要特殊处理,和使用MySQL是一样的,所以应用场景不受限制;但是mycat不支持二维路由,仅支持单库多表或多库单表,同时由于自定义连接池,这样就会存在mycat自身维护一个连接池,MySQL也有一个连接池,任何一个连接池上限都会成为性能的瓶颈,而mycat的连接池设计也略显粗暴,当请求链接数大于设置连接池上限时直接抛出异常,因此在配置mycat连接池的大小是,需要结合场景做合理设置。

总的来说,mycat以逻辑表的形式屏蔽掉应用处理分库分表的复杂逻辑,遵守Mysql原生协议,跨语言,跨平台,有着更为通用的应用场景。

4、DRDS

DRDS 兼容 MySQL 协议和语法,支持分库分表、平滑扩容、服务升降配、透明读写分离和分布式事务等特性,具备分布式数据库全生命周期的运维管控能力。可以看成 mycat 的商业化产品,也就是mycat所有的优点它都有,而且作为一个商业化产品使用上更为简单透明,功能也更为丰富;如果不差钱而且正准备对数据做重构,那么drds是一个不错的选择,之所以说准备做数据重构时考虑用drds,是因为drds不是一个简单的做 sharding 路由,即使原来使用的是rds,也无法通过drds做路由,唯一的办法新建drds实例,定义路由规则(drds支持二维路由),导入历史数据,然后就可以开心的使用drds了。

https://help.aliyun.com/product/29657.html

5、总结

- sharding-JDBC mycat drds
性能
应用场景限制 java应用
是否支持自定义sharding路由
最大支持sharding路由维度 2 1 2
分布式事务 开发中 支持弱xa、支持XA分布式事务(1.6.5) 支持以下分布式事务策略:FREE、2PC、XA、FLEXIBLE
限制 不支持子语句,不支持UNION 和 UNION ALL,不支持批量插入,不支持DISTINCT聚合 详见《MYCAT权威指南》——5.6 Mycat 目前存在的限制 未明确说明
是否开源

sharding-jdbc(ShardingSphere )、mycat、DRDS 三个分布式数据库中间件的简单介绍(纯理论说明)相关推荐

  1. (转载)MyCat:开源分布式数据库中间件

    发现MyCat这个东西,觉得还是有很多应用场合,之前为了mysql读写分离.分布等伤透脑筋,没想到有现成的中间件工具,看来很多有经验的公司是受到过折磨,才整出好工具.方法和工具的发明,总是因为问题的存 ...

  2. 开源的分布式数据库中间件系统Mycat和阿里巴巴Cobar的对比

    mycat 不得不说的缘分 原创 2016年04月15日 15:48:17 27834 1,愕然回首,它在灯火阑珊处 关于mysql集群中间件,以前写在应用程序里面,由开发人员实现,在配置文件里面写多 ...

  3. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  4. 云原生在京东丨ASF顶级分布式数据库中间件项目——Apache ShardingSphere

    云妹导读: 不知不觉[云原生在京东]已经进行了两期,在先前<云原生在京东丨揭秘五大云原生项目在京东的落地实践>和<云原生在京东丨最适合云原生的分布式存储平台--ChubaoFS> ...

  5. 分布式数据库中间件Mycat百亿级数据存储(转)

    此文转自: https://www.jianshu.com/p/9f1347ef75dd 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,如高并发下的假死,心跳连接的故障,只实现 ...

  6. 开源分布式数据库中间件

    转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性 ...

  7. 阿里Mycat 和京东ShardingSphere:分布式数据库中间件哪家强?

    文章目录 Mycat ShardingSphere Sharding-JDBC Sharding-Proxy Sharding-Sidecar 混合架构 总结 大家好!我是只谈技术不剪发的 Tony ...

  8. 分布式数据库中间件对比总结MyCat Cobar Sharding-jdbc

    分布式数据库中间件对比总结(1) 目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的.所以总结一个关于中间件比较的系列,希望可以对大家有帮助. 1. 什么 ...

  9. 分布式数据库中间件Mycat介绍

    从Cobar到Mycat,从闭源到开源,作为一个开源的分布式数据库中间件,Mycat已经被众多开源项目使用.本文简要介绍下Mycat的特性.基本架构以及分库分表和读写分离的配置. 1.Mycat基本介 ...

最新文章

  1. Symbian开发系列 - 入门篇
  2. cpu超频有什么坏处_电脑超频知多少,让电脑打鸡血,怎么搞定
  3. 数据结构与算法 / 二叉搜索树(Binary Search Tree)
  4. shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf
  5. VTK:图片之ImageGaussianSmooth
  6. iOS11适配tableView顶部空白
  7. python打造社工脚本
  8. cad小插件文字刷_文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件
  9. “生而强悍” vivo iQOO官宣3月1日发布
  10. krpano漫游加方向性3D声音(这篇文章已被移到krpano中国网站 krpano360.com)
  11. 监理延期 验收工程款制约三方
  12. c# export server 调用sql_C# 如何调用 SPL 脚本
  13. 罗比机器人说明书_罗比_机器人人物_我要机器人
  14. this的指向为什么是undefined
  15. 基于SSM的火车票订票系统
  16. vue 前端仿QQ截图实现Web端自定义截屏(JS版)
  17. Glide图片旋转与放大缩小
  18. 【转】VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(上)
  19. 加密和解密的应用_万金油_新浪博客
  20. 5000立方米球罐设计

热门文章

  1. JAVAEE学习day02
  2. 样式的继承,选择器的权重,单位与颜色
  3. 合力提升技术管网治网能力,共同为长三角的数字化发展贡献网信力量
  4. 玩儿转ffmeg的7个技巧
  5. Uniswap 的做市原理
  6. Ajax保姆级使用攻略
  7. Android HAL层分析 (gralloc显示模块 举例)
  8. 使用AVplayer播放在线音频遇到的问题
  9. Android 中 简单商品列表 的运用
  10. Cobalt Strike-修改默认证书、混淆流量-教程