模式说明
PROXY模式
相当于把中间件作为一个独立的服务了,它将接收到的SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
CLIENT模式
中间件在Driver或者连接池的基础之上,增加了一层封装。我们使用时,以Java开发为例,需要先引入一个jar包。中间件接收持久层产生的sql,同样对sql进行分析等操作,然后才落实到具体的库上。
具体差异对比
模式 |
名称 |
厂家 |
介绍 |
支持语言 |
支持协议 |
开源 |
优点 |
缺点 |
备注 |
---|---|---|---|---|---|---|---|---|---|
CLIENT | TDDL | 淘宝 | 淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer )框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制。 | java | JDBC协议 | GitHub - alibaba/tb_tddl | 性能较高 | 复杂度相对较高。当前公布的文档较少,只开源动态数据源,分表分库部分还未开源,还需要依赖diamond | 不推荐 |
CLIENT | zebra | 美团点评 | Zebra是一个基于JDBC API协议上开发出的高可用、高性能的数据库访问层解决方案,是美团点评内部使用的数据库访问层中间件。 | java | JDBC协议 | https://github.com/Meituan-Dianping/Zebra | 美团内部使用中间件,社区活跃度高 | 只支持java | 对java语言强依赖,现阶段不推荐 |
PROXY | mycat | 开源社区 | mycat是在cobar基础上研发出来的,对 cobar 的代码进行了彻底的重构,使用 NIO 重构了网络模块,并且优化了 Buffer 内核,增强了聚合,Join 等基本特性,同时兼容绝大多数数据库成为通用的数据库中间件。 | Mysql协议 |
GitHub - MyCATApache/Mycat-Server GitHub - MyCATApache/Mycat2: MySQL Proxy using Java NIO based on Sharding SQL,Calcite ,simple and fast |
社区活跃度高 | 有些成熟方案,业内也在使用 | 可以考虑 | |
PROXY | atlas | 360 | Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。 | Mysql协议 | GitHub - Qihoo360/Atlas: A high-performance and stable proxy for MySQL, it is developed by Qihoo's DBA and infrastructure team | 4年未更新维护 | 不推荐 | ||
PROXY | Vitess | YouTube | Vitess一直为YouTube所有的数据库提供服务,据其官方描述,它是一款用于部署、扩展和管理大型MySQL实例集群的数据库解决方案。 | Mysql协议 |
Vitess: Youtube出品的开源分布式MySQL工具集Vitess,自动分片存储MySQL数据表,将单个SQL查询改写为分布式发送到多个MySQL Server上,支持行缓存(比MySQL GitHub - vitessio/vitess: Vitess is a database clustering system for horizontal scaling of MySQL. 简单介绍之Vitess_lzb_include的博客-CSDN博客 vitess介绍 - 拾遗笔记 |
社区活跃度高 | 复杂度高,文档欠缺 | ||
PROXY | ShardingSphere |
apache | Apache ShardingSphere 是一套开源的分布式数据库增强计算引擎,其通过可插拔架构构建基于数据库之上的生态系统,实现包括数据分片、弹性伸缩、加密脱敏等功能为代表的增强能力 | Mysql协议 | Apache ShardingSphere | 社区活跃度高,apache顶级项目 | 文档健全、功能全面.文章来源:https://www.toymoban.com/news/detail-519049.html |
||
PROXY | kingshard文章来源地址https://www.toymoban.com/news/detail-519049.html |
个人维护 | kingshard是一个Go开发的mysql中间件,可以实现读写分离、分库分表、连接池等功能 | mysql协议 | GitHub - flike/kingshard: A high-performance MySQL proxy | 两年未更新 |
到了这里,关于数据库中间件对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!