Zaqar
目录
项目
Zaqar
| 官方名称 | OpenStack 消息服务 |
| 源代码 | https://github.com/openstack/zaqar |
| Bug 追踪器 | https://bugs.launchpad.net/zaqar |
| 功能跟踪 | https://blueprints.launchpad.net/zaqar |
| 贡献者文档 | https://docs.openstack.org/developer/zaqar/ |
Python Zaqar Client
| 源代码 | https://github.com/openstack/python-zaqarclient |
| Bug 追踪器 | https://bugs.launchpad.net/python-zaqarclient |
| 功能跟踪 | https://blueprints.launchpad.net/python-zaqarclient |
概述
Zaqar 是一个为 Web 和移动开发者提供的多租户云消息服务。它结合了亚马逊 SQS 产品所开创的理念,并增加了额外的语义来支持事件广播。
该服务具有完全 RESTful 的 API,开发者可以使用它通过各种通信模式在他们的 SaaS 和移动应用程序的各个组件之间发送消息。在这个 API 背后是一个高效的消息引擎,在设计时就考虑了可扩展性和安全性。
其他 OpenStack 组件可以与 Zaqar 集成,以便将事件呈现给最终用户,并与在“云上层”中运行的客户代理进行通信。云运营商可以利用 Zaqar 为他们的客户提供 SQS 和 SNS 的等效服务。
主要特性
Zaqar 提供了以下主要特性
- 两种通信传输方式的选择。两者都支持 Keystone
- 防火墙友好型、基于 HTTP 的 RESTful API
- 当今的许多开发者更喜欢更 Web 友好的 HTTP API。他们重视该协议的简单性和透明性、其防火墙友好性以及其庞大的工具、负载均衡器和代理生态系统。此外,云运营商也欣赏 REST 架构风格的可扩展性方面。
- 基于 WebSocket 的 API,用于持久连接。
- WebSocket 协议通过持久连接提供通信。与每次请求/响应对都需要打开新连接的 HTTP 不同,WebSocket 可以在单个 TCP 连接上传输多个请求/响应。它可以节省大量的网络流量并最大限度地减少延迟。
- 防火墙友好型、基于 HTTP 的 RESTful API
- 基于 Keystone 项目 ID 的多租户队列
- 支持几种常见的模式,包括事件广播、任务分发和点对点消息传递(参见 Zaqar 用例)
- 基于组件的架构,支持自定义后端和消息过滤器
- 高效的参考实现,注重低延迟和高吞吐量(取决于后端)
- 高可用性和水平可扩展性(参见 服务器架构)
- 支持队列订阅。有几种通知类型可用
- 电子邮件通知
- Webhook 通知
- WebSocket 通知
项目范围
Zaqar API 是面向数据的。也就是说,它不配置消息代理并直接将其暴露给客户端。相反,API 充当客户端和一个或多个后端之间的桥梁。消息代理的配置服务——尽管很有用——服务于与 Zaqar 今天所针对的市场略有不同的市场。考虑到这一点,如果用户对代理配置服务感兴趣,社区应该考虑启动一个新项目来解决这一需求。
设计原则
Zaqar 与所有 OpenStack 项目一样,都以以下准则为设计基础
- 基于组件的架构。 快速添加新行为
- 高可用性和可扩展性。 扩展到非常重要的工作负载
- 容错性。 隔离的进程避免级联故障
- 可恢复性。 故障应该易于诊断、调试和纠正
- 开放标准。 成为社区驱动的参考实现
状态
Zaqar 已经为小型和中型工作负载做好生产准备。该项目在 Rackspace 和其他公司中处于生产状态,并且其他公司正在将其部署到自己的云中。Python 中 v2 API 的支持在 python-zaqarclient 中可用,并且通过 Rackspace 支持的 SDK 提供其他语言的支持。
文档
目前(在 Mitaka 发布周期内),Zaqar 团队正在重做 Zaqar 文档。
Zaqar 配置参考
Zaqar 贡献者指南
Zaqar RESTful API 规范
其他文档
“入门指南”、“Zaqar RESTful API v1.0 指南和参考”目前未托管在任何地方,但您可以从 Zaqar 源代码仓库生成这些文档。操作方法如下:
- 确保您的系统上安装了 maven 和 git 程序。
- 通过执行 git clone https://github.com/openstack/zaqar.git 在您机器上首选的目录中克隆 Zaqar 仓库
- 在克隆的仓库内的 doc/user-guide 目录中执行 mvn clean generate-sources 以从源代码生成文档 html 文件。
- 您可以通过在浏览器中打开生成的 html 文件来查看文档
- 入门指南:doc/user-guide/zaqar-get-started/target/docbkx/webhelp/zaqar-get-started/index.html
- Zaqar 配置参考:doc/user-guide/zaqar-config-ref/target/docbkx/webhelp/zaqar-config-ref/index.html
- Zaqar API v1.0 指南和参考:doc/user-guide/zaqar-api-ref/target/docbkx/webhelp/zaqar-api-ref/index.html
资源
Zaqar 团队在 Freenode 的 #openstack-zaqar 中闲聊。随时过来与我们聊天;团队很高兴听到您的想法和解答问题。如果您遇到错误,请使用我们的 问题跟踪器 报告它。
常见问题解答
发布
演讲
- Alejandro Cabrera。Rackspace Atlanta。介绍 Openstack Marconi。2013 年 7 月 17 日。YouTube Speaker Deck
- Flavio Percoco。EuroPython 2013。Marconi:Openstack 的队列和通知服务。2013 年 7 月 2 日。YouTube
- Kurt Griffiths,Allan Metts。Openstack Summit 2013 年 4 月。项目概述:OpenStack 队列和通知服务(“Marconi”)。2013 年 4 月。YouTube
- Kurt Griffiths,Flavio Percoco,Allan Metts。Openstack Summit 2013 年 11 月。Openstack 队列和通知服务。2013 年 11 月。YouTube
- Yeela Kaplan。EuroPython 2014。OpenStack 队列和通知服务(“Marconi”)。2014 年 7 月 22 日。YouTube
文章
- Oz Akan。Rackspace Devops Blog。2013 年 7 月 25 日。Openstack Zaqar API v1.0。
- Flavio Percoco。Developer's Black Hole。2014 年 3 月。人们不喜欢排队。
社区
贡献者信息
注意:如果您找不到所需的信息,请通过 IRC(#openstack-zaqar)与我们联系,我们很乐意为您提供帮助。