1、mycat
2、sharding-jdbc
解决问题
1、读写分离
使用mysql的master/slave可解决
2、双主复制
3、负债均衡
LVS+keepalived组合实现、haproxy+keepalived组合实现
4、垂直分库
将表按照功能模块、关系密切程度划分出来,部署到不同的库上
5、水平分表
将一张表按照某种规则存储到多个结构相同的表,和不同的库上
mycat
1)遵守mysql原生协议
2)基于心跳的自动故障切换
3)支持读写分离,支持mysql主从
4)支持sum、count、max等聚合,支持跨库分页
5)支持服务降级
6)安全,IP白名单、sql注入攻击拦截、prepare预编译
sharding-jdbc
1)以jar包形式提供服务
2)分片灵活,支持等号、between、in等多维度分片
3)sql解析,支持聚合、分组、排序、limit、or等
比较
mycat 重写mysql 连接协议,使用代理模式
sharding-jdbc ,应用层完成解析,分片,更轻量级
mycat需要dba维护,需要做HA; sharding-jdbc只需要要求mysql能正常连接即可。