【分布式计算】七、同步 synchronization 重难点

两个协议:

  1、NTP(Network Time Protocal)–>广泛使用
   机器周期向时间服务器获取准确时间
  2、没有协议名称 − > -> >没有广泛使用
   时间服务器周期扫描所有机器,计算时间平均值;导致时间服务器负载大,不广泛使用

逻辑时钟(logical clock)

是一种次序时间,而非准确物理时钟(an ordering time,not exact time)
   a.happened-before relation
     假设a,b是同一进程(process)的两个事件(event),a在b前到达:a–>b
      a 发送, b 接收 a发送,b接收 a发送,b接收 a − > b a->b a>b
      a − > b , b − > c a->b,b->c a>bb>c a − > c a->c a>c
   b.若无法判断 a − > b a->b a>b还是 b − > a b->a b>a(即先后顺序未知):a,b是平行事件(concurrent)

逻辑时刻(logical timestamp)

记事件event的逻辑时刻(logical timestamp)为 C ( e v e n t ) C(event) C(event)。若 a − > b , 则 C ( a ) < C ( b ) a->b,则C(a)<C(b) a>b,C(a)<C(b)

如果没有中心结点如何计算逻辑时刻??:
  1、对于进程 i i i,有事件发生时 C i = C i + 1 C_i = C_i + 1 Ci=Ci+1
  2、有消息(message)发送时,消息中带有 t s ( m ) = C i ts(m) = C_i ts(m)=Ci
  3、对于收到消息的进程 j j j,更新本地 C j = m a x { C j , t s ( m ) } C_j=max\{C_j,ts(m)\} Cj=max{Cj,ts(m)},然后 C j = C j + 1 C_j = C_j+1 Cj=Cj+1
例子:

在这里插入图片描述

会产生问题:冲突
完全有序多播(totally ordered multicast)
  对于员工奖励,是先增加1000元、再提成1%?还是先提成1%、再增加1000元?假如员工和经理都会向自己的服务器(员工服务器、经理服务器)发送更新。由于顺序的原因,员工服务器是先增加1000元、再提成1%,经理服务器是先提成1%、再增加1000元。最终两个服务器数据同步时,会发生冲突,怎么解决?
  解决方案:根据公司规章制度来(业务逻辑),对于特殊员工,特殊接口对待

不同机器上时间戳不同,用逻辑时钟??
  1、 a − > b ,则推导出 C ( a ) < C ( b ) a->b,则推导出C(a)<C(b) a>b,则推导出C(a)<C(b)
  2、但是 C ( a ) < C ( b ) ,不能推导出 a − > b C(a)<C(b),不能推导出a->b C(a)<C(b),不能推导出a>b
# 矢量时钟(Vector clock)
结论:???没有拍到
运行步骤:
  1、对于每个进程 P i P_i Pi,有向量 V C i [ 1 , . . . . . n ] VC_i[1,.....n] VCi[1,.....n] n n n为总的进程数,所有元素初始化为0
  2、 P i P_i Pi发送消息 m m m,则 V C i [ i ] + 1 VC_i[i]+1 VCi[i]+1,以及发送的消息 m m m带上 V C i VC_i VCi作为消息的矢量时钟 V t ( m ) Vt(m) Vt(m)
  3、进程 P j P_j Pj P i P_i Pi接收消息 m m m和矢量时间戳 t s ( m ) ts(m) ts(m) =Vt(m)???
    1.更新 V C j VC_j VCj,对于 V C j VC_j VCj的每个元素 V C j [ k ] = m a x { V C j [ k ] , t s ( m ) [ k ] } VC_j[k] = max\{VC_j[k],ts(m)[k]\} VCj[k]=max{VCj[k],ts(m)[k]}
    2. V C j [ j ] + 1 VC_j[j]+1 VCj[j]+1
举例:
在这里插入图片描述
解释:P0,P1,P2初始均为(0,0,0)。
首先 P 1 P_1 P1发生事件 a a a,更新 V C 0 [ 0 ] = 0 + 1 VC_0[0] = 0+1 VC0[0]=0+1,且发送消息 t s ( m ) = ( 1 , 0 , 0 ) ts(m) = (1,0,0) ts(m)=(1,0,0),同时 P 1 P_1 P1发生事件 c c c,更新 V C 1 [ 0 ] = 0 + 1 VC_1[0] = 0+1 VC1[0]=0+1,没有发送消息;然后 P 1 P_1 P1发生事件 d d d,接收来自 P 0 P_0 P0的消息 m m m,更新 V C 1 [ k ] = m a x { V C 1 [ k ] , t s ( m ) [ k ] } VC_1[k] = max\{VC_1[k],ts(m)[k]\} VC1[k]=max{VC1[k],ts(m)[k]},然后 V C 1 [ 1 ] + 1 VC_1[1]+1 VC1[1]+1。接下来是一个道理

