java - 存储分析信标的最有效方法是什么?

标签 java php c++ architecture google-analytics

类似于 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/

相关文章:

java - Jbutton监听器没有被触发,为什么?

java - 如何设置BoundingRectangle位置

php - 修正 uploader 上传错误

php - 如何在 WooCommerce 评论表单上添加 "Review title"字段?

php - 如何以 PHP 形式实现 Google Recaptcha v3?

c++ - 使用 WinApi 获取与 "Advanced display settings"面板中相同的显示名称

c++ - 具有不同模板参数的相同类不能访问彼此的私有(private)字段

java - 如何获得具有焦点的 ViewPager 以将dispatchKeyEvent() 传递给其 subview ?

java - Android中的 "Top-level destination"是什么?

c++ - Visual Studio 2008(或更高版本)使用哪种 C++?