第 6 周 - 学习总结

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

1 分布式数据库



  1. 数据分片

  • 数据量大,数据表数据太大,将数据拆分分片,存储在不同服务器上。

  • 硬编码实现、映射表外部存储,这两种都要应用程序多余操作,才能知道操作那个服务器

  • 对应用程序透明:分布式数据库中间件提供,面向应用程序,中间件分片路由,配置路由规则(比如按照地区的名字配置),Macat

  • 添加新数据库服务器,要迁移哪些数据到新服务器?现实中的办法,用余数哈希,一个服务器部署多个数据库,当扩容的时候,只需要把这些数据库实例迁移到新服务器上。

  • 数据库部署方案:单一服务单一库、主从复制实现伸缩、业务分库(应用服务本身是分离的,数据库也分离,读写能力翻倍)(先做业务分库、再做数据分片(一张表切成多拍))、综合部署(单张表达到了存储的瓶颈)



2 NoSQL



  1. CAP和BASE

  2. Cassandra 解决数据一致性的方案

  • 写入集群中的三个服务器节点,等待至少两个节点响应写入成功

  • 读取数据的时候,从三个节点尝试读取数据,至少等到两个节点返回数据,并根据返回数据的时间戳,选取最新版本的数据

  1. HBASE架构



4 Zookeeper



  1. 分布式系统脑裂

  • 不同服务器数据不致,使集群陷入混乱。

  • 解决方案:需要一个仲裁者,ZooKeeper就提供了这样的功能,分布式一致性解决方案

  1. 分布式一致性算法 Paxos

  • 三个角色:Proposer、Acceptor、Learner

  1. Zab协议:是ZooKeeper对Paxos的简化版实现,两个角色Leader、Follower

  2. ZooKeeper的树状记录结构

  3. ZooKeeper的API

  4. ZooKeeper解决方案:

  • 配置管理

  • 选Master

  • 集群管理(负载均衡)

  • 分布式锁

5 Doris-海量KV Engine



用户头像

大海

关注

还未添加个人签名 2018.07.14 加入

还未添加个人简介

评论

发布
暂无评论
第6周 - 学习总结