• 有哪些优秀的分库分表中间件?
  • 发布于 2个月前
  • 503 热度
    0 评论
  • 追梦魂
  • 0 粉丝 37 篇博客
  •   
当我们的数据达到一定的量级之后,单表甚至单库都无法支撑之时,那么,便会涉及到分库分表。分库分表的方式有多种,开源的解决方案也很多,都是围绕客户端和代理两种模式来处理的。客户端的组件比较多,很多人也在用,这里就分享一些代理模式的开源中间件。

Apache ShardingSphere
Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。由 ShardingSphere-JDBC 和 ShardingSphere-Proxy 这 2 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的基于数据库作为存储节点的增量功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。

ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖。


ShardingSphere-Proxy 定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。 目前提供 MySQL 和 PostgreSQL 协议,透明化数据库操作,对 DBA 更加友好。

开源地址:https://github.com/apache/shardingsphere.git

Vitess
Vitess是一个用于部署、扩展和管理大型MySQL实例集群的数据库解决方案。Vitess集Mysql数据库的很多重要特性和NoSQL数据库的可扩展性于一体。它的架构设计使得您可以像在物理机上一样在公共云或私有云架构中有效运行。它结合并扩展了许多重要的MySQL功能,同时兼具NoSQL数据库的可扩展性。

代码地址:https://github.com/vitessio/vitess.git

Gaea
Gaea是小米中国区电商研发部研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。

具备的功能:
1.复制
2.多集群
3.多租户
4.SQL透明转发
5.慢SQL指纹
6.错误SQL指纹
7.注解路由
8.慢日志
9.读写分离,从库负载均衡
10.自定义SQL拦截与过滤
11.连接池
12.配置热加载
13.IP/IP段白名单
14.全局序列号
15.分库: 支持mycat分库方式
16.分表: 支持kingshard分表方式
17.聚合函数: 支持max、min、sum、count、group by、order by等
18.join: 支持分片表和全局表的join、支持多个分片表但是路由规则相同的join

开源地址:https://github.com/XiaoMi/Gaea.git

MaxScale
MaxScale是MariDB开发的一个数据中间件,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。

开源地址:https://github.com/mariadb-corporation/MaxScale.git

Mycat
Mycat是基于开源cobar演变而来,支持SQL92标准,遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。

源码地址:https://github.com/MyCATApache/Mycat-Server.git

除了上面几个目前还是维护的几个项目外,也还有一些其他公司开源的解决方案:
阿里巴巴Cobar: https://github.com/alibaba/cobar.git
360Atlas: https://github.com/Qihoo360/Atlas.git

另外,也还有很多开源的客户端的解决方案。当然,在分库分表之后,又会衍生出其它问题,现在如今,也有很多厂家提供了强大的分布式数据库,来帮我处理了分库分表的麻烦。
用户评论