Zebra数据库中间件
2018-01-02
数据库的拆分
- 垂直拆分
按照功能、逻辑进程查分
- 读写分离
数据库访问的挑战:1 基本读写分离功能;2 事务;3 主从延迟
HA方面的挑战:1 主从切换 2 主库上、下线 3 异常宕机
- 分库分表
驻留数据库中间件的设计方式
-
服务端代理- 代理数据库
-
客户端代理- 代理数据源
常见数据库中间件
- proxy层
Amoeba/cobar/mycat/atlas/mysql-proxy
- jdbc层
tddl/zebra/sharding-jdbc
- orm层
Hibernate-shards/mybatis插件/spring
Zebra架构
ShardDataSource->GroupDataSource->SingDataSource(r/w)->DB
- 主要功能
读写分离(write路由主库:insert/update/delete/create/alter/truncate… query路由从库:select/show/desc/explain…)
事务(事务中的SQL路由主库)
强制路由主库(目的:主从数据一致/master/select * from user)
从库路由:1 按权重路由 2 同中心/同区域/同机房
- 分库分表能力支持
1 SQL解析支持聚合、分组、排序、Limit等操作 2 支持小表广播、Binding Table的方式进行Join 3 支持=、IN及BETWEEN等操作的分表方式 4 支持单标多个分表键 5 支持自定义分表键 6 基于Hint强制分表键
- 监控
1 连接池的监控:总连接数;空闲连接数;活跃连接数
2 SQL监控:SQL的总数、失败率、平均响应时间、响应时间的95线和99线;SQL的大小和返回值行数:太长太大的SQL、返回太多行数的SQL都可能导致应用频繁的GC;在读写分离的情况下,SQL落到不同数据库的分布监控;SQL类型监控
- 高可用
主库HA:MHA-modify->LION
从库HA:Zebra从库监控服务
客户端HA
- 运维
监控、查询客户端的支持;自动化的迁库、迁表;多维度数据库同步
- 未来
分布式事务;SQL日志审计;内置分布式ID生成器;跨库JOIN