介绍一种实时更新网页的方案

传统模式

传统模式下网页对数据库的读写类似于下面这种:
《介绍一种实时更新网页的方案》

  1. 张三通过浏览器访问web服务器,修改数据;

  2. web服务器把新数据写入数据库;

  3. 李四并不知道数据库是否有变化,他必须刷新浏览器页面,浏览器访问服务器;

  4. 服务器再次访问数据库;

  5. 数据库把新的结果返回给服务器;

  6. 服务器返回新页面给李四。

meteor模式

meteor提供了一种新的思路:
《介绍一种实时更新网页的方案》

  1. 张三通过浏览器访问web服务器;

  2. web服务器把新数据写入数据库;

  3. 数据库通知web服务器有新数据产生;

  4. web服务器通知浏览器有新数据,浏览器自动变化页面,李四就看到结果了。

meteor原理

在后面一张图中,第4步的动作比较好理解,就是通过在web服务器和浏览器之间建立一条websocket通道,就能实现服务器和浏览器之间的双向通讯。

奇怪的是第3步,数据库是怎么通知web服务器有数据变化的呢?

当你在安装meteor-mysql插件后,再次启动meteor时,它会不停地告诫你:你需要开启mysqlbin_log。mysql的bin_log是干什么用的呢?几乎所有资料都会谈到什么主从架构。

实际上,meteor在这里只是把自己伪装成是一个mysql的从服务器。大家都知道,数据库的主从服务器是需要数据同步的,也就是说当主mysql服务器的数据发生变更时,它会以bin_log的形式通知从服务器,从服务器只需要检查这个bin_log就知道主服务器发生变更了。

所以,如果你没有开启bin_log的话,meteor也可以知道数据库的变化,只不过是用一种比较笨拙的轮询方式。而如果开启bin_log的话,meteor不再以轮询方式访问数据库,而是等待主服务器向自己推送数据了。

我这里写了一个简单的例子meteor如何连接mysql数据库,感兴趣的可以尝试一下。

关于如何安装和使用meteor,他们的官方网站有较详细的教程,跟着教程一步一步走下来,很快就能理解。

    原文作者:张京
    原文地址: https://segmentfault.com/a/1190000007041919
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