首页 > 其他分享 >10.8学习

10.8学习

时间:2024-10-08 21:51:46浏览次数:11  
标签:Proposer 10.8 学习 一致性 日志 超时 Paxos 提案

1.CAP

★一致性(2PC、3PC、Paxos、Raft)

●强一致性:数据库一致性,牺牲了性能

ACID:原子性、一致性、隔离性、持久性

●弱一致性:数据库和缓存,延迟双删、重试

●单调读一致性:缓存一致性,ID或者IP哈希

●最终一致性:边缘业务,消息队列

★可用性(多级缓存、读写分离)

●BASE 基本可用:限流导致响应速度慢、降级导致用户体验差

✮Basically Availabe 基本可用

✮Soft state 软状态

✮Eventual Consistency 最终一致性

✮分区容忍性(一致性Hash解决扩缩容问题)

 

2.一致性

 

2PC协议:两阶段提交协议,P是指准备阶段,C是指提交阶段

●准备阶段:询问是否可以开始,写Undo、Redo日志,收到响应

●提交阶段:执行Redo日志进行Commit,执行Undo日志进行Rollback

 

3PC协议:将提交阶段分为CanCommit、PreCommit、DoCommit三个阶段

●CanCommit:发送canCommit请求,并开始等待

●PreCommit:收到全部Yes,写Undo、Redo日志。超时或者No,则中断

●DoCommit:执行Redo日志进行Commit,执行Undo日志进行Rollback

 

区别是第二步,参与者自身增加了超时,如果失败可以及时释放资源

 

3.Paxos算法

参与者(例如Kafka)的一致性可以由协调者(例如Zookeeper)来保证,协调者的一致性就只能由Paxos保证了

 

Paxos算法中的角色:

●Client:客户端、例如,对分布式文件服务器中文件的写请求。

●Proposer:提案发起者,根据Accept返回选择最大N对应的V,发送[N+1,V]

●Acceptor:决策者,Accept以后会拒绝小于N的提案,并把自己的[N,V]返回给Proposer

●Learners:最终决策的学习者、学习者充当该协议的复制因素

b43a646f915341f0be12a1cd14fe071f.jpg

 

 

Q:如何保证Paxos算法活性

A:假设存在这样一种极端情况,有两个Proposer依次提出了一系列编号递增的提案,导致最终陷入死循环,没有value被选定

●通过选取主Proposer,规定只有主Proposer才能提出议案。只要主Proposer和过半的Acceptor能够正常网络通信,主Proposer提出一个编号更高的提案,该提案终将会被批准。

●每个Proposer发送提交提案的时间设置为一段时间内随机,保证不会一直死循环

 

4.Raft算法

Raft 是一种为了管理复制日志的一致性算法

 

Raft使用心跳机制来触发选举。当server启动时,初始状态都是follower。每一个server都有一个定时器,超时时间为election timeout(一般为150-300ms),如果某server没有超时的情况下收到来自领导者或者候选者的任何消息,定时器重启,如果超时,它就开始一次选举。

 

Leader异常:异常期间Follower会超时选举,完成后Leader比较彼此步长

 

Follower异常:恢复后直接同步至Leader当前状态

 

多个Candidate:选举时失败,失败后超时继续选举

 

 

 

标签:Proposer,10.8,学习,一致性,日志,超时,Paxos,提案
From: https://blog.csdn.net/2401_87363162/article/details/142770509

相关文章

  • java学习笔记3-高级循环-练习题
    黑马java有关数组的几道感觉比较难的题目,记录一下。第一题现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位。。。依次类推。请编写程序计算,这个数组所表示的整数值。例如:数组:{2,1,3,5,4}......
  • API 学习路线图
    无论您是初学者还是经验丰富的开发人员,都希望了解API,这份全面的API学习路线图将指导您了解需要掌握的关键概念和技术:1.API简介  API定义:API是一组用于构建软件应用程序的协议、例程和工具。它指定了软件组件应如何交互。  API类型:   公共API:开放供外部开......
  • 学年(2024-2025-3) 学号(20241424)《计算机基础与程序设计》第三周学习总结
    学期(2024-2025-3)学号(20241424)《计算机基础与程序设计》第三周学习总结作业信息|这个作业属于([2024-2025-3-计算机基础与程序设计](https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03)||-- |-- ||这个作业要求在(2024-2025-3计算机基础与程序设计第三周作业)||这个作业......
  • 【机器学习】线性回归算法简介 及 数学实现方法
    线性回归简介利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。数学公式:ℎ_(w)=w_1x_1+w_2x_2+w_3x_3+…+b=w^Tx+b概念​利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进......
  • 10.8
    不知道为什么学习数学相关的东西总会思绪淤塞,心情烦躁,于是狂贺不止跑来写总结。第\(2\)次$NOIP$模拟赛进步了整整\(38pts\),增幅到了\(30.4%\),来到了惊人的\(163pts\)!实际得分\(0+100+63+0\)。A.兰亭序无关风月我题序等你回悬笔一绝那岸边浪千叠情字何解怎......
  • 零基础-动手学深度学习-3.6softmax回归的从零开始实现
    鄙人生医转码,道行浅薄,请多谅解~感觉这章的内容超量,代码和详解都非常长,细嚼慢咽ing~首先导入需要的库和上一章讲的训练和测试集MNIST(相比于原码我多加了一个库后面用)importtorchimportmatplotlib.pyplotaspltfromIPythonimportdisplayfromd2limporttorchasd2l......
  • java JNDI 注入学习
    javaJNDI注入学习JavaNamingDirectoryInterface,Java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。JNDI可访问的现有目录及服务包括:JDBC(Java数据库连接)、LDAP(轻型目录访问协议)、RMI(远程方法调用)、DNS(域......
  • 10.8日
    在今日早上的工程实训中的电工基础实训中学习了不同的触电事故:电击和电伤,对于应对触电事故的措施和急救措施。Js是一种弱编程语言,其中对于声明变量,变量的数据类型有Number,String、boolean、undefined、null等,变量的数据类型取决于变量的值。其中声明变量有两种,let声明在目前使用......
  • 2024.10.8 鲜花
    好题蜂鸟(难忘今宵)传说中人类在远早住于黑暗的地下之遥派出了娇小的蜂鸟找到通往光明的隧道飞过了一座一座岛好想有一个地方落脚把一个一个梦制造会不会有人能够听到寻找太阳的梦自不量力说自己也变成太阳的念头有时候寂寞几乎扛不动咽在喉咙里无人诉说我们到底在......
  • 10.8 模拟赛(2023 CSP-S 十连测 #5)
    炼石计划10月28日CSP-S十连测#5【补题】-比赛-梦熊联盟(mna.wang)复盘T1秒了。30min。T2题目越短越难。但是链的是经典题目,写了。小样例太水,大样例太大,不方便猜结论。于是先写暴力然后自己造样例。模拟了五六组感觉可以按照lca的深度降序排序,然后能选就选。这......