构建 OpenStack Swift 到 WebDAV 代理

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

当我第一次开始使用 OpenStack Swift( OpenStack 中的对象存储服务)时,我立即希望能够将其作为驱动器安装在我的系统上。当时我在 HP 公共云 上工作,想挂载一个公共云存储作为本地驱动器。虽然不是 Dropbox 的替代品,但这会让我拥有一个相当大的远程驱动器,而且有很多方法可以使用它。

第一次尝试这样做是在 2012 年初,但并不顺利。我使用了一些现有的开源项目,并尝试插入 swift。在读取小文件和少量文件的地方,当文件变大或您想上传文件时,它会失败。

从那次尝试开始, Matt Butcher 尝试了第二次尝试构建在 SabreDAV 上,这是一个 PHP 库。虽然它能够毫无问题地读写文件,但较大的文件会出现问题。这不是构建通过 WebDAV 挂载服务器的方法,而是构建通过代理到 swift 的传递。问题不在 SabreDAV 或 PHP 中。相反,问题出在 PHP 位于 Web 服务器后面的方式以及 Web 服务器如何将文件传递给 PHP。这是我们探索解决的一个基本技术问题。

第三次尝试要成功得多。 Matt 使用 Node.js 构建 WedDAV 以快速传递代理。传递元素很重要,因为文件不驻留在代理上。相反,信息通过并简单地从 WebDAV 转换为 swift,反之亦然。托管应用程序的服务器不需要大型文件存储来在本地缓存文件。这是通过对 Node.js 中的文件和信息的低级别访问来实现的。

该项目在很多方面都取得了成功,我们希望在 HP 公共云中提供它。不幸的是,由于多种原因,这并没有发生,代码库被搁置了一段时间。现在,该代码已在 GitHub 上以开源许可的形式提供。

因此,如果您有兴趣将 OpenStack Swift 安装为驱动器,或者您想通过 WebDAV 与 swift 交互,请查看 Swift WebDAV 代理

请注意,这是讨论该项目的系列文章中的第一篇。更多细节即将推出。

相关文章