我在网络分析方面有一个技术问题。
PMACCT收集Netflow流,并将这些流发送到rabbitMQ进行分析。分析将由python脚本完成,添加一些字段,如dns、ptr和其他网络信息。
我已经使用pika编写了一个自定义的消费者脚本,但是我的性能很差。我曾尝试使用python-multiprocessing来提高性能,但Celery的性能会更好(我猜)。
您知道我是否可以使用Celery来使用此数据(由PMACCT发送并序列化)?数据格式是带有字段的简单JSON对象(格式与芹菜任务格式不匹配)。其他的librairy能帮到我吗?
最终目标是在多个服务器上对流分析进行负载平衡(许多to的流)。
发布于 2015-03-31 21:47:34
我把这篇文章作为评论贴了出来,但我想我会把它编译成一个答案。
Celery应该可以很好地处理json数据。
至于性能,我假设您使用的是Pika BlockingConnection模块。这是一个非常慢的实现,而且是crippled with bugs。如果您希望将性能更改为AMQP库的C实现,例如,librabbitmq应该会大大提高速度,而librabbitmq的一个优势是它可以与Celery一起使用。
librabbitmq的缺点是它不是线程安全的。有一些线程安全的替代方案可用;比如我自己的AMQP-Storm,或者pika的维护者提供的Rabbitpy。
https://stackoverflow.com/questions/29280797
复制相似问题