类似于 google analytics 如何从跟踪事件的 javascript 发送信标,收集信标数据并在最快时间内返回给客户端的最有效方法是什么?
例如,如果我有一个服务器到服务器的信标调用,我想在客户端服务器上尽可能快地进行该调用。
PHP 到平面文件? PHP到本地队列? 记录到队列并始终与远程队列保持连接的 Java 服务器? 自定义 C++ 服务器?
这大约是每秒 1000 个请求。
最佳答案
这有两个方面。
1) 客户端的信标调用应该尽快完成。这意味着传入的 HTTP 请求应该响应 200 OK 并尽快退出,因此它可能不应该自己写入实际数据。它应该通过后台 shell 执行或利用队列/作业机制(如 Gearman)将其移交给后台的另一个进程。 .
2) 数据写入本身,如果在远离客户注意力的后台线程中完成,则有更多的时间奢侈。每秒 1000 次写入对于现代硬件调整良好的数据库来说应该没问题,该数据库具有行锁定,不会在同一时刻被过多地选择。不过,对于 key-value store 来说,这可能是一个很好的使用场景。用于即时数据存储。然后一个单独的分析/报告过程可以离线查询键值存储以获取所有存储的数据,对其进行处理,并最终将其复制到数据库中。
关于java - 存储分析信标的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419434/