第9章 Swift远程容器同步的实现原理_第1页
第9章 Swift远程容器同步的实现原理_第2页
第9章 Swift远程容器同步的实现原理_第3页
第9章 Swift远程容器同步的实现原理_第4页
第9章 Swift远程容器同步的实现原理_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Swift远程容器同步的实现原理(第九章)fflCONTENTS 目录PART 01远程容器同步简介PART 04远程容器同步实现的示例PART 02远程容器同步的使用PART 05作业PART 03远程容器同步的实现原理PART 01远程容器同步简介远程容器同步把不同的集群间的容器内容进行同步,用来进行容灾 Swift集群操作员配置他们的集群来允许/接受同步请求到/来自其他 的集群用户使用同步密钥来指定要同步的容器ObjectFileObject Server JObjectFileQ远程容器同步设置管理员设置配置文件CO ntai ner-server.co nf,指定可以和哪些服务器进行

2、远程同步allowed_sync_hosts = hostl, host2, host3用户使用swift工具设置需要远程同步的容器n获取2个集群的认证n设置容器testl和容器test2远程同步swiftpost-tsecret test1swift双向post-tswiftpost-tsecret test2 HYPERLINK http:/cluster2/host2/vl.0/AUTH http:/cluster2/host2/vl.0/AUTH URL2/test2 -k-k secret test2(单向) HYPERLINK http:/clusterl/hostl/vl.O/A

3、UTH http:/clusterl/hostl/vl.O/AUTH URL1/test1 -kPART 02远程容器同步的使用远程容器同步使用向第一集群的容器testl上传一些对象photo3.jpgswift upload testl photo1.jpg photo2.j等几分钟后,检查容器test 2的内容swift list test2photo1.jpgphoto2.jpgphoto3.jpg远程容器同步使用向第一个集群的容器testl上传_些对象swift upload test1 photo1.jpg photo2.jpg photo3.jpg等几分钟后,检查容器test 2的

4、内容swift list test2photo1.jpgphoto2.jpgphoto3.jpgPART 0 3远程容器同步的实现原理远程容器同步实现原理每个存储节点上会运行一个Con tai nerSync进程,扫描本地设备上的容器数据库,检查每个容器的元数据看是不是有下面的元数据项n xcontainer-sync-ton x-container-sync-key如果存在,那么在数据库里的所有的在上次同步后新添加的行,都会触发对远程容器的PUT/DELETE/POST操作远程容器同步实现难点每个容器都有3个副本,如果不采取措施,那么每个容器副本都会去进行同步远程容器同步实现方案讨论为了避免

5、3个容器副本都试图进行同步,我们可以指定1个副本进行同步其它2个副本不进行同步问题:如果该副本出现了故障,那么就会导致无法完成远程容器同步任务TestiTestiTestiTesti集群2远程容器同步实现方法:分工合作首先Co ntai nerSy nc进程要为每个容器副本进行编号,在3副本情况下,副本编号为0、lc 2根据副本编号,Co ntai nerSy nc会计算出哪些数据库行应该由哪个容器副本进行同步那么,如何决定一个数据库行应该有哪个容器副本来进行同步呢?远程容器同步实现方法MD5 (数据库行对象名)MOD 3= (0zlz 2)结果就是应该对该行进行远程同步的容器副本号每个容器只

6、有1/3,如何得到其余2/3 ?Row3Row4 MD5 () MOD3Row5Row6Row7容器副本故障问题如果某个容器副本出了故障,那么如何保证它负责的1/3数据库行能得到远程同步?Row1Row2Row3R0W4 MD5 () M0D3Row5R0W6R0W7容器副本故障处理方法I在每个副本负责完成1/3的同步后,进行第二轮同步在第二轮同步的时候,每个副本不是对1/3行进行同步,而是要对所 有行都进行同步I这样万一第一轮同步时,有哪个副本出现了故障,第二轮可以把它负 责的那1/3行进行同步问题:I那么第一轮同步是不是多此一举?I也会遇到3个副本对所有行都进行同步问题容器副本故障处理方法

