2010-12-11 99 views
3

类似于google analytics从跟踪事件的javascript发送信标的方式,收集信标数据并以最快的时间返回客户端的最有效方法是什么?什么是存储分析信标的最有效方式?

例如,如果我有服务器到服务器信标调用,我想尽可能快地在客户端服务器上进行该调用。

PHP到平面文件? PHP到本地队列? Java服务器记录到一个队列并一直保持远程队列的连接? 定制C++服务器?

这将是每秒1000个请求的数量级。

回答

1

有2个方面。

1)应尽快完成客户端的信标调用。这意味着传入的HTTP请求应该响应200 OK并尽快退出,所以它可能不应该写入实际的数据。它应该将其交给后台的另一个进程,通过后台shell执行或使用像Gearman这样的队列/作业机制。

2)数据写入本身,如果在后台线程中完成,远离客户的注意力,则有更多的时间奢侈。对于现代硬件调优的数据库,每秒1000次写入数据应该没问题,因为行锁定在同一瞬间没有被过多选择。或许,这对于即时数据存储的key-value store来说可能是一个很好的使用场景。然后,一个单独的分析/报告过程可以查询所有存储数据的离线键值存储,处理它,并最终将其复制到数据库中。

相关问题