分布式存储系统sheepdog

分布式存储系统sheepdog

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备。

其架构例如以下:

 分布式存储系统sheepdog

 

 

以下,我们将从架构、模块等几个方面来介绍下:

 

一、架构图

分布式存储系统sheepdog

如上图:

採用无中心节点的全对称架构,无单点故障,存储容量和性能可线性扩展;

新增节点通过简单配置可自己主动添�(IP:PORT),数据自己主动实现负载均衡;

节点故障时,数据可自己主动恢复;

直接支持QEMU/KVM应用;

 

二、模块

分布式存储系统sheepdog

 

如上图:

由corosync,完毕集群成员管理和消息传递;

由Qemu作为Sheepdog的client,提供NBD/iSCSI协议支持;

由gateway实现数据的DHT路由,由storage server数据数据本地存储;

 

三、数据详细存储方式

分布式存储系统sheepdog

 

如上图:

以VDI Object存储VM数据,向用户暴露的是一个块设备;

包括4种数据对象:VDI、Data Object、属性对象和用于快照的VM实时状态数据对象;

以4M的小文件方式实现OBS,但非常easy基于此扩展,如使用使用库替代4M的小文件;

 

四、集群管理

1. 採用corosync,tot是em协议的一个开源实现。totem协议主要用来实现集群成员管理和可靠顺序传输。

2. corosync通过提供一个CPG API来提供服务。

首先,绑定一个fd到cpg_handle,并注冊回调函数cpg_dispatch;

然后将fd注冊到epoll;

corosync上消息会触发fd改变,通用epoll触发回调函数cpg_dispatch;

 

这里主要有两个函数,cpg_deliver_fn和cpg_confchg_fn,分别相应sd_deliver和sd_confchg.

 当中,sd_deliver负责集群从corosync给本地发消息,主要是针对VDI进行操作;而sd_confchg主要是对node进行操作,用来监控集群成员变化。

 

五、存储对象管理

集群对象版本号epoch;

obj文件夹下,每一个新的epoch要相应创建一个新的文件夹;

可从epoch恢复数据;

 

六、一致性模型

通过epoll机制保证;

通过数据操作实现强一致性(多副本的写同一时候成功时,才向client返回); 

 

七、DHT路由

代理路由方式;

由ip:port生成节点编号,做一致性哈希;

 

八、副本放置

一致性哈希;

虚拟节点;

 

如需了解更具体信息,可參考其官网:http://www.osrg.net/sheepdog/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118177.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数仓分层ods_关键层

    数仓分层ods_关键层数仓搭建——ODS层用户行为数据和业务数据

    2022年10月6日
  • ajax示例_ajax22

    ajax示例_ajax22script language=”javascript”>function deleteobject(id)…{    if (window.XMLHttpRequest)…{            xmlhttp = new XMLHttpRequest();        }else…{            xmlhttp = new ActiveXObject(“Micro

    2022年8月16日
  • 数据库 函数依赖及范式(最通俗易懂)

    数据库 函数依赖及范式(最通俗易懂)数据库函数依赖及范式(最通俗易懂) 一、基础概念  要理解范式,首先必须对知道什么是关系数据库,如果你不知道,我可以简单的不能再简单的说一下:关系数据库就是用二维表来保存数据。表和表之间可以……(省略10W字)。  然后你应该理解以下概念:  实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“…

    2022年6月16日
  • SpringMvc工作原理学习总结

    SpringMvc工作原理学习总结SpringMvc工作原理了解SpringMvc之前先看看Mvc的工作原理1、MVC工作原理M:Model(完成业务逻辑Service/dao/entity/)V:View(完成界面渲染jsp/html)C:Controller(控制器->类似于CPU接受请求->调用M->返回V)MVC工作原理图2、SpringMvc工作原理Spring和SpringMvc的关系:SpringMVC是一个MVC的开源框架,SpringMVC是Spring的一个

    2022年5月15日
  • 求总体标准差的置信区间_如何计算置信区间[通俗易懂]

    求总体标准差的置信区间_如何计算置信区间[通俗易懂]一、置信区间与置信水平在做实验时,即使实验条件再准确,也无法避免随机干扰的影响,所以误差永远存在,无可避免。做科学实验时要测量多次,采取取平均值的方法。在科学实验的测量结果上,总是会加上一个测量范围。统计学核心思想:用样本信息来估计总体信息之前我们用样本给出一个精确值来估计总体,这个点估计值是有价值的,但可能存在误差,因为有估计就会有误差,误差不可避免但是可以减少。点(精确值)误差>区间…

    2022年10月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号