分库分表的中间件很多,但是可以归结为两大类型:
- CLIENT模式
- PROXY模式
1、CLIENT模式:
代表有阿里的TDDL,开源社区的sharding-jdbc(sharding-jdbc的3.x版本即sharding-sphere已经支持
了proxy模式)。架构如下:
2、PROXY模式:
代表有阿里的cobar,民间组织的MyCAT。架构如下:
3、比对
从以上两种模式可以看出sharding-jdbc作为一个组件集成在应用内,而mycat则作为一个独立的应用需要单独部署。
但是,无论是CLIENT模式,还是PROXY模式。几个核心的步骤是一样的:SQL解析,重写,路由,执行,结果归并。
client模式,架构简单,性能损耗比较小,运维成本低。
mycat的单机模式无法保证可靠性,一旦宕机则服务就变得不可用,你又不得不引入HAProxy来实现他
的高可用集群部署方案,为了解决HAProxy的高可用问题,有需要采用keepalived来实现。