这篇文章主要介绍互联网行业内Mysql相关中间件。
Mysql中间件主要解决以下问题:
- 为海量数据提供高性能、高可用性的访问
- 支持水平扩展
1、官方出品
1)、MySQL Fabric
MySQL Fabric具有分片功能,在同一个分片内又可以含有多个数据库,并且由Fabric自动挑选一个适合的作为主数据库,部署成本较高,另外需要应用端来适配改造。
2)、 MySQL Router
MySQL Router是一个介于应用层和DB层之间的开源的轻量级中间件,它能够将前端应用的请求分析转发给后端DB服务器处理,从而实现DB的负载均衡。
以下是官方的架构图
3)、MySQL Proxy
目前已经无法下载,推出以来就是测试版本,很多功能上还有问题
2、轻量级的
1)、360的Atlas
github地址:https://github.com/Qihoo360/Atlas
功能比较简单,2018年后就没人维护了,不过官方还是蛮热情的,年初反馈一个最大连接数设置的问题,很快就回复了,并且2周内就快发布了;不过最近反馈一个问题没有回应。
2)、美团的DBProxy
github地址:https://github.com/Meituan-Dianping/DBProxy
在360Altas基础上修改的,对运维更友好,并且更新了开发文档,包含代码级的说明,主要功能有:
- 读写分离
- 从库负载均衡
- IP过滤
- 分表
- DBA可平滑上下线DB
- 自动摘除宕机的DB
- 监控信息完备
- SQL过滤
- 从库流量配置
3)、OneProxy
数据库界大牛,前支付宝数据库团队领导楼方鑫开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件。
3、主流Proxy
1)、Cobar
github地址:https://github.com/alibaba/cobar
start还是蛮高,近3K。
Cobar的分布式主要是通过将表放入不同的库来实现,cobar支持一张表水平拆分成多份分别放入不同的库来实现水平拆分,cobar也支持将不同的表放入不同的库。
Cobar还支持高可用方案,以下是官方介绍
从github上更新来看,17年以后也比较少了。
2)、MyCat
这也是国内的一个中间件方案,业内比较火,官方链接是:http://www.mycat.io/
github地址:https://github.com/MyCATApache/Mycat-Server
github上start 7K 多了。
功能比较齐全:
支持多种数据库:MySQL、Oracle、DB2、SQL Server、PostgreSQL等;
支持库内分表;
支持读、写分离及高可用;
3)、DRDS/TDD
Tabao根据自己的业务特点开发,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的jdbc datasourcce实现,具有主备,读写分离,动态数据库配置等功能。
TDDL并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。
4、其它小众型的
1)、Vitess
谷歌开发的数据库中间件,集群基于 ZooKeeper 管理,通过 RPC 方式进行数据处理。
官方网站很简介:http://vitess.io/
2)、CDS
全称是Completed Database Sharding,京东开发的Mysql Proxy。
CDS是一款基于客户端开发的分库分表中间件产品,实现了JDBC标准API,支持分库分表,读写分离和数据运维等诸多功能;提供高性能,高并发和高可靠的海量数据路由存取服务,业务系统可近乎零成本进行介入,目前支持MySQL, Oracle和SQL Server。
3)、Heisenberg
改编自cobar,github上关注数也比较少。
4)、DDB
网易开发的,是国内最早出现的数据库分库分表中间件。
与SQL92标准的兼容度达90%以上;
支持读写分离和数据节点高可用;
支持数据节点在线扩缩容、在线更改表分布;
提供完善的数据库管理工具、Web和命令行工具;
数据节点支持Oracle和MySQL;
5)、Maxscale
MaxScale是mariadb研发的,目前版本不支持分库分表
6)、dble
爱可生的,官方网址:https://opensource.actionsky.com/
7)、Oceanus
58同城的数据库中间件,Oceanus致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。拥抱开源,提供各类插件机制集成其他开源项目。