分布式数据库系统(DDS)

DDS是一个远程的反向代理数据库,它可以

  1. 对内将各种厂商,各种业务的DB进行统一管理
  2. 对外暴露SQL92等标准语法的连接,用户不知道内部的表用户,也不知道DB密码
  3. 实现读写分离与最终一致性
  4. 实现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支持

可以统计出耗时、报错等详细信息