【分布式计算】副本数据Replicated Data

作用:可靠性、高性能、容错性
问题:如何保持一致、如何更新
问题:存在读写/写写冲突
一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题

Data-centric models:

consistency model??
???
读取时,客户希望得到最后一次写操作后的结果,但是全局时钟不存在==》矢量时钟
【分布式计算】副本数据Replicated Data_第1张图片
对于每个进程来说,只能操作本地副本,副本之间进行同步

strict consistency 严格一致性 —>理想模型

定义:所有读到的结果都是最后一次写操作的结果;A,B,C中其中1个副本改变,其他2个进程能够立即读取到这个改变(不可能,存在网络延迟)
条件:1.全局瞬时改变 2.存在全局时钟 3. 写操作瞬时对所有进程可见

sequential consistency 顺序一致性

定义:无论操作顺序,其他进程得到结果一致;来自不同进程的操作式可以交换的(interleaved),但是结果一致;单独进程内的操作以顺序区分(specified)

线性一致性

??????

因果一致性(causal consistency)

具备因果关系的3种情况:
    1、 P 1 P_1 P1写, P 2 P_2 P2读, R 2 ( X ) R_2(X) R2(X), W 1 ( X ) W_1(X) W1(X)
    2、 P 1 P_1 P1读, P 2 P_2 P2写, W 2 ( X ) W_2(X) W2(X), R 1 ( X ) R_1(X) R1(X)
    3、 P 1 P_1 P1写, P 2 P_2 P2读后再写, W 2 ( X ) W_2(X) W2(X), W 1 ( X ) W_1(X) W1(X)
  不在这3条内的,则位concurrent
  因果关系 ≠ \neq = 因果一致性
【分布式计算】副本数据Replicated Data_第2张图片
a:存在因果关系操作。P_1写a操作,P_2先读a在写a操作,因此存在因果关系操作。P_3、P_4作为监控进程,在a中两个监控进程的结果不同,所以无因果一致性
b:没有因果操作,所以是concurrent;但是存在因果一致性??

=》不断跟踪不同进程做了什么操作

First-in-First-out FIFo—》队列

????????????????????????????????????????????????????????????????????????????????????????????????????

对于三个操作、三个副本、三个进程
【分布式计算】副本数据Replicated Data_第3张图片
对于一个操作来说,操作本地副本(master副本),写操作集中,其他进程只读
写完后数据同步:返回ACK确定给客户

怎么同步:一段时间的log日志,其他进程读取log文件进行redo操作进行同步 ----》最终一致性eventual consistency

redo,undo恢复机制

Client Centric Consistency

Monotonic Read单调读

只要读,接下来读到的只是相同的或更加新的数据

???

Monotonic Write单调写

上个写完了,下个写

Read-Your-Write

Write-Follow-Reads

Replica Placement 副本存放

  permenant replica
  server-initiated replica
  client-initiated replica

你可能感兴趣的:(分布式计算,linux,服务器,运维)