7、I在进行第二轮同步的时候,远程容器会首先检查2个容器的元数据是 不是一致,如果一致,说明第一轮同步已经成功,就不需要进行第二 轮同步n timestamp, etagI因为容器出故障的概率很小,所以第二轮同步基本上就是一个简单的 元数据比较PART 04远程容器同步实现的示例远程容器副本同步举例副本数设置为3,对象在数据库里的行号为0到5假定该容器是第一次进行远程容器同步操-所以 SP1 = SP2 = -1SP1SP21-1012345首先检查位于SP1和SP2之间的行,为空,所以没有需要进行第二轮同步的行然后检查大于SP1的行,进行第一轮同步,0到5远程容器副本第一轮同步再计算这些行里哪些

8、行需要本副本进行同步,假定说,n第0副本:OZ 1n第1副本:2, 5n第2副本:3, 4Row0Row1Row2Row3 MD5 () M0D3Row4Row5副本2皿本地化iTestiTestiRow2Row5Row3Row4Testi远程容器副本第一轮同步I假如我们是容器副本1所在的节点,负责完成行2 , 5的同步I然后把SP1设置到刚才所看到的最大的行号5所以SP 1 = 5 SP2 = - 1SP1SP2I、f-1 0 1 2 3 4 5 6 7 8 9 10 11假设在进行第1轮同步的时候,用户又新上传了对象到容器,所以容器数据库又新添加了行6到1 1远程容器副本第二轮同步I当容器

9、的ContainerSync进行下一次同步的时候,检查到SP2和SP1之间有行0到5,共6行,需要进行第二轮同步SP1SP2-1 0 1 2 3 4 5 6 7 8 9 10 11容器副本第二轮同步,SP1之间的行都需要进行同步Row0Row1Row2Row3Row4Row5TestiTestiRow0Row1Row3Row4Row5Row0Row1Row2Row3Row4Row5Row0Row1Row2Row3Row4Row5Row0Row1Row2Row3Row4Row5I第二轮同步时,所有副本对所有SP2远程容器副本第二轮同步I如果第二轮同步都取得了成功,就把SP2也移动到SP1的位置,

10、所以SP1 = 5 SP 2 = 5SP1SP2V-1 0 1 2 3 4 5 6 7 8 9 10 11远程容器副本同步举例I然后进行第1轮同步,需要同步的行有6到11I这和上次一样,通过计算每个容器副本负责1/3的行进行同步同步完成后,把SP1移动到当时看见的最大行1 1所以SP 1 = 1 1 SP2 = 5SP1SP2f-1 012 3 4 5 6 7 8 910 11 12 13容器副本故障问题分析计算这些行里哪些行需要本副本进行同步,假定说,n第0副本:OZ 1第1副本:2, 5 (该副本所在节点出了故障)第2副本:3, 4Row0Row1Row2row3 MD5 () M0D3R

11、ow4Row5Row0Row1Row2Row5Row3Row4容器副本故障问题分析再计算这些行里哪些行需要本副本进行同步,假定说,n第0副本:OZ 1n第1副本:2, 5 (该副本所在节点出了故障)n第2副本:3, 4Row0Row1Row2Row3Row4Row5Row0Row1Row3Row4Row0Row1Row3Row4Row0远程容器副本同步故障分析进行第1轮同步后,远程容器没有得到行2,行5的对象SP1二5 SP2二-1但是第二轮同步时,容器副本0和副本2会对所有SP2和SP1之间的行进行- 步,所以,行2,行5会得到同步SP1SP2-1 0 1 2 3 4 5 6 7 8 9 1

12、0 11容器副本故障问题分析第二轮同步副本0和副本2对所有行进行同步Row0Row1Row2Row0Row1Row2Row3Row4Row5副本2TestiRow0Row1Row2Row3Row4Row5Row0Row1Row2Row3Row4Row5TestiTestiRow0 Row3 Row1 Row4 Row3 Row5Row4 Row0Row1Row2Row0 Row3Row1 Row4 Row3 Row5 Row4Row0 Row0 Row1 Row1 Row2 Row3 Row3 Row4 Row4容器副本故障问题分析如果第二轮同步时候,有些行没有同步成功,比如第3行出现同步失败, 那么,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论