当前位置: 首页 > news >正文

姜堰网页定制重庆自动seo

姜堰网页定制,重庆自动seo,短视频营销的优势和劣势,网站建设合同纠纷问题篇前感悟: 阅读分布式系统文章的意义其实并不在于你个人真正地去开发这样一个基于这种协议的系统,因为真正去开发一个高可用的分布式系统实在是太难了(对我来说…)更多的还是汲取其中的思想,包括设计思路,优…

篇前感悟:
阅读分布式系统文章的意义其实并不在于你个人真正地去开发这样一个基于这种协议的系统,因为真正去开发一个高可用的分布式系统实在是太难了(对我来说…)更多的还是汲取其中的思想,包括设计思路,优化思路等等。 简单地举个例子,比如说这篇优化中的witness角色引入,也许也可以在其他系统中得到应用。 真正能在工程实践中使用到的并非是完整的一篇论文,而是其中的一个点、两个点。

建议阅读:

  • 更多背景介绍: https://zhuanlan.zhihu.com/p/428147777
  • 更多细节:https://zhuanlan.zhihu.com/p/66427412

一、假设

  • 仅处理crash failure,不考虑拜占庭故障
  • 针对异步网络
  • 2f+1个节点可以容忍f个节点发生非拜占庭故障

二、协议架构

在这里插入图片描述
在这里,Replica也就是节点; VR Code负责处理VR协议,Service Code负责处理和执行命令 。

三、协议组成

1. normal operation

正常执行流程。

  1. client发送消息到primary
  2. primary收到后比较request-number和client-table中的信息,如果req-num < client table中记录的,则丢弃+ 发送response,因为req已经处理过了。否则继续。
  3. primary 的 op-number 增加,request 增加到log末尾,然后发送prepare消息给其他节点(backups,副本)
  4. backups按顺序处理prepare。 一个副本需要具备op-number前所有entry才能处理请求。如果缺失entry,说明状态落后,需要state transfer。
    处理的时候,同primary,本地的op-number增加,request 增加到本地log中,更新client-table, 返回prepareOK给primary
  5. primary收集了多数prepareOK消息时,就可以认为当前的operation可以commit了,这个operation就可以被顺序执行到,commit-number增加,通知client,更新执行结果到client-table
  6. 对于已经commit的消息,需要通知backups,这个通知消息并不是单独发,而是包含在下一次prepare消息中(这样节约了一次发送开销)。如果长期没有client请求,也就是长期无需发送prepare消息的话,那就再单独发送一次commit消息给backups
  7. backups接收到发来的commit消息,再执行operation,更新result到client-table

注: 这里的op-number 类比于是Raft中的log index, commit-number类比于是commit index。 如果一切正常,长时间来看commit-number == op-number

如果step5,primary已经commit,但此时primary宕机了,那如何将commit-number通知到backup呢?那就涉及到part 3-recovery了。而其他节点也会发现primary不在了,那么此时就要做view change

2. view change

在VR协议中的view 可以理解为Raft的term。view change就是切主;view number可以理解为Raft的任期号。

  1. 发生时间:replica发现自己超时未收到primary的消息,那么递增自己的view-number or 收到了view change的更大的view-number(说明存在其他replica已经开始选主),那么view-number更新为收到的新number

  2. 一个replica收到f个startViewChange消息时候,就发送消息doViewChange给新的primary

  3. 新的primary收到f+1条消息,更新自己的view-number,并选择view-number最大的消息log作为new log,如果view-number相同,则选择op-number最大的;设置commit-number为所有消息中的最大值,更新status为normal,发送给其他副本view change结束的消息;其他副本更新相关信息
    (对比Raft, Raft只能是主给从发log,而这里可以从节点给新主节点发log)

  4. new primary开始负责接收client消息

3. recovery

宕机后的节点重新加入集群,需要重新请求所有日志。

区别于state transfer: 节点并没有宕机,但是日志落后,此时需要state transfer。

  1. 发送recovery给所有replica,携带唯一序号
  2. 处于normal状态的replica响应, 只有primary给请求者回复log内容
  3. 收到f+1个响应(包括primary),则更新本地log,更新完后切换状态到normal

四、优化

  1. effective recovery
    就是需要节点每隔一段时间持久化一下当前state,在recovery的时候直接从磁盘中拿出之前该节点的state就行,而不用传输全部的log (和Raft的 snapshot还是有点区别的,snapshot是指传输的时候把log打包,但目的是一样的,就是让恢复的时候无需全量传输log)

  2. view change
    doViewChange消息中携带1-2个最新的log,而不是全部log。log用于更新新primary状态,由于新primary一般比较新,所以带少量即可。

  3. witness
    2f+1节点集群中只有f+1个节点需要active(active状态的节点需要存储状态和执行operation),其他f个为witness(不需要存state和执行op)。 active replica出现故障,witness才参与进来。大多数正常时间,witness节点把资源拿去干别的。

  4. batching
    客户端发来的请求可以收集一下,一起跑。节约通信开销,但是一次处理的时间变长(延迟增加)

  5. fast reads
    仅primary处理读请求,而不需要得到其他节点的response (prepareOK)
    需要额外实现lease机制,保证读请求的primary在有效期内,防止网络分区带来的脑裂问题。

http://www.15wanjia.com/news/31104.html

相关文章:

  • 创办一个网站要多少钱网络营销工具包括
  • c 网站开发的优点今日国内重大新闻事件
  • 网站建设时间网站设计师
  • 怎么自建一个网站济南特大最新消息
  • 那个网站上有打码的任务做seochinazcom
  • 信阳网站建设国内最新新闻消息今天的
  • 男女在床上做羞羞的事的网站上海seo外包公司
  • 在线做春节网站推广网站的四种方法
  • 筑巢做网站怎么样百度网站的域名地址
  • 网站开发任务完成情况网站建设是干什么的
  • 个人站长怎么做企业网站发布友情链接
  • 做平台网站需要多少钱seo是什么意思怎么解决
  • 做ppt图片网站 知乎网络推广都需要做什么
  • JSP高级动态网站开发期末试卷seo公司外包
  • 东莞seo关键词排名优化推广网站优化最为重要的内容是
  • frontpage网站建设论文足球世界排名
  • 上海这边敲墙拆旧做啥网站的比较多电商网站平台搭建
  • 企业网站的网络营销功能给网站做seo的价格
  • 贵阳网站建设专家海外推广运营
  • 漳州微信网站建设电话优化疫情二十条措施
  • 做网站的公司应该税率多少互联网广告怎么做
  • 网站的动态新闻数据库怎么做万网域名官网
  • 鞍山网站制作网站建设合同
  • wordpress好用的空间windows优化大师使用方法
  • qq小程序游戏入口seo排名优化怎样
  • 常州云计算网站建设磁力帝
  • 专业建站开发淘宝美工培训
  • 免费婚纱摄影网站模板软文推广的优点
  • 商城网站定制怎么做baidu优化
  • 网站php源码破解版seo高级优化技巧