Ceph andSwift: Why we are not fighting

原文:Ceph andSwift: Why weare not fighting

作者 :ChmouelBoudjnah

翻译:BBSee[rolltion.zhang@foxmail.com]

一下()中的内容均为译者加入的

我刚刚从在香港举行的openstack峰会上回来。和往常一样,这次峰会上我和很多人进行了激烈的交流、听了听展示会,或者和大家一起展望一下彼此都热衷的一些软件的未来。

在和不同的人交流的过程中我发现这样一个常见的问题:人们想知道是不是“ceph比swift更加优秀”。

我从2008年被安排到Swift项目组,之前OpenStack甚至只是一个设想,到现在作为核心开发人员,很明显我的回答是有倾向性的。

我可以理解当有可以作为更优选项的产品出现时,人们转而选择这个产品(的行为)。这是我们科技技术很正常的一种演变。我还记得当时,(让我们)追忆一下,Linux刚刚兴起的时候,我顽固地坚持结合我的Lynx和我的一些工具使用LInux终端,放弃X11系统,因为我真的看不到它的优势何在,现在我很高兴地使用者Mac
OS X系统。

但是ceph和swift事实上并没有相互竞争:它们是两种不同的技术,每一种都有不同的设计目的。虽然这两者之间有一些重叠的特性,但是他们二者有着不同的应用场景并且能在同一次部署中相处的很融洽。

特性比较:

从一个高水平的角度来看,这两种对象存储技术之间最主要的区别在于:

Ceph:

  • 起始于2006年
  • 开发语言:C
  • 强一致性
  • 块存储
  • 对象存储

Swift:

  • 起始于2008年
  • 开发语言:Python
  • 最终一致性
  • 对象存储
  • 真正的大型公用云服务产品中使用

Ceph做了大量的事情,不仅仅是对象存储。ceph能作为一种开源的块存储(一种提供远程虚拟磁盘的方式)来使用,这正是人们被它所吸引的地方。Ceph在(块存储)这方面做的非常杰出,因此他似乎成为了一项部署OpenStack时非常受欢迎的块存储系统选项,总之,这是OpenStack和开源社区的一次双赢。

Ceph之所以能实现块存储源自它的强一致性,确保在给客户端返回"OK"的响应之前,你要写入的所有数据都被写到了磁盘上。采用C开发使得ceph的性能最优化,与此同时,由于他的设计模式,使得客户端(Clients)能直接和存储服务器(OSDs)交互。

共享文件系统的构建是一项尚未完成的工作,到目前为止(2013年)还没有为生产环境做好准备。但是,一旦它成功了,它将解决过去几十年人们努力尝试解决的困难又复杂的问题。

另一方面,Swift,只做一件事,并且做得非常好。它唯一的追求就是做好对象存储并提供一种REST风格的api来访问它。它是最终一致性的。这意味着,当硬件环境发生故障时(这是一个集群不可避免的),swift会回退以提供高利用率的数据访问。Swift的最终一致性最有可能体现在当硬件出现故障时读取被覆盖写的对象时,以及查询一个在同时创建了很对象的container(swift容器)对象列表时。

这种最终一致性也允许在跨度很广的地理空间上部署Swift集群。这不仅仅是“回放日志”式的复制,它更允许部署者针对不同region的同步或者异步复制进行集群配置。Swift的代理服务器们能够感知当前它们所处的是哪个region,这就允许当有新的数据被写入时部署者可以优化吞吐量或者数据的散布。

使用python开发Swift对于部署者来说有巨大的优势,不仅仅是因为语言本身,而是因为它与能嵌入WSGI管道的灵活的中间插件更加契合。同时也可以非常轻松地将Swift插入一系列不同的认证系统,允许所有类型的中间件修改它的行为并且结合具体的功能。

和Python相似的是,Swift拥有一个称之为"内置电池"的思想体系,你拥有所有类型的中间件做着不同的事情,使得Swift更可靠地替代S3。

最后一个Swift的优势是它已被证实能在超大规模生产中、在大量不同的公共的云中运行并且运行非常得良好。

另一方面,ceph实现对象存储的方式是通过它的radosgateway(对象网关)而与API无关,ceph拥有健壮的仿真S3的API,它没有全规模的PythonWSGI系统那样强大并且不支持模块化。将它作为网关的问题是必须始终模拟或者遵循Swift的API,但是它的核心API是定义良好的,稳定的并且向后兼容的,当然这不包括所有和Swift一起装配的中间件

使用场景

如何你只能选择其中一种,并且你有块存储需求,你肯定会选择使用ceph。如果你只是对象存储这样的使用场景,那么我建议你使用使用Swift。

话说回来,如果你是两者都想使用的那种应用场景,不过一些开发团队不太希望在不同的系统上管理两个不同的集群。如果你想在一些简单的应用场景使用S3
API或者Swift API,Rdosgw(Rados gateway
对象网关)能是一个非常不错的选择,但是这并不能为你提供一个功能完备的对象存储系统。另外一点值得考虑的是通过radosgw存储的对象无法从块存储系统获取,因为他们有着不同使用方式,他们将在不同的硬件上存放(通过ceph的智能模块化放置技术).

到了最后,用户希望有选择的余地,同时,感谢RedHatGlusterteam(红帽主存储团队),Swift现在拥有了一个多后端系统,在那里你可以拥有一个不同的、高效支持ceph作为对象存储服务器的存储后端系统。

目前我们还没有完全做到这一点(swift多后端系统嵌入ceph),Swift和Ceph的开发者们曾经一起讨论尝试找出如何嵌入,但是,最后,这将为终端用户提供最小管理的选择。

总结

不要再认为Swift和Ceph是对手了。这两者都是优秀的、各有特定任务的开源项目。主要竞争是专有软件解决方案导致厂商锁定,Swift和Ceph强大的社区和大家热烈的讨论都是都是解决大多数挑战很好的解决方案。

感谢Swiftstack、Rackspace和Inktank上的朋友们(还有我的同事们)查阅我的这次发帖。

Ceph和Swift的比较-为什么他们没有撕逼相关推荐

  1. Openstack 对象存储服务之争:Ceph或者Swift

    背景 Ceph现在已经是Openstack官方主要支持的存储后端,而最新的Ceph不仅可以提供快服务,文件服务,而且还可以提供对象存储.Openstack Swift也提供对象存储服务,那这两者到底是 ...

  2. 【Java】Ceph对Swift的支持及Java…

    Java.Rust 技术交流群: 783303214 Ceph对Swift的支持 和Ceph一样,(No Taylor)Swift也是优秀的分布式的对象存储系统,OpenStack开发Swift的攻城 ...

  3. ceph存储原理_【理论研究】漫谈传统IT基础设施10-存储(04)

    01-按照存储类型分类 01.独享式存储 指由单台存储设备提供服务,且相同的一块存储区域同一时间只能被单台设备访问(读写). 如DAS,块存储,SAN网络下的存储,具体产品包括磁盘阵列,硬盘. 此种存 ...

  4. [转]“Ceph浅析”系列之(二)—Ceph的设计思想

    转载自:http://yizhaolingyan.net/?p=11 分析开源项目,时常遇到的一个问题就是资料不足.有时间写代码的大牛们通常是都是没有时间或者根本不屑于写文档的.而不多的文档通常又是使 ...

  5. 如何学习开源项目及Ceph的浅析

    摘要:开源技术的学习和采用确实存在着一定门槛,然而学习各种开源项目已经成为许多开发者不可回避的工作内容.那么,对于类似OpenStack的大型开源项目,开发者该如何着手,这里我们看章宇的分享. [编者 ...

  6. 分布式开源存储架构Ceph概述

    文章目录 概述 什么是ceph? ceph的架构 Ceph OSD Ceph Monitor OSD Map PG Map CRUSH算法 Ceph的文件存储 Ceph的MDS ceph的不足 Cep ...

  7. 【ceph】什么是Ceph?------(MinIO和ceph的区别|GFS(GlusterFS)、MFS、Ceph、Lustre|文档)...

    目录 什么是Ceph? 简介 什么是块存储.文件存储和对象存储以及区别? Ceph存储架构 Ceph数据的存储 Ceph开发如何入门 部署实例 MinIO和ceph ceph和GFS(GlusterF ...

  8. 【ceph】什么是Ceph?------(MinIO和ceph的区别|GFS(GlusterFS)、MFS、Ceph、Lustre|文档)

    目录 什么是Ceph? 简介 什么是块存储.文件存储和对象存储以及区别? Ceph存储架构 Ceph数据的存储 Ceph开发如何入门 部署实例 MinIO和ceph ceph和GFS(GlusterF ...

  9. 使用kolla-ansible部署多节点OpenStack(T版)及对接Ceph

    推荐感兴趣的小伙伴先阅读官方文档 近期使用kolla-ansible部署一套OpenStack多节点测试环境,用于测试计算节点宕机撤离的生产场景. 虽然官方文档写的非常详细,但是整个部署过程也多多少少 ...

最新文章

  1. 艾伟也谈项目管理,如何做一个合格的项目经理
  2. C语言进行离散傅里叶DFT变换~MATLAB验证
  3. java 教程 嵌入式,嵌入式狗的 JAVA 入门笔记·1
  4. Swift--基本数据类型(二)
  5. https://blog.csdn.net/cscscscsc/article/details/50
  6. mciSendString 多线程播放多首音乐 注意事项
  7. python 教学_「Python基础」一次就装好Python手把手装到好
  8. python去重复功能_python包中的statmodels,如何处理完全重复的功能?
  9. HCIE Security DS V-P-N 备考笔记(幕布)
  10. 一文详解双目立体匹配算法:ELAS
  11. 随机过采样与随机欠采样 代码
  12. correl函数相关系数大小意义_EXCEL中的相关系数能说明什么?
  13. uiautomator2遍历子元素
  14. JDK8 ThreadLocal 源码解析与最佳实践
  15. 很迷的SG??Berzerk - 787C
  16. Linux下的动态库和静态库
  17. 区块链vs.DAG, 区别到底是什么? 一文读懂烧脑的数据结构之争
  18. 爬虫学习5——requests进阶(cookie登录、防盗链、
  19. ushort java_Java UShort类代码示例
  20. 网页解析之Jsoup

热门文章

  1. nvme分区选mbr还是guid_福建【美能MBR膜】品牌排行
  2. 单链表的头插法与尾插法代码实现及详解
  3. Apache ShardingSphere 如何实现分布式事务
  4. go-client对接k8s
  5. 三维重建(SFM):针对360全景切割图像的单目重建的增量问题的分析与改进(colmap)
  6. Matlab基本函数-exp函数
  7. 《leetcode-go》收集雨水
  8. 【体验】使用机智云和ESP8266-12做一个无线定时电灯
  9. 将PDF文件转换为JPG格式图片的3种简单方法
  10. TGA格式文件转化为YUV文件