讨论:在大型网络中,那种时钟合适(物理、逻辑、矢量)??
解答:同步是为了进行数据同步,保证数据一致性,在超大型网路中,数据同步需求低(Oracle最多支持9个数据副本同步);在小批量网络中,矢量时钟最合适,逻辑时钟具有发生冲突的根本矛盾。

mutual exclusion

三大要求:
  1.safety:只有一个进程在给定时间进入临界区工作
  2.liveness:请求进入与退出都会成功—即每个进程不会一直待在临界区内
  3.fairness:先来后到,先请求先服务
进程根据token进入临界区工作

有中心结点

由中心结点进行调度,
在这里插入图片描述

无中心结点

基于逻辑环ring-based solution

谁有token令牌谁进入工作

RA算法(Ricart-Agrawala)基于多播(muticast)

·进程 P i P_i Pi想进入临界区时,向其它所有进程发送REQUEST广播消息
·进程 P j P_j Pj收到进程 P i P_i Pi的请求。
  若进程 P j P_j Pj没有请求临界区、也没有正在执行临界区,则立即返回REPLY消息。
  若进程 P j P_j Pj正在请求临界区,但其时间戳大于进程 P i P_i Pi的请求,则立即返回REPLY消息。
  否则,进程 P j P_j Pj延迟返回REPLY)消息,并设置〖RD】[风=1,其中RD数组记录了所有被延迟发送返回消息的进程;直至 P j P_j Pj自己完成后再发送
在这里插入图片描述

选举算法election algorithms

有一个leader或coordinator(尽管存在单点故障(single point of failure)、瓶颈(bottleneck)等问题。
如何动态选举出一个特殊进程作为leader (选举算法解决了单点故障问题)
  没有前领导人,谁触发选举不重要
假设:
  1、每个进程均有相应的优先级(权值),一般按照编号来)
  2、优先级最高的成为leader

暴力枚举(Bully)

思想:谁的 ID 最大或最小谁来当老大(一般选择 ID 大的)。
规则:1.leader不响应或相应超时,则触发选举
   2.从ID小的开始向上选举
   3.故障结点复活了,是否抢回leader位---->否,可以容忍一些
优先级大的结点一直当leader,持续高负荷工作,内存碎片增加,工作效率降低

Ring(基于环)

message绕环一圈,就有了全局的信息,知道有哪些结点,将最大编号的作为leader

RA算法参考:https://blog.csdn.net/happy990/article/details/95032371

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/138283.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】时间、空间复杂度

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 时间、空间复杂度 1. 算法效率3. 时…

应用程序处理:TCP模块的处理

1、应用程序处理 首先应用程序会进行编码处理&#xff0c;这些编码相当于 OSI 的表示层功能&#xff1b; 编码转化后&#xff0c;邮件不一定马上被发送出去&#xff0c;这种何时建立通信连接何时发送数据的管理功能&#xff0c;相当于 OSI 的会话层功能。 2、TCP 模块的处理 …

Acer宏碁暗影骑士5笔记本AN517-54原装出厂Win10系统工厂模式

宏基电脑原厂WINDOWS10系统自带所有硬件的驱动、NITROSENSE风扇键盘控制中心、Office办公软件、出厂主题壁纸LOGO、 Acer Care Center、Quick Access等预装程序 链接&#xff1a;https://pan.baidu.com/s/1Ovui_CvsUaF-TX0NbuhEVg?pwdcrmv 提取码&#xff1a;crmv 所需要工…

Hadoop-sqoop

sqoop 1. Sqoop简介及原理 简介&#xff1a; Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递&#xff0c;可以将一个关系型数据库&#xff08;例如: MySQL ,Oracle ,Postgres等&#xff09;中的数据导进到Hadoop 的HDFS中&…

2、Window上的 虚拟机端口 暴露到 宿主机局域网教程

今天在公司的服务器主机上捣鼓虚拟机&#xff0c;要在虚拟机上安装一个oracle&#xff0c;虚拟机和主机能互相ping通的前提下&#xff0c;要将虚拟机上的端口号暴露在主机上&#xff0c;让项目组内的所有员工的电脑都能访问到该oracle数据库。 也就是电脑A 访问主机&#xff0…

计算机网络运维方向综合知识大全

一. 基础知识 1. 网络的组成 组成部分&#xff1a;硬件、软件、协议 硬件主要由主机&#xff08;也称端系统&#xff09;、通信链路&#xff08;如双绞线、光纤&#xff09;、交换设备&#xff08;如路由器、交换机等)和通信处理机&#xff08;如网卡)等组成。软件主要包括各种…

【SpringCloud】微服务技术栈入门1 - 远程服务调用、Eureka以及Ribbon

目录 远程服务调用RestTemplate Eureka简要概念配置 Eureka 环境设置 Eureka ClientEureka 服务发现 Ribbon工作流程配置与使用 Ribbon饥饿加载 远程服务调用 RestTemplate RestTemplate 可以模拟客户端来向另外一个后端执行请求 黑马给出的微服务项目中&#xff0c;有两个 …

【深度学习实验】前馈神经网络(六):自动求导

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 标量求导 2. 矩阵求导 3. 计算图 一、实验介绍 PyTorch提供了自动求导机制&#xff0c;它是PyTorch的核心功能之一&#xff0c;用于计算梯度并进行反向传播。自动求…

使用Java将PPT、PPTX和PDF转换为图片

从Office到图片—使用Java实现文件格式转换 PDF转图片1. 万事第一步2. 撸代码 PPT/PPTX转图片1. 万事第一步2. 撸代码验收一下 最近小雨遇到了一个需求&#xff0c;需要在前端小程序中嵌入展示Office文件的功能。然而&#xff0c;前端使用开源组件进行在线预览会导致性能消耗较…

windows下gvim的配置

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、排版 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…

IDEA 2019 Springboot 3.1.3 运行异常

项目场景&#xff1a; 在IDEA 2019 中集成Springboot 3.1.3 框架&#xff0c;运行异常。 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据...

全文下载链接&#xff1a;http://tecdat.cn/?p24203 本教程使用R介绍了具有非信息先验的贝叶斯 GLM&#xff08;广义线性模型&#xff09; &#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 当前教程特别关注贝叶斯逻辑回归在二元结果和计数/比例结果场景中的…

Linux:冯诺依曼系统和操作系统的概念

文章目录 冯诺依曼体系结构冯诺依曼体系的理解 操作系统操作系统的基本定位操作系统的理解1 操作系统的理解2总结 本篇主要总结的是操作系统的基本认知和一些概念 冯诺依曼体系结构 那么上图表示的就是冯诺依曼体系结构&#xff0c;那这个体系结构是什么&#xff1f;为什么要先…

客户端和服务端信息交互模型

什么是客户端和服务端&#xff1f; 客户端&#xff1a;可以向服务器发请求&#xff0c;并接收返回的内容进行处理 服务器端&#xff1a;能够接收客户端请求&#xff0c;并且把相关资源信息返回给客户端的 当用户在地址栏中输入网址&#xff0c;到最后看到页面&#xff0c;中间都…

配置OSPFv3基本功能 华为笔记

1.1 实验介绍 1.1.1 关于本实验 OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2&#xff08;OSPF版本2&#xff09;是支持IPv4的路由协议&#xff0c;为了让OSPF协议支持IPv6&#xff0c;技术人员开发了OSPFv3&#xff08;OSPF版本3&#xff09;。 无论是OSPFv2还是OSPFv…

服务器新建FTP文件备份的地址

步骤1&#xff1a;远程桌面连接 步骤2&#xff1a;输入服务器地址&#xff0c;账号&#xff0c;密码 服务器地址&#xff1a;IP地址 账号&#xff1a;Administrator 密码&#xff1a;123456 步骤3&#xff1a;点击这个一个小人的图标 步骤4&#xff1a;General–>Add–&g…

R语言进行孟德尔随机化+meta分析(1)---meta分析基础

目前不少文章用到了孟德尔随机化meta分析&#xff0c;今天咱们也来介绍一下&#xff0c;孟德尔随机化meta其实主要就是meta分析的过程&#xff0c;提取了孟德尔随机化文章的结果&#xff0c;实质上就是个meta分析&#xff0c;不过多个孟德尔随机化随机化的结果合并更加加强了结…

【数据链路层】网络基础 -- MAC帧协议与ARP协议

数据链路层认识以太网以太网帧格式(MAC帧)认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响 再谈局域网转发原理&#xff08;基于协议&#xff09;ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 数据链路层 用于两…

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…

【Java 基础篇】Java并发包详解

多线程编程是Java开发中一个重要的方面&#xff0c;它能够提高程序的性能和响应能力。然而&#xff0c;多线程编程也伴随着一系列的挑战&#xff0c;如线程安全、死锁、性能问题等。为了解决这些问题&#xff0c;Java提供了一套强大的并发包。本文将详细介绍Java并发包的各个组…