Ch00 Replication
# Replication
Replication可以带来的好处:
performance enhancement:比如,负载均衡到多台服务器上
fault-torlance: 比如,有f+1台服务器,f台挂了,还能有一台提供服务
availability
Replication需要实现的点:
replication transparency:用户只看到一个logical object,而不是很多个pyhsical object
consistency:一致性保证
replica manager

处理请求的5个阶段:

Group communication:把process分成一个一个group,更方便管理,并且可以用multicast,用group address

process只可以处理在view中的process发出的消息

分布式系统的一致性https://www.cnblogs.com/hzmark/p/consistency_model.html




例子:
- 不可能linearizable,但是可以是sequential的


- 不可能linearizable,但是可以是sequential的
一种解决fault torlance的模型:实现了linearizable consistency,请求只发给primary
每个请求带有一个独一无二的id,只有primary接受并且处理这个请求,并且存储结果,如果这个请求已经处理过了,那么re-send他的结果
如果是一个更新操作,那么primary把这个更新发送给其他的backup,让他们更新,backup发回ack来确认收到了更新
通过view-synchronize来得知primary挂了
Active 模型:请求发给所有的RM

gossip 模型:请求发给离自己最近的RM
data is replicated close to the location of the client
RMs periodically exchange ‘gossip’ messages containing updates
执行update和query之前必须先询问其他rm来执行在这之前的update,来做到causal ordering
使用vector timestamps来确保update执行的顺序