Zebra数据库中间件

数据库的拆分

按照功能、逻辑进程查分

数据库访问的挑战:1 基本读写分离功能;2 事务;3 主从延迟

HA方面的挑战:1 主从切换 2 主库上、下线 3 异常宕机

驻留数据库中间件的设计方式

常见数据库中间件

Amoeba/cobar/mycat/atlas/mysql-proxy

tddl/zebra/sharding-jdbc

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