从 ac 文件每秒记录 3k 个事件的最佳选择是什么?以下是我想到的选项。无法决定哪个是具有更少故障点、更高可靠性和更少延迟的稳健解决方案。
使用消息服务器在事件发生时中继事件
使用 syslog 进行日志记录
使用 Unix 管道
使用像 fluent 这样的日志代理,它将事件发送到分析服务器
在本地写入日志文件,然后定期轮换使用 rsync 将其轮换到分析服务器
试试系统日志。没有理由让它太复杂。使用 syslog-ng,您可以通过 UDP 进行本地日志记录,然后设置本地 syslogd 以通过 TCP 将所有内容转发到中央 syslog 服务器。您可能需要在没有 fsync 的情况下在中央 syslog 服务器上运行以跟上该负载(但首先进行测试),但这可以通过将所有内容转发到两台单独的机器来缓解。这为您提供了本地异步性能和足够的可靠性,您几乎不会丢失事件。
我所做的另一个选择是将事件记录到 Redis、Riak 或其他一些 nosql 数据存储中(我通常不推荐将它们用于任何复杂的事情,但事件记录就在他们的小巷里)。为冗余设置镜像,它们应该能够保持每秒超过 3k 的事件。