【发布时间】:2015-03-26 14:16:55
【问题描述】:
我在网络分析方面遇到技术问题。
Netflow 流由 PMACCT 收集,并将此流发送到 rabbitMQ 进行分析。 分析将由 python 脚本完成,添加一些字段,如 dns ptr 和其他网络信息。
我使用 pika 编写了一个自定义消费者脚本,但性能很差。我曾尝试使用 python-multiprocessing 来提高性能,但 Celery 的性能会更好(我猜)。
你知道我是否可以使用 Celery 来使用这些数据(由 PMACCT 发送和序列化)?数据格式是带字段的简单 JSON 对象(格式与 Celery 任务格式不匹配)。其他图书馆可以帮助我吗?
最终目标是在多台服务器上对流分析进行负载平衡(数 GB 的流)。
【问题讨论】:
-
Celery 应该没问题,但如果你需要性能,你应该考虑使用 librabbitmq 和 Celery (github.com/celery/librabbitmq)。其他选择是使用线程安全库,例如我自己的 amqp-storm github.com/eandersson/amqp-storm/blob/master/examples/…
-
好的@eandersson。 amqp-storm 正是我想要的。我可以将 librabbitmq 与 amqp-storm 一起使用吗?
-
不,它们都是 AMQP 库。 AMQP-Storm 不如 librabbitmq 快,但使用 AMQP-Storm 更容易,因为它是线程安全的,而 librabbitmq 则不是。
-
嗯,好吧。我正在尝试使用 AMQP-Storm。让我检查一下。仅供参考,这是什么意思:channel.basic.qos(int)?
-
这是 RabbitMQ 预取的设置。如果您在一个队列上有多个消费者,我建议您保持较低的价值,例如100.rabbitmq.com/consumer-prefetch.html
标签: python json celery amqp pika