4.1.结构介绍
环部分主要为2个部分,分别文件如下:
ring.py:负责维护accont,container,object相应环的信息,包括区域,设备,分区等等;
builder.py:ring管理工具,环中的信息由其负责维护,管理。
4.2.几个概念说明
区域:逻辑上的划分,可以是一个设备,一台主机,或者一个数据中心等等;
设备:物理机的存储设备,分区会通过builder工具分配给相应的设备;
分区:不同于操作系统的分区,而是按照swift的方式定义的分区,应该就是存储的单元,
副本:值分区的份数,可以通过命令指定副本的数量;
权重:与可以分配分区的多少对应,通常设备存储空间越大,权重越大;
每一个副本不会在同一个设备,每一个副本的设备不会在同一个区域
分区要分配到相应的设备
4.3.源码解析
Ring主要是在代理服务器中调用,当请求进入代理服务器,通过权限验证之后,通过ring,可以获得数据存储的位置,然后进行相应操作。
Ring中三个重要的参数:
devs:集群中的设备列表,即集群中都有哪些设备;
_replica2part2dev_id:由副本号映射到分区号,再映射到设备编号,可以通过分区号,获得相应的设备
_part_shift:由相应的hash找到数据存储的分区,
在ring中有2个重要的方法:
a)_reload()