在分布式存储系统中为了保证数据的可用性可采用master-slave Replication机制(其中master只提供写服务,slave只提供读服务),一般有三种方式:
1.异步
master有一个线程不断的扫描操作日志将最新的日志发送给slave,slave有线程接受master发送来的更新操作并回放。接受和回放操作一般由两个不同的线程。如果slave宕机则重新向master申请。
2.强同步
每个更新操作都先写入slave然后才写入master才能成功返回。传统的强同步会遇到一个问题,即如有一个slave宕机则必须停止写服务,所以该方法只能满足数据可靠性,不能满足可用性。
改进方法为,在master中维护一张slave机器表,每个写操作都要同步到slave列表中的所有机器。如发现一台slave宕机则将该slave从这个列表中删除。
3.半同步
设有N台slave,只要数据写入其中的任意K(1=1,所以总有至少一个跟master保持数据同步。当master宕机时,可以采用分布式选举算法paxos再slave中选取跟master数据同步的slave充当master继续提写服务。(Berkerly DB实现了这种同步方式)
阅读(7110) | 评论(6) | 转发(1) |