首页>国内 > 正文

这些开源的分库分表中间件,你们都知道吗?

2023-03-10 21:02:01来源:今日头条

当我们的数据达到一定的量级之后,单表甚至单库都无法支撑之时,那么,便会涉及到分库分表。分库分表的方式有多种,开源的解决方案也很多,都是围绕客户端和代理两种模式来处理的。


(资料图)

客户端的组件比较多,很多人也在用,这里就分享一些代理模式的开源中间件

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协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。

具备的功能:

1234567891011121314151617

多集群多租户SQL透明转发慢SQL指纹错误SQL指纹注解路由慢日志读写分离,从库负载均衡自定义SQL拦截与过滤连接池配置热加载IP/IP段白名单全局序列号分库: 支持mycat分库方式分表: 支持kingshard分表方式聚合函数: 支持max、min、sum、count、group by、order by等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。

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

关键词:

相关新闻

Copyright 2015-2020   三好网  版权所有 联系邮箱:435 22 640@qq.com  备案号: 京ICP备2022022245号-21