将 Kafka Publisher 集成到 Ceilometer Publisher¶
https://blueprints.launchpad.net/ceilometer/+spec/kafka-publisher
Apache Kafka 是一种消息代理,它能够以低延迟和高吞吐量将实时计量数据发布到 OpenStack 项目之外的应用程序。
问题描述¶
Ceilometer 通过现有服务发送的通知或通过轮询基础设施来监控和收集 OpenStack 的数据。这些实时收集的数据具有用于各种分析的巨大潜力。 许多外部项目可以分析、序列化和可视化这些计量数据,例如 Storm、Elastic Search、Mahout、Jubatus 等。在 OpenStack 中,oslo.messaging 库提供了良好的通信路径,但是这些通信路径对于 OpenStack 项目外部来说不够通用。因此,这个蓝图试图使用 Kafka 分布式消息系统将 ceilometer 计量数据发布到这些外部项目,并充分发挥 ceilometer 计量数据的潜力。
提议的变更¶
为了降低独立实现 Kafka Publisher 的成本,Ceilometer 必须提供 Kafka Publisher 作为发布者插件。 这可以自动发布计量数据,并且开发人员只需要在 pipeline.yaml 文件中配置 Kafka Publisher 插件,例如
publisher:
- kafka://<broker_ip>?topic=<topic_name>
这样,任何尝试通过 Kafka 消费 Ceilometer 流式指标的应用程序,都可以直接消费 Ceilometer 的样本。 例如,像 monasca 这样的项目 - https://github.com/stackforge/monasca-thresh 可以消费由 Ceilometer Kafka Publisher 发布的数据。
替代方案¶
在 OpenStack 内部,模块之间的通信是通过 oslo.messaging 实现的,但是 oslo.messaging 的实际使用主要针对 OpenStack 项目,而 Kafka 支持更通用的用法。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
Kafka 目前的安全性支持为零。 客户端身份验证和连接加密正在实施中。 更多信息请参考参考文献。
Pipeline 影响¶
提供新的选项来指定 Kafka Publisher 作为 Ceilometer Publisher
其他最终用户影响¶
无
性能/可扩展性影响¶
关于 Kafka 的论文指出,在消息大小为 200 字节且消息逐个发送的条件下,生产者可以发布大约 50,000 条消息/秒。 然而,这个数字会受到消息大小、复制数量、批处理大小(Kafka 可以一起发送多条消息)和环境等参数的影响。 大致来说,RabbitMQ 可以发布大约 10,000 条消息/秒,这意味着这个 Kafka Publisher 可能不会成为性能的瓶颈。
其他部署影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
<kshimamu>
- 其他贡献者
<yudupi>
- 持续维护者
<kshimamu>
工作项¶
将 Kafka Publisher 添加为 Ceilometer Publisher
未来生命周期¶
无
依赖项¶
Kafka python 包
测试¶
无
文档影响¶
无
参考资料¶
Apache Kafka 项目
Kafka:用于日志处理的分布式消息系统
Kafka 安全性
KAFKA 0.8 PRODUCER PERFORMANCE
Kafka 性能
RabbitMQ 性能基准测试