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

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

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

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

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
5
6
7
8
9
10
11
12
13
14
15
16
17

多集群
多租户
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。

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

责任编辑:姜华 来源: 今日头条
相关推荐

2021-05-08 18:50:57

分库分表中间件

2021-08-05 18:21:29

Autowired代码spring

2020-08-07 16:18:38

JavaScriptC++Python

2019-02-12 11:15:15

Spring设计模式Java

2019-07-08 10:18:38

MPLSIP数据

2016-03-18 19:03:35

认知计算IBM

2022-11-10 09:00:41

2016-01-11 09:48:07

2020-11-06 15:30:23

分库分表Sharding-JD数据库

2021-07-29 06:55:03

Spring@AutowriedbyType注入

2022-09-07 09:01:14

JS操作符运算符

2020-05-27 11:30:54

Chrome DevT前端命令

2024-03-26 10:10:45

JavaScript操作符操作表达式

2018-03-07 06:37:14

开源项目源代码云计算

2024-04-28 08:20:52

Controller接口URL

2023-02-15 08:12:19

http超时过滤器

2011-10-28 09:20:36

dorado

2019-01-29 14:55:50

数据库中间件分库分表

2022-08-09 08:31:29

RocketMQ消息中间件

2020-04-10 17:00:33

Mycat分库分表SpringBoot
点赞
收藏

51CTO技术栈公众号