OpenStack Swift

.. image:: https://governance.openstack.org/tc/badges/swift.svg :target: https://governance.openstack.org/tc/reference/tags/index.html

.. 从这一点开始改变事情

OpenStack Swift是一个分布式对象存储系统,旨在从单一机器扩展到数千台服务器。Swift针对多租户和高并发进行了优化。Swift非常适合备份、Web和移动内容,以及任何其他无限制增长的非结构化数据。

Swift提供了一个简单的、基于REST的API,完整文档请访问 https://docs.openstack.org/swift/latest/。

Swift最初是作为Rackspace Cloud Files的基础开发的,并于2010年作为OpenStack项目的一部分开源。自那以后,它已经发展成为包括许多公司的贡献,并催生了一个繁荣的第三方工具生态系统。Swift的贡献者名单列在AUTHORS文件中。

文档

要构建文档,请运行:

pip install -r requirements.txt -r doc/requirements.txt
sphinx-build -W -b html doc/source doc/build/html

然后浏览至doc/build/html/index.html。这些文档在每次提交后自动生成,并可在 https://docs.openstack.org/swift/latest/ 在线获取。

开发者

入门


Swift是OpenStack的一部分,遵循所有OpenStack项目通用的代码贡献、审查和测试流程。

如果你想开始贡献,请查看这些 `笔记 <CONTRIBUTING.rst>`__ 以帮助你开始。

最好从 `"SAIO - Swift All In One" <https://docs.openstack.org/swift/latest/development_saio.html>`__ 开始。这份文档将指导你在VM中设置Swift的开发集群。SAIO环境非常适合对Swift进行小规模测试以及尝试新功能和修复bug。

测试
~~~~~

Swift的源代码树中包括三种类型的测试。

#. 单元测试
#. 功能测试
#. 探测测试

单元测试检查代码的一小部分是否正常工作。例如,单元测试可能会测试一个单一的函数,以确保不同的输入给出预期的输出。这验证了代码的正确性,并且没有引入回归。

功能测试检查客户端API是否按预期工作。这些可以针对任何声称支持Swift API的端点运行(尽管一些测试需要具有不同权限级别的多个账户)。这些是“黑盒”测试,确保针对Swift编写的客户端应用程序将继续工作。

探测测试是“白盒”测试,验证Swift集群的内部工作。它们是针对 `"SAIO - Swift All In One" <https://docs.openstack.org/swift/latest/development_saio.html>`__ 开发环境编写的。例如,探测测试可能会创建一个对象,删除一个副本,并确保后台一致性进程发现并纠正错误。

你可以使用 ``.unittests`` 运行单元测试,使用 ``.functests`` 运行功能测试,使用 ``.probetests`` 运行探测测试。还有一个额外的 ``.alltests`` 脚本包装其他三个。

要完全运行测试,目标环境必须使用支持大型xattrs的文件系统。强烈推荐使用XFS。对于单元测试和进程内功能测试,要么将 ``/tmp`` 挂载为XFS,要么通过 ``TMPDIR`` 环境变量提供另一个XFS文件系统。如果没有这个设置,测试应该仍然通过,但是会跳过很多。

代码组织
  • doc/: 文档
  • etc/: 样本配置文件
  • examples/: 在文档中使用的配置片段
  • swift/: 核心代码

    • account/: 账户服务器
    • cli/: 支持一些CLI工具的代码
    • common/: 不同模块共享的代码

      • middleware/: “标准”的、官方支持的中间件
      • ring/: 实现Swift环的代码
    • container/: 容器服务器
    • locale/: 国际化(翻译)数据
    • obj/: 对象服务器
    • proxy/: 代理服务器
  • test/: 单元测试、功能测试和探测测试

数据流 ~~~~~~~~~

Swift是一个WSGI应用程序,使用eventlet的WSGI服务器。进程运行后,新请求的入口点是 swift/proxy/server.py 中的 Application 类。从那里,选择一个控制器,处理请求。代理可能会选择将请求转发到后端服务器。例如,对象服务器请求的入口点是 swift/obj/server.py 中的 ObjectController 类。

部署者

部署者文档也可在 https://docs.openstack.org/swift/latest/ 查阅。一个很好的起点是 https://docs.openstack.org/swift/latest/deployment_guide.html。有一个 运维手册 <https://docs.openstack.org/swift/latest/ops_runbook/index.html>__,提供了如何在运行Swift集群时诊断和解决常见问题的信息。

你可以使用 .functests 对Swift集群运行功能测试。这些功能测试需要 /etc/swift/test.conf 才能运行。这个源代码树中的样本配置文件可以在 test/sample.conf 中找到。

客户端应用

对于客户端应用程序,官方提供了Python语言绑定,在 https://opendev.org/openstack/python-swiftclient。

完整的API文档在 https://docs.openstack.org/api-ref/object-store/。

有一个庞大的应用程序和库的生态系统支持并与OpenStack Swift合作。一些列在 相关项目 <https://docs.openstack.org/swift/latest/associated_projects.html>__ 页面上。


更多信息,请来OFTC的#openstack-swift频道交流。

谢谢,

Swift开发团队

参考资料

https://github.com/openstack/swift