架构师训练营第六周学习总结
1.一致性哈希算法
解决什么问题?解决在集群中增减节点导致Hash值改变,产生的节点映射大量失效的情况。
如何实现?1.构造一个2^32-1的环;2.服务器节点的虚拟节点放到环上;3.数据key放到环上,顺时针寻找最近的虚拟节点;
2.分布式数据库
主从复制:读写分离
主主复制:数据库失效;同时只能写一个
数据分片:数据量大、写操作大;分表
1.数据库硬编码实现;不灵活
2.映射表外部存储;映射表数据量大
3.分布式数据库中间件Mycat
SQL解析->SQL路由->SQL执行
集群伸缩:需要做数据迁移;迁移数据库实例
部署方案
单一部署->主从复制->业务分库->数据库分片
3.NOSQL
CAP
一致性:数据不返回(返回错误)或者数据返回且返回的数据是最近写入的数据
可用性:每次读写都应有响应(数据,非错误),数据不一定是最新的数据
分区耐受:网络分区出问题时,服务器节点之间通信受影响时,系统仍然可用
满足分区耐受性时,一致性和可用性无法同时满足
最终一致性
1.根据时间戳,最后写入覆盖;时间戳一致性
2.客户端解决
3.投票解决数据一致性;多数成功
Hbase
Hbase结构
ZK:Master选举;
HMaster:用户管理请求;管理HRegisonServer;清理过期日志、文件
HRegisonServer:响应用户IO请求;BlockCache:读缓存;HLog:数据可靠性;主从复制
HRegison:数据表的分片
HDFS:存储实际数据
ACID与BASE
ACID:原子性、隔离性、持久性、一致性
BASE:基本可用(可以损失部分可用性)、软状态(数据存在中间状态,不影响用户使用)、最终一致性
4.Doris
如何做的更好;如何获取公司的支持
如何获取公司的支持?
1.当前现状(存在的问题);
2.产品定位、要解决的问题;
3.产品目标(有吸引力、不是吹牛能落地)
4.架构设计:逻辑架构、概念模型、数据分区(基于虚拟节点的分区算法)、访问架构(高可用)
5.关键技术点:可用性(瞬时失效、临时失效、永久失效)
6.详细计划:人、时间
7.专利
5.Zookeeper
脑裂
在一个高可用系统中,当联系着的节点断开联系时,本来为一个整体的系统,分裂成两个独立节点,两个节点开始争抢共享资源造成系统混乱、数据损坏的现象,成为“脑裂”。
Paxos
三个角色:Proposer、Acceptor、Learner
三个阶段:Prepare阶段、Accept阶段、:Learn阶段
两个承诺,一个应答:
两个承诺:
不再接受Proposal ID小于等于(注意:这里是<= )当前请求的Prepare请求。
不再接受Proposal ID小于(注意:这里是< )当前请求的Propose请求。
一个应答:
不违背以前作出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案的Value和Proposal ID,没有则返回空值。
Zab协议
两种基本模式 :消息广播和崩溃恢复
ZooKeeper架构
技术之外:
1.自己主动争取机会,而不是等待别人分配有价值的工作机会。
2.抓住技术的关键点
评论