分库分表:中间件

分库分表:中间件

原文:分库分表:中间件方案对比

背景

互联网给我公司数据到达一定规模的时候,大多数都会对数据进行分库分表操作

以 MySQL 为例 B+ 树索引的深度会随着记录的增加而逐渐增加

分库分表优点:

  • 查询速度变快
  • 降低单机请求压力

分库分表的技术方案总体分两大类:

  • 应用层依赖中间件
  • 中间层代理类中间件

img

分库分表技术选型

应用层依赖类中间件

**特点:**和应用强耦合,需要应用依赖相应的 jar 包

**具体产品:**sharding-jdbc(当当网)、TSharding(蘑菇街)、Ctrip-DAL(携程)

**此类中间件基本思路:**重新实现 JDBC 的 API,通过重新实现 DataSource、PrepareStatement 等接口

内部通过:SQL解析、SQL重写、SQL路由等

优点:

  • 无需额外部署,和应用绑定一起发布

缺点:

  • 不能跨语言,与具体语言绑定

ShardingSphere(分布式数据库中间件解决方案):

  • Sharding-JDBC
  • Sharding-Proxy
  • Sharding-Sldecar

img

img

中间层代理类中间件

**核心原理:**在应用和数据库的连接之间搭起一个代理层

**具体产品:**Amoeba、Cobar(阿里)、Mycat

Mycat

img

img

数据库代理层转发的就是MySQL协议请求,就像Nginx转发的是Http协议请求

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×