第 6 周 - 学习总结
1 分布式数据库
数据分片
数据量大,数据表数据太大,将数据拆分分片,存储在不同服务器上。
硬编码实现、映射表外部存储,这两种都要应用程序多余操作,才能知道操作那个服务器
对应用程序透明:分布式数据库中间件提供,面向应用程序,中间件分片路由,配置路由规则(比如按照地区的名字配置),Macat
添加新数据库服务器,要迁移哪些数据到新服务器?现实中的办法,用余数哈希,一个服务器部署多个数据库,当扩容的时候,只需要把这些数据库实例迁移到新服务器上。
数据库部署方案:单一服务单一库、主从复制实现伸缩、业务分库(应用服务本身是分离的,数据库也分离,读写能力翻倍)(先做业务分库、再做数据分片(一张表切成多拍))、综合部署(单张表达到了存储的瓶颈)
2 NoSQL
CAP和BASE
Cassandra 解决数据一致性的方案
写入集群中的三个服务器节点,等待至少两个节点响应写入成功
读取数据的时候,从三个节点尝试读取数据,至少等到两个节点返回数据,并根据返回数据的时间戳,选取最新版本的数据
HBASE架构
4 Zookeeper
分布式系统脑裂
不同服务器数据不致,使集群陷入混乱。
解决方案:需要一个仲裁者,ZooKeeper就提供了这样的功能,分布式一致性解决方案
分布式一致性算法 Paxos
三个角色:Proposer、Acceptor、Learner
Zab协议:是ZooKeeper对Paxos的简化版实现,两个角色Leader、Follower
ZooKeeper的树状记录结构
ZooKeeper的API
ZooKeeper解决方案:
配置管理
选Master
集群管理(负载均衡)
分布式锁
5 Doris-海量KV Engine
评论