您的位置:首页 > 其它

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

2015-08-31 18:12 183 查看
基本需求:系统按时导入数据的新版本,然后复制到分节点

版本化的好处:

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: