带卡珊德拉和皮多斯的对象存储

在一个有如此多的人想要改变世界的行业中,可以公平地说,低成本对象存储已经做到了这一点。 建立一个需要灵活、低延迟存储的企业现在以一种我们以前无法想象的方式变得负担得起。

在构建Exoscale公共云产品时,我们知道受瑞士隐私法保护的简单对象存储服务至关重要。 在查看了现有的对象存储软件项目后,我们决定构建自己的解决方案:Pithos。

Pithos是Apache Cassandra(列数据库)的开源S3兼容层。 换句话说,它允许你使用标准的S3工具在你自己的卡珊德拉集群中存储对象。 如果这是你第一次看到对象存储软件,那么你可能会想为什么皮多斯是建立在NoSQL数据库之上的,但这并不奇怪。

对象存储当然是一个存储和检索数据的问题。 如果你做得对,那么这是一个大规模存储和检索数据的问题:许多并发连接和总数据量的无限潜力。

这些问题卡珊德拉大体上已经解决了。 它可以水平扩展,因此当数据量增加和并发连接数增加时,添加更多节点是一个相对简单的解决方案。

在卡珊德拉集群中,每个节点都是平等的:没有主人。 相反,每个节点拥有一部分散列空间,并且通过对其行关键字执行散列来找到各个数据片段的位置。 如果这对你来说是新的,把卡珊德拉集群想象成一条街道,每个节点都是一个公寓街区。 单排钥匙是街区内的公寓。 没有必要在街道的尽头有人告诉你在哪里可以找到每套公寓。

这意味着没有单一的失败点,它允许卡珊德拉对它存储的每样东西制作多个活动拷贝。 这对于维护要存储的对象的可用性是理想的。

可用性的另一面是最终的一致性。 即使在出现某种故障的情况下,保持数据可供读取和写入,也意味着各种拷贝可能会不同步。

因此,当卡珊德拉保存你写给皮多斯的每个对象的三个副本时,这些副本就有可能发生分歧。 在实践中,导致有问题的分歧的情况在健康的集群中是罕见的。 最有可能的分歧是这样的:

  • 演员1给皮多斯写了一个新版本的对象。
  • 皮多斯把它保存到卡珊德拉节点a
  • 参与者2从皮多斯请求相同的对象,皮多斯又从卡珊德拉节点B读取该对象
  • 卡珊德拉将新版本从节点A复制到节点B和c

在这种情况下,在新版本有机会从节点A复制到节点b之前,Actor 数据库增量同步 2读取稍旧的对象版本

但没关系。 最终的一致性融入了S3的做事方式。 只有一个操作需要原子性:改变桶的所有权,Pithos以一种非常一致的方式处理这些操作。 对于读取,S3协议允许服务对象的旧版本的可能性,但是比较校验和以避免服务陈旧数据。

Pithos本身是用Clojure编写的,因此在JVM上与Cassandra一起运行。 这是一个Apache 2许可项目,代码可在GitHub上获得。

它实际上是一个相对较小的守护进程,让卡珊德拉继续做大部分工作。 那么,皮多斯本身是做什么的?

皮多斯有三个主要功能:

  • 提供S3应用编程接口兼容的端点
  • 将对象分成8 kB的块,然后将它们和附带的元数据写入卡珊德拉
  • 从卡珊德拉检索一个对象的块,并将它们作为整个对象返回。

因此,当您使用Pithos存储文件时,会发生以下情况:

  1. Pithos验证您的凭据以访问群集、目标存储桶和对象。
  2. 然后它把你的对象分成8 kB的块。
  3. 它将数据块写入卡桑德拉,并维护它们在元数据中的位置图。

带卡珊德拉和皮多斯的对象存储

让我们看看皮多斯的建筑。

皮多斯有四个主要组成部分:

  • **库: 每个租户的身份验证信息。
  • 七叶树: 每个存储桶的元数据。
  • Metastore: 对象元数据。
  • Blobstore: 组成每个对象的各个块的目录。

虽然**库通常是一个简单的配置文件,但是每个存储都可以是一个独立的卡珊德拉集群,这意味着您的Pithos集群可以大规模扩展。

皮多斯也愿意为这些商店更换后端。 例如,如果您希望**库与更广泛的公司认证服务集成,那么您可以编写一个集成,然后指示Pithos使用它。

自2014年以来,在Exoscale,我们一直使用Pithos运行我们的公共对象存储,存储了许多万亿字节的数据,它已经成为我们许多客户的核心业务。

皮多斯也在世界各地使用,为私人物品商店供电,如果你也在使用它,我们很乐意听到你的声音。 这是在积极发展,我们绝对喜欢接受拉请求!

如果你想了解更多关于Pithos的信息,请查看文档并复制报告。

相关文章:

  • 2022-01-08
  • 2021-11-09
  • 2022-01-31
  • 2021-08-08
  • 2021-12-31
猜你喜欢
  • 2021-10-19
  • 2021-04-01
  • 2022-12-23
  • 2021-12-31
  • 2021-11-12
  • 2021-07-12
  • 2021-11-11
相关资源
相似解决方案