MySQL中间件方案盘点

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:   首先数据库技术发展的基础还是在业务推动的背景下,能够实现相关的技术保障。业务需求的提升必然会在数据量,访问量等方面有更高的要求,而映射到数据库层面就不是简单的扩容和添加资源了,我们有时候更需要弹性,需要快速实现,需要更高的性能。

 

首先数据库技术发展的基础还是在业务推动的背景下,能够实现相关的技术保障。业务需求的提升必然会在数据量,访问量等方面有更高的要求,而映射到数据库层面就不是简单的扩容和添加资源了,我们有时候更需要弹性,需要快速实现,需要更高的性能。这些都是摆在我们面前的问题,而不仅仅是DBA团队。

所以早期的很多数据库,从一主一从,一主多从的架构,逐步演变到了读写分离,分库分表,然后就是分布式。而同时从很多层面来说,行业内的方案真是百花齐放,记得前几天还和同事聊,说如果对比一下Oracle和MySQL,让我怎么评价,我说单纯评估单机的性能和功能,MySQL要落后很多,但是从成本,技术把控,定制层面来看,MySQL的简单反而成了其中的一个优势,在这个基础上,它有非常多的开源方案,这些让原本MySQL的应用变得非常丰富起来,你说MySQL能不能做企业级方案,你看看BAT的使用场景,还是能够经受住考验的,注意我在此处说的的使用场景,没有一刀切的场景。

回到正题,MySQL的中间件其实有很多,官方的开源的,我们就来简单来说说,行业里还有很多的方案,有些还没有做调研,就没在文中及时推出来。

先来说说MySQL中间件能够做什么?要回答这个问题,我们可以反向问一个问题,随着业务需求的变化,数据库会有哪些瓶颈,比如:

1.单台服务器无法承载已有的压力

2.数据库单表容量越来越大

3.大量的读写需求无法平衡

4.资源如果扩容,应用改动较大

5. 资源的负载没法拆分,或者不易拆分

所以市面上的很多数据库中间件主要是分担了其中的大部分或者一部分的功能点。

沃趣科技的董红禹总结的这个图不错,我直接拿过来了。

img_f67a2c751999de352dbb03835f748932.jpe

我们基本会讨论下面的几个中间件,有些不在上面的图中,会额外补充一些。

MySQL Fabric, MySQL Router,MySQL Proxy

Fabric能提供MySQL的HA和Sharding方案,MySQL Router是一个轻量级的中间件用来实现高可用和扩展性的功能。MySQL Fabric在驱动层面可以实现高可用和扩展功能,需要应用端来适配改造。而MySQL Router中间件的访问协议与MySQL一致,应用不需要做任何的修改,在MySQL官方近期推出的InnoDB Cluster中MySQL Router是作为“三驾马车”来使用的。而落寞的是MySQL proxy,目前已经无法下载了,自从推出以来主要就是测试版本,所以在很多功能上多多少少还是有些问题。

360 Atlas

这是国内360公司推出的一个中间件方案,github地址为:https://github.com/Qihoo360/Atlas

从github的情况来看,星级蛮高,最新的维护是在4天前。它的设计是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。

img_462b426b20b4562751fcdbd391c7f6ce.jpg

Mycat

这也是国内的一个中间件方案,业内比较火,官方链接是:http://www.mycat.io/

img_70d3f8bdab60ec6b0261d9dcffe013d3.jpg

还有一本Mycat相关的书《分布式数据库架构及企业实践——基于Mycat中间件》

根据我的了解,他主要是支持MySQL,同时也支持其它的数据库,比如Oracle等等,也是一波好友一起来做得这个事情。

我比较喜欢它的一个原因是因为开源,而且源代码是Java.

oneproxy

这是前支付宝的架构师楼总开发,目前支持多中数据库,基于MySQL官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件,专注在性能和稳定性上,是商业付费的。

img_b3379b9cf0160585090dbf69fc5d9a12.jpe

DRDS

阿里分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝 TDDL,再之前还有Cobar,已经不维护了。

该图来自:http://blog.csdn.net/jerome_s/article/details/53966569

img_a667edcdb9de192052449cbb90d72061.jpe

Vitess

谷歌开发的数据库中间件,集群基于 ZooKeeper 管理,通过 RPC 方式进行数据处理官方网站很简介: http://vitess.io/ 打开就是一个大V

img_adbc46611221dd1fd3100527b14b0f4b.png

Maxscale

MaxScale是mariadb研发的,目前版本不支持分库分表,在其它几个方面都很不错。github链接为:https://github.com/mariadb-corporation/MaxScale

img_061b299edf801e5901e2d9dbf04fb07f.jpg

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Oracle 关系型数据库 MySQL
MySQL相关(六)- 事务隔离级别的实现方案(MVCC)
MySQL相关(六)- 事务隔离级别的实现方案(MVCC)
38 0
|
7月前
|
存储 关系型数据库 MySQL
6.2.2 【MySQL】InnoDB中的索引方案
6.2.2 【MySQL】InnoDB中的索引方案
32 0
|
6月前
|
关系型数据库 MySQL 中间件
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
|
2月前
|
SQL 存储 关系型数据库
MySQL索引(二)索引优化方案有哪些
MySQL索引(二)索引优化方案有哪些
47 0
|
4月前
|
中间件 关系型数据库 Java
MySQL数据库分库分表方案
MySQL数据库分库分表方案
134 0
MySQL数据库分库分表方案
|
21天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
66 0
|
21天前
|
SQL 关系型数据库 MySQL
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
【MySQL技术之旅】(7)总结和盘点优化方案系列之常用SQL的优化
36 1
|
1月前
|
缓存 关系型数据库 MySQL
史上最全MySQL 大表优化方案(长文)
史上最全MySQL 大表优化方案(长文)
335 0
|
6月前
|
消息中间件 NoSQL 关系型数据库
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
127 0
|
6月前
|
关系型数据库 MySQL Java
对比下 datax 的 OceanBase/MYSQL 不同数据同步方案的效率差异 || 聊聊参数 rewriteBatchedStatements
对比下 datax 的 OceanBase/MYSQL 不同数据同步方案的效率差异 || 聊聊参数 rewriteBatchedStatements