分布式数据库系统(DDS)
DDS是一个远程的反向代理数据库,它可以
- 对内将各种厂商,各种业务的DB进行统一管理
- 对外暴露SQL92等标准语法的连接,用户不知道内部的表用户,也不知道DB密码
- 实现读写分离与最终一致性
- 实现SQL热点查询命令的预编译优化、缓存查询结果、统计缓慢SQL等。
目前各大厂商都有实现,比如阿里/华为云的云数据库,这个玩意还是很难搞的,需要很多专家团队去对业务进行优化。
与zk的集成
在很多DDS的架构中,一般通过zk作为"Naming Service"进行发布注册
服务侧发布节点,举个例子
zookeeper:
/
/namingservice
/dds
/node
[node1,node2,node3]
客户端调用
- 开发支持zk的JDBC驱动
- 对node中节点的健康度进行查询,并选择最好的
- 把DDS当作单机数据库使用
DDS的大致介绍
只进行理论介绍
事务一致性
这个是个难题
详见: http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency
水平分库/垂直分库
这里注意是分库,不是分表
- 水平分库: 按照地区等枚举进行分库
- 垂直分库: 如果把数据表看成结构体的话,垂直分库就是将结构体砍成几份
读写分离
todo
调试与分析功能
此部分主要提供日志与JMX功能供上游开发调试
- 耗时日志定位
- JMX支持
可以统计出耗时、报错等详细信息