当前位置:文档之家› 第六章分布式系统

第六章分布式系统

第六章 复制和一致性
介绍 以数据为中心的一致性模型 分布式协议 一致性协议
介绍
为什么 在分布式系统中 需要复制?
复制的原因 对象复制 作为伸缩技术的复制
Reasons of Replication
• 复制的原因
– 可靠性Reliability – 性能Performance
• Example
– 一个server或者client请求其他的server发送当时在它上 面做的任何修改 – 当读/写比率很低的时候(读的少写的多)有效
• 从设计的角度对两种策略进行比较
Issue State of server Messages sent
Response time at client
Push-based List of client replicas and caches Update (and possibly fetch update later) Immediate (or fetch-update time)
• Example
– cntQ(P,F)
• 访问计数
– del(P,F)
• 删除阈值
29
2015-5-11
客户端发起的请求 Client-Initiated Replicas
• 定义
– 副本是由客户端发起复制的,通常是客户端的Cache
• Cache是一个本地存储设备用于让Client临时存储其刚刚请求的 数据的副本 • Client端的cache用于提升数据的访问时间 • 数据只在cache中保存有限的时间
13 2015-5-11
Examples of Strict Consistency
• Wi(x)a
– 表示进程Pi要在数据项x上执行写操作,新值为a
• Ri(x)b
– 表示进程Pi要读数据项x的值,返回值是b
This is right
14
This is wrong
2015-5-11
顺序一致性 (Sequential Consistency)
– 处理器不共享硬盘或者内存
• 数据库是分布的,可能复制到一系列地域不同的站点上
27 2015-5-11
服务器发起的副本 Server-Initiated Replicas
• 定义
– 数据存储有一些用于提高效率的副本,是由数据存储 的拥有者发起创建的
• Example
– push caches(推高速缓存)
15
2015-5-11
Sequential Consistency Example
16
2015-5-11
Linearizability(线性化)
• 当每个操作有时间戳,并且下面的条件 满足,那么数据存储是线性化的:
– 时间戳基于松散同步的时钟 – 满足顺序一致性 – 除此之外, 如果 tsop1(x)<tsop2(y), 那么操作 OP1(x) 应该在操作 OP2(y) 之前完成
若在此时出现对a, b, c变量的读访 问怎么办? 可以考虑加入对s的同步操作
23 2015-5-11
那么
副本到底放在那里? 如何进行修改?
24 2015-5-11
分布式 协议
分布式系统中都有 什么样的协议?
副本的放置 修改传播 传染病协议
副本的放置Replica Placement
• 对于分布式数据存储的主要设计问题是决定数据 存储的副本什么时候,由谁放在哪里
– 传播修改操作到其他的副本上
• active replication: 告知每个副本应该执行什么样的 修改操作
31 2015-5-11
Push Protocols和Pull Protocols
• 推协议Push protocol
– 修改被传播到其他的副本上而不需要副本自己关心是 否发生了修改
• 拉协议Pull protocol
可以延 时执行
/* variables */ /* pointers */ /* function prototype */ /* a stored in register */ /* b as well */ /* used later */ /* used later */ /* p gets address of a */ /* q gets address of b */ /* function call */
12
2015-5-11
Problems and Solution
• Problems
– 依赖绝对的全局时间
• Solution
– 把时间分割成为一个连续的不重合的间隔,每个 操作都假设在一个时间间隔中发生,并接收到一 个与此时间间隔相对应的时间戳 – 必须处理在同一个时间间隔中发生的多个操作
• 当多个操作在同样的数据上发生的时候,如果有一个操 作是写操作,则存在冲突 • 一致性模型需要决定什么时候冲突发生,什么样的操作 是可以接受的
• Client Cache的放置位置
– 通常把Cach器上 – 将一个cache server放在WAN的一个特定点上,并让 Client尽量与cache server保持比较近的距离
30
2015-5-11
修改传播Update Propagation
20
2015-5-11
与前面模型的不同
• 弱一致性可以在一组操作上实现一致性, 而不是针对单个的读或者写操作
– 在独立访问共享数据的状况很少,而大部分的 访问都是集中到来的情况下这个模型是有用的
• 只有当保持一致性的时候才进行限制,而 不是限制一致性的形式 • 由程序员来控制
21
2015-5-11
32
Pull-based None Poll and update Fetch-update time
2015-5-11
推协议的例子:Lease(租用)
• 定义
– 是server的一个承诺,声称它将在一个特 定时刻将修改推到client上
• Method 1: 当一个租用过期,client只能自己 询问server是否有修改发生,并在需要的时 候拉入修改 • Method 2: 当一个租用过期,client请求一个 新的租期用于server推出修改
5
2015-5-11
Problems 2
• 复制一个共享的远程对象,并允许对这些对 象进行并发引用会导致一致性问题 • Approach
– 对象本身负责保证其所有的副本都保持一致性 – 分布式系统负责这个任务
6
2015-5-11
作为伸缩技术一种的复制
• 理论上使用多个副本可以支持伸缩技术 • Problems
• 一个网站收到很多远程的请求,因此在请求发生的位置放置一 个Cache是值得的
• Problems
– 确定什么时候创建或删除副本 – 确定在哪里创建或删除副本
28
2015-5-11
动态复制算法 Dynamic Replication Algorithm
• 考虑两个方面的内容
– 复制可以减少一个服务器的负载 – 一个服务器上的特定文件可以被迁移或者复制到对这 个文件发起很多请求的多个Client的附近
• 比严格一致性弱,比顺序一致性强 • tsop(x) 表示操作OP在数据项x上操作的时间戳 • OP可以是read (R) 或者 write(W)
17 2015-5-11
区别
• 线性化 vs. 顺序一致性
– 线性化的数据存储也是顺序一致的 – 主要的区别在于线性化的顺序是基于一 个同步时钟的集合
Example 1
如果程序员认为需 要保证对x的读需 要读到最新的结果, 那么就在读x之前 加入对s的同步操 作原语
This is right
This is wrong
22 2015-5-11
Example 2
int a, b, c, d, e, x, y; int *p, *q; int f( int *p, int *q); a = x * x; b = y * y; c = a*a*a + b*b + a * b; d = a * a * c; p = &a; q = &b e = f(p, q)
– 从远程Web服务器获取一个网页
• Problems
– 有多个副本会导致一致性问题
3
2015-5-11
Object Replication
• 考虑一个分布式远程对象被多个客户端共享
4
2015-5-11
Problems 1
• 如何保护对象不被多个客户端同时访问 • Solution
– 对象本身可以控制并发的激活操作 – 对象所在的服务器负责并发控制
11
2015-5-11
Strict Consistency(严格一致性)
• 任何在数据项目x上的读操作都能返回对数 据项x上的最近一次写操作的结果
– 最严格的一致性模型 – 假设有一个绝对的全局时钟存在 – 在一个单处理器系统中,容易实现 – 在一个数据分布在多个机器上,并可以被多个 进程访问的系统中,很难实现
33 2015-5-11
通信机制: 单播(Unicasting)和多播(Multicasting)
• 单播Unicasting
– 当一个服务器是数据存储的一部分,将其修改 传播到其他的N个服务器上。它使用的方法是 发送N个单独的消息给每个服务器
• 多播Multicasting
– 底层的网络负责将一个消息发送给多个接受方 – 优点
10
2015-5-11
一致性模型Consistency Model
• 一致性模型是进程和数据存储之间的一个合同 (contract)
– 如果所有的进程同意遵守特定的规则,数据存储保证 正确地工作 – 当一个进程执行了一个读操作,它将返回数据上的最 后一个写操作的结果
相关主题