应用程序将日志从许多计算机发送到Amazon Cloud并将其存储在某个数据库中。
> Lets assume: one machine log size: 1kB every 10 seconds, num of machines from
1000 to 5000
我的第一种方法是将日志排入rabbitmq,然后rabbitmq consumer将它们存储在sql数据库中。
第二种方法是将日志排入rabbitmq,但将它们存储在mongodb中
答案 0 :(得分:4)
由于您已经有多个生产者系统创建日志,因此您已经拥有了分布式体系结构。
解决实用程序/交叉问题,例如从每个系统进行日志记录,而不是使用队列,有很多好处:
答案 1 :(得分:1)
正如StuartLC所说,你需要缓冲,你需要decouples the availability of the producing system from the logging service
。
这是针对RabbitMQ的缺点:
您没有定义“log”下的内容。在您说明1kB every 10 seconds
时,它似乎是指标。如果我错了,请纠正我。
关于日志处理,我倾向于使用专用于日志处理的堆栈来支持本地缓冲:syslog,flume,logstash ...由具有高吞吐量的数据存储区支持。 MongoDB应该满足需求,我对RDBMS有点怀疑。
您可以使用本地RabbitMQ和federated queues实现本地缓冲。