分布式数据库

用户头像
wei
关注
发布于: 2020 年 07 月 15 日

1.数据分片

解决单表存储与访问压力,要应用中实现join

  • 硬编码

只能用一种方式分片,对应用程序增加的复杂度,但伸缩性差

  • 映射表外部存储

方案灵活,可以改变分片方式,但一次查找变成了两次查找,对应用程序增加了复杂读,伸缩性差

  • 分布式数据库中间件MyCat

插件实现分片,对应用程序透明

  • Amoeba/Cobar架构

mycat的前身,支持服务器集群,系统组件如下

路由配置

集群伸缩方法

提前分12片(一开始规划好),存在三个服务器,加服务器后,先将每个服务器中的一个数据库通过主从复制到新服务器上,然后在将原来三个服务器迁移的数据库删除,这样不需要改变路由规则,只需要改变数据库的地址即可

  • 数据库部署方案

单一服务与单一数据库

单一服务,主从复制实现数据库伸缩

两个web服务及两个数据库,业务分库

综合部署



2.NoSql

  • cap原理

一致性consistency、可用性availability、分区耐受性partition tolerance不可同时满足,当网络分区失效时,要么取消操作,数据一致但系统不可用,继续写入,数据一致性就得不到保证

解决数据库一致性:最终一致性

  • cassandra分布式解决方案

投票解决,三个节点,两个节点成功

  • hbase架构

分布式系统脑裂,此处zookeeper解决?



一个key对应一个HRegionServer,保证了数据的一致性,数据存储在HFile里,只能追加,HFile数据存储结构LogStructedMergeTree(LSM树),只写内存,一个树足够大的时候就合并,写数据非常快,读最新数据也快



  • acid/base

NoSql做不到acid,出现了base理论

原子性atomicity、一致性consistency、隔离性isolation、持久性durability

base

基本可用basically available 允许损失部分可用性

软状态soft state 允许不同的数据副本之间数据同步存在延迟

最终一致性 eventually consistent 数据最终保持一致

  • Doris案列



3.zookeeper

  • 分布式系统脑裂

分布式中,不同服务器获得互相冲突的数据信息或指令,导致整个集群陷入混乱,数据损坏

  • 分布式一致性算法paxos

三个角色proposer、acceptor、learner

  • zab协议

zookeeper对paxos算法进行了简化,使用了zab,角色leader、follower

  • 树状记录结构

应用:配置管理、master选举、集群管理

  • 临时节点做负载均衡

用户头像

wei

关注

还未添加个人签名 2018.05.31 加入

还未添加个人简介

评论

发布
暂无评论
分布式数据库