基于版本的数据存储和Replication 系统

基本需求:系统按时导入数据的新版本,然后复制到分节点


版本化的好处:

1)安全。如果最新版本写失败了,可以继续用就版本。不会出现新旧数据混杂的情况。

2)读写互不影响,类似copy on write,导入新版本数据的过程中,系统可以使用旧数据


从分布式系统的角度,系统由一个ingest Process 和多个sync Process 组成,分布在不同的机器。sync Process 和 ingest Process是通过共享目录和manifest文件交换数据和通信。sync Process 采用pull的模式,定时从共享目录pull数据,manifest文件用来表面当前最新版本的version, 以及需要copy的文件列表。

各个process靠自己时钟驱动,彼此没有信号交互,只是有共享数据,共享数据的互斥保护是靠系统自带的文件访问的保护机制,

1)当ingest process 写manifest文件的时候,各个sync process download manifest文件会block住,webClient -> IIS -> try to open the manifest file being written-> block。

2)当多个sync process down manifest文件的时候可以同时进行。


ingest process导入时候如何维护版本:

1)创建一个新版本的时候,用当前版本+1 创建一个新版本目录,但是这个目录带一个下划线,

2)当数据导入成功后,改目录名,然后把最新版本号保存到数据库

3)如果数据导入不成功也没关系,因为没有commit,系统使用上一个成功版本的数据。同时下一个周期会清理临时目录,并且再次导入。

4)维护一个最多保留的版本数


sync Process 如何sync以及维护版本

1)约定的共享目录下有一个manifest文件,第一行代表最新的版本号,其余行是文件是需要copy的文件列表,sync process定期query共享目录,并且和已取得的版本比较,以判断是否有新版本。

2)然后到共享目录的对应版本号的目录下download 文件,local的版本维护和ingest process类似,先创建一个带下划线的临时目录,download完了再commit。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值