Chinaunix首页 | 论坛 | 博客
  • 博客访问: 596528
  • 博文数量: 86
  • 博客积分: 3214
  • 博客等级: 中校
  • 技术积分: 1105
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 18:26
文章分类

全部博文(86)

文章存档

2011年(5)

2010年(49)

2009年(3)

2008年(29)

分类: 数据库开发技术

2011-05-05 21:40:03

在分布式存储系统中为了保证数据的可用性可采用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实现了这种同步方式)

 

阅读(7133) | 评论(6) | 转发(1) |
给主人留下些什么吧!~~

GFree_Wind2011-05-06 12:13:08

是否能够真正做到原子提交呢?