我遇到网络分析的技术问题。
Netflow流量由PMACCT收集并将此流量发送到rabbitMQ进行分析。 分析将通过python脚本完成,添加一些字段,如dns ptr和其他网络信息。
我用pika编写了一个自定义的消费者脚本,但我的表现不佳。我曾尝试使用python-multiprocessing来提高性能,但Celery的性能会更高(我猜)。
您知道我是否可以使用Celery来使用这些数据(由PMACCT发送和序列化)?数据格式是一个带字段的简单JSON对象(格式与Celery任务格式不匹配)。其他图书馆可以帮助我吗?
最终目标是在多个服务器(流量为几千兆字节)上对流量分析进行负载均衡。
答案 0 :(得分:1)
我发布此评论作为评论,但我认为我会将其编译为答案。
Celery应该可以处理json数据。
至于性能我假设您正在使用Pika BlockingConnection模块。这是一个非常慢的实现,是crippled with bugs。如果您希望将性能更改为AMQP库的C实现,例如librabbitmq应该可以大幅加快速度,librabbitmq的一个优点是它可以与Celery一起使用。
librabbitmq的缺点是它不是线程安全的。有一些线程安全的替代品可用;比如我自己的AMQP-Storm,或来自pika维护者的Rabbitpy。