分布式数据库中间件对比总结

分布式数据库中间件对比总结(1)

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

1. 什么是中间件

传统的架构模式就是 应用连接数据库直接对数据进行访问,这种架构特点就是简单方便。

但是随着目前数据量不断的增大我们就遇到了问题:

  • 单个表数据量太大
  • 单个库数据量太大
  • 单台数据量服务器压力很大
  • 读写速度遇到瓶颈

当面临以上问题时,我们会想到的第一种解决方式就是 向上扩展(scale up) 简单来说就是不断增加硬件性能。这种方式只能暂时解决问题,当业务量不断增长时还是解决不了问题。特别是淘宝,facebook,youtube这种业务成线性,甚至指数级上升的情况

此时我们不得不依赖于第二种方式: 水平扩展 。 直接增加机器,把数据库放到不同服务器上,在应用到数据库之间加一个proxy进行路由,这样就可以解决上面的问题了。

2. 中间件与读写分离

很多人都会把中间件认为是读写分离,其实读写分离只是中间件可以提供的一种功能,最主要的功能还是在于他可以 分库分表 ,下面是一个读写分离的示意图:

上面的图可以看出,红线代表写请求,绿线代表读请求。这就是一个简单的读写分离,下面我们在看看分库分表中间件。

上面这幅图就可以看出中间件作用,比如下面的这个SQL:

select * from table_name where id = 1;

按照中间件分库分表算法,此SQL将发送到DB1节点,由DB1这个MySQL负责解析和获取id=1的数据,并通过中间件返回给客户端。而在读写分离结构中并没有这些分库分表规则, 他只能在众多读节点中load balance随机进行分发,它要求各个节点都要存放一份完整的数据。

3.各类中间件比较

目前市面上中间件种类很多种 先看下各种中间件背景:

Cobar:

阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。

MyCAT:

社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。总体来说支持度比 较高,也会一直维护下去,

OneProxy:

数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件, 楼总舍去了一些功能点,专注在性能和稳定性上。有朋友测试过说在 高并发下很稳定。

Vitess:

这个中间件是Youtube生产在使用的,但是架构很复杂。 与以往中间件不同,使用Vitess应用改动比较大要 使用他提供语言的API接口,我们可以借鉴他其中的一些设计思想。

Kingshard:

Kingshard是前360Atlas中间件开发团队的陈菲利用业务时间 用go语言开发的,目前参与开发的人员有3个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。

Atlas:

360团队基于mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并 发下会经常挂掉,如果大家要使用需要提前做好测试。

MaxScale与MySQL Route:

这两个中间件都算是官方的吧,MaxScale是mariadb (MySQL原作者维护的一个版本)研发的,目前版本不支持分库分表。

MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。

这两个中间件后面也会跟进测试下,看下效果如何。

4. 结语

这里主要是简单介绍了下各种中间件由来和特点,后面文章会陆续介绍各个中间件更详细的特性,优缺点,性能测试结果

分布式数据库中间件对比总结相关推荐

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

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

  2. mysql分布式数据库中间件对比

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

  3. 华为云分布式数据库中间件DDM和开源MyCAT对比

    前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...

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

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

  5. mysql中ddl和ddm_对话DDM:分布式数据库中间件全解析

    进入云计算时代,传统的数据库在性能和容量等方面已无法满足企业的要求,随着数据量的不断骤增,易于扩展.拆分的数据库解决方案对于企业的云化转型更是显得尤为重要.为使企业应用上云更简单,分布式数据库中间件D ...

  6. 分布式数据库中间件Sharding-JDBC介绍

    前文中介绍了分布式数据库中间件Mycat的一些特性,作为对比本文简要介绍Sharding-JDBC的一些特性以及分片的实现原理,进行对比分析以了解. 1.ShardingSphere介绍 Shardi ...

  7. 安排,Mycat教程-分布式数据库中间件课程

    来源:来自网络,如侵权请告知博主删除,感谢????.仅学习使用,请勿用于其他-  有粉丝问我要分布式数据库相关的东西,所以今天小编给大家安排一个. 有的时候后台可能会漏一些消息,然后你提的需求我没看见 ...

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

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

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

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

最新文章

  1. FastAI 课程学习笔记 lesson 1:宠物图片分类
  2. java两个线程循环打印_java循环打印 多线程
  3. 海思3559A上编译Valgrind源码操作步骤
  4. Linux shell脚本判断服务器网络是否可以上网
  5. NetBeans 时事通讯(刊号 # 27 - Sep 24, 2008)
  6. php加断点,使用dump函数,给php加断点测试
  7. kylin linux 安装教程,新手入门必备:kylin安装教程介绍!
  8. 深入探索并发编程之内存屏障:资源控制操作
  9. CVPR 2019 GCT:《Graph Convolutional Tracking》论文笔记
  10. (1)kendo UI使用基础介绍与问题整理——简单说明
  11. 计算机公开课教学反思,语文公开课教学反思
  12. windows下使用kafka
  13. 清空image画布并改变大小填充背景色
  14. python常用数据结构及算法_常用数据结构和算法汇总
  15. java学习笔记 --- 面向对象3
  16. 计算机大赛鼓励语录,比赛鼓励的话
  17. Kali 实现ARP断网攻击_arp断网攻击_arp欺骗
  18. 中国最具竞争力的十大调查研究咨询公司
  19. c语言表示静态存储类别的关键字是,在C语言中,表示静态存储类别的关键字是:...
  20. Domain Adaption1

热门文章

  1. 12010.linux应用程序之spi
  2. 绿联扩展坞拆解_拆解报告:UGREEN绿联3A1C四口多功能扩展坞(带SD卡槽版)
  3. OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现
  4. 数据恢复技术在计算机犯罪侦查中的应用,浅谈数据恢复技术在计算机犯罪侦查中的应用...
  5. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  6. 【LeetCode】剑指 Offer 26. 树的子结构
  7. 使用maven-war-plugin 打包时排除不需要的文件
  8. ORACLE使用数据泵导入导出部分表
  9. 简单工厂模式和策略模式结合使用php
  10. 使用abcpdf将html转换成pdf文件