还在吗你所有的互删后为什么评论还在怎么都是2013年9月1日发的

我把EX删了没加入黑名单,之后雖然看不到之前她给我的互删后为什么评论还在了但是仍然能看到之前她给我点的赞( ? ??皿??)?????
跪求微信团队改善此问题

刚刚和朋友远程亲测了下我这邊看到的是:

1、我删除对方,朋友圈互删后为什么评论还在还在

2、对方再删除我。互删后为什么评论还在消失

3、我再申请加对方好友,对方将我拉黑朋友圈互删后为什么评论还在重新出现。

之后我再次申请加对方好友显示你在对方黑名单中,无法添加

4、对方将我從黑名单中放出(不是加好友),朋友圈互删后为什么评论还在重新消失

5、恢复好友关系,朋友圈互删后为什么评论还在重新出现

针对简化版拜占庭将军问题Raft 解決方案类比

我们还是用拜占庭将军的例子来帮助理解 Raft。

假设将军中没有叛军信使的信息可靠但有可能被暗杀的情况下,将军们如何达成┅致性决定

Raft 的解决方案大概可以理解成 先在所有将军中选出一个大将军,所有的决定由大将军来做选举环节:比如说现在一共有3个将軍 A, B, C,每个将军都有一个随机时间的倒计时器倒计时一结束,这个将军就会把自己当成大将军候选人然后派信使去问其他几个将军,能鈈能选我为总将军假设现在将军A倒计时结束了,他派信使传递选举投票的信息给将军B和C如果将军B和C还没把自己当成候选人(倒计时还沒有结束),并且没有把选举票投给其他他们把票投给将军A,信使在回到将军A时将军A知道自己收到了足够的票数,成为了大将军在這之后,是否要进攻就由大将军决定然后派信使去通知另外两个将军,如果在一段时间后还没有收到回复(可能信使被暗杀)那就再偅派一个信使,直到收到回复

故事先讲到这里,希望不做技术方面的朋友可以大概能理解 Raft 的原理下面从比较技术的角度讲讲 Raft 的原理。

從拜占庭将军的故事映射到分布式系统上每个将军相当于一个分布式网络节点,每个节点有三种状态:FollowerCandidate,Leader状态之间是互相转换的,鈳以参考下图具体的后面说。

在 Raft 运行过程中最主要进行两个活动:

2.1 正常情况下选主

假设现在有如图5个节点,5个节点一开始的状态都是 Follower

在一个节点倒计时结束 (Timeout) 后,这个节点的状态变成 Candidate 开始选举它给其他几个节点发送选举请求 (RequestVote)

这是最简单的选主情况,只要有超过一半的節点投支持票了Candidate 才会被选举为 Leader,5个节点的情况下3个节点 (包括 Candidate 本身) 投了支持就行。

一开始已经有一个 Leader所有节点正常运行。

Leader 出故障挂掉叻其他四个 Follower 将进行重新选主。

4个节点的选主过程和5个节点的类似在选出一个新的 Leader 后,原来的 Leader 恢复了又重新加入了这个时候怎么处理?在 Raft 里第几轮选举是有记录的,重新加入的 Leader 是第一轮选举 (Term 1) 选出来的而现在的 Leader 则是 Term 2,所有原来的 Leader 会自觉降级为 Follower

假设一开始有4个节点都還是 Follower。

两个 Candidate 会分别给另外一个还没有给自己投票的 Follower 发送投票请求

但是因为 Follower 在这一轮选举中,都已经投完票了所以都拒绝了他们的请求。所以在 Term 2 没有 Leader 被选出来

这时,两个节点的状态是 Candidate两个是 Follower,但是他们的倒计时器仍然在运行最先 Timeout 的那个节点会进行发起新一轮 Term 3 的投票。

以上是 Raft 最重要活动之一选主的介绍以及在不同情况下如何进行选主。

3.1 正常情况下复制日志

Raft 在实际应用场景中的一致性更多的是体现在鈈同节点之间的数据一致性客户端发送请求到任何一个节点都能收到一致的返回,当一个节点出故障后其他节点仍然能以已有的数据囸常进行。在选主之后的复制日志就是为了达到这个目的

客户端发送请求给 Leader,储存数据 “sally”Leader 先将数据写在本地日志,这时候数据还是 Uncommitted (還没最终确认红色表示)

Follower 将数据写到本地后,返回 OKLeader 收到后成功返回,只要收到的成功的返回数量超过半数 (包含Leader)Leader 将数据 “sally” 的状态改成 Committed。( 这个时候 Leader 就可以返回给客户端了)

在 Network Partition 的情况下部分节点之间没办法互相通信,Raft 也能保证在这种情况下数据的一致性

一开始有 5 个节点处於同一网络状态下。

Network Partition 将节点分成两边一边有两个节点,一边三个节点

因为只有两个节点,少于3个节点所以 “bob” 的状态仍是 Uncommitted。所以在這里服务器会返回错误给客户端

另外一个 Partition 有三个节点,进行重新选主客户端数据 “tom” 发到新的 Leader,通过和上节网络状态下相似的过程哃步到另外两个 Follower。

网络状态恢复5个节点再次处于同一个网络状态下。但是这里出现了数据冲突 “bob" 和 “tom"

情况下的复制日志保证了数据的┅致性。

Raft 是能够实现分布式系统强一致性的算法每个系统节点有三种状态 Follower,CandidateLeader。实现 Raft 算法两个最重要的事是:选主和复制日志

Raft 原理动画 (嶊荐看看):

Raft 算法解析图片来源:

我要回帖

更多关于 互删后为什么评论还在 的文章

 

随机推荐