向具有相同响应时间的用户显示实时数据

时间:2016-07-29 16:29:39

标签: php mysql ajax nginx amazon-rds-aurora

我对显示实时数据的速度和延迟表示怀疑。

让我们假设我想通过简单的集合查询,通过每秒通过一次从MySql表获取数据的ajax请求向用户显示读取时间数据。

目前,这两个选项在我的脑海里浮现

  1. MySql / Amazon Aurora
  2. 文件系统
  3. 这些选项会更好吗?还是其他任何解决方案?

    正如我实际检查的那样,如果我们在浏览器中打开一个页面,那么ajax请求会使用500ms堆栈以低于PHP, MySql, Nginx的速度给出响应。

    但是,如果我们打开更多网页,那么相同的ajax请求会为每位访问者提供超过1 second的响应,该响应应小于500ms

    因此,在这种情况下,如果访问者增加,则ajax请求会给出非常差的响应。

    我还检查了Node.js+MySql但结果相同。

    为记录创建json文件并从文件中获取数据是否合适?还是其他任何解决方案?

1 个答案:

答案 0 :(得分:0)

实际上,您必须使用数据库来存储实际数据,但您可以轻松添加内存缓存(可能是内部字典或单独的组件)来跟踪实际更新。

比典型的ajax请求看起来像:

  1. Memcache,对于用户123,我们有什么新内容吗?

  2. 上次更新时间是10分钟前

  3. 啊哈,所以没什么新东西,让我们返回null;

  4. 写数据时:

    1. 将数据放入数据库

    2. 更新memcache

    3. 中客户端的上次更新时间

      实际密钥可能不同 - 例如聊天室ID。想法是仅在实际发生更新时才读取数据库。

      等级2:

      您将通过大量呼叫为您烧录网络服务器以及客户端互联网。你可以做点什么:

      DateTime start = DateTime.Now;
      while(Now.Subtract(30 seconds) < start)
      {
         if (hasUpdates) return updates;
         sleep(100);
      }
      

      客户端每30秒呼叫一次服务器1次。 当服务器注意到新数据时,客户端将立即得到响应。

相关问题