我有一个设置,其中有多个 Apache / PHP 服务器从请求中收集数据 - 主要是获取参数并对其进行处理并将其保存到数据库或平面文件中。数据库很好,因为每个人都可以独立连接并进行更新,但对于平面文件,我使用自定义队列将所有数据发送到平面文件所在的一台服务器。我的问题是:
有没有好的、可靠的日志文件处理系统可供我使用。我基本上需要汇总日志文件中的数据,并在进行一些后期处理后将其保存到数据库中。如果可能的话,我可以简单地使用 nginx 来记录所有请求(access.log)并运行后端守护程序来处理日志。我每秒收到大约 1000 多个请求,所以我肯定需要一个非常强大的系统
是否有任何兼容 PHP 且可在多台计算机之间共享的良好队列系统。主要通过 memcache 实现的解决方案,其中所有信息都可以从任何节点添加,并且可以在任何节点以极高的速度访问。我需要一个可以每秒从队列中获取大量数据、对其进行处理并执行必要操作(保存在数据库中)的系统。我认为在单个服务器上拥有队列的可扩展性不强,因为我需要做的是在保存数据之前进行一定程度的聚合。由于数据可以来自任何 PHP 服务器(采用循环方法),我在 MySQL 中进行处理(因此使用复杂的查询),如果我可以在一台服务器上收集所有数据并让它进行一些处理并保存在数据库中,这将简化我的工作
谢谢 Sparsh
答案1
您真的建议将访问日志用作异步消息处理系统的数据基础吗?如果是这样 - 请不要这样做。它不是事务安全的,不适用于并发访问。
我已读过你的问题几次,但不清楚你想在哪里处理什么以及为什么。
有没有兼容 PHP 并且可在多台机器之间共享的良好队列系统?
好的 - 这是一个正确的问题。很久以前,我使用的一个解决方案是使用 BSD LPD 系统来管理作业队列 - 但如果我现在要实现一个解决方案,那么我会考虑rabbitmq,beanstalkd,山姆...