第 6 周学习总结
Cap
C:一致性
A:可用性。并不保证数据的一致性。
P :分区耐受性.
C和A无法同时满足.
最终一致性
1,通过时间戳,最后写入覆盖;
2,客户端程序自己实现数据的合并;
3,投票解决冲突;写三分,2分成功,则表示成功;读也是一样;
4,zk中心化
NoSQL对集群的伸缩比较容易。hbase存储(LSM)树。
传统数据库事务处理:acid
NoSQL事务处理:BASE
BA:基本可用;
S:软状态。可以存在中间状态,只要达到最终一致性就行了。
E:最终一致性。
分布是系统脑裂
两个masterA,B。一部分client访问A,一部分client访问B。则会出现A和B不一致。这就叫脑裂。
分布式一致性算法
多个master向proposer发起投票【那个master是ative master】,acceptors进行投票,learner是统计投票结果,client通过learner拿到最终结果。
Zab协议
leader和follower
client将请求发给其中一个follower,然后follower将请求发给leader,leader向所有的follower发起投票提案;所有的follower投票完成后将其结果返回给leader;leader统计结果,并将结果的状态同步给各个follower。这样follower的状态就一致了。
Zk
1,负载均衡与失效转移
写的性能比读的性能差。
技术评审
1,为什么要这个系统
2,达到什么样的目标
3,关键技术如何设计
4,如何能够完成目标
5,最后的效果如何
1,当前现状,现状分析;
2,产品需求;
3,技术指标;
4,技术架构;
5,产品规划;
每个虚拟节点数据对应一个文件,当迁移的时候,根据映射关系的调整,将虚拟节点的文件迁移到新的服务器上即可。
高可用的设计
写多份,一般是两份。读一份。
健康检查
1,configServer对DataServer心跳检查;
2,Client访问时,Fail报告;
3,其他Client定时配置抓取;
失效场景
1,瞬时失效;重试3次;
2,临时失效
服务端升级或者网络暂时不可用;
失效机器在段时间内可恢复(例如);
回复后数据和失效前一致;
伸缩性设计
一个group在十几分钟内能够完成扩容,就用两个group就行了
评论