传统模式下网页对数据库的读写相似于下面这种:mysql
张三经过浏览器访问web服务器,修改数据;react
web服务器把新数据写入数据库;git
李四并不知道数据库是否有变化,他必须刷新浏览器页面,浏览器访问服务器;github
服务器再次访问数据库;web
数据库把新的结果返回给服务器;sql
服务器返回新页面给李四。数据库
meteor提供了一种新的思路:浏览器
张三经过浏览器访问web服务器;服务器
web服务器把新数据写入数据库;websocket
数据库通知web服务器有新数据产生;
web服务器通知浏览器有新数据,浏览器自动变化页面,李四就看到结果了。
在后面一张图中,第4步的动做比较好理解,就是经过在web服务器和浏览器之间创建一条websocket
通道,就能实现服务器和浏览器之间的双向通信。
奇怪的是第3步,数据库是怎么通知web服务器有数据变化的呢?
当你在安装meteor-mysql
插件后,再次启动meteor
时,它会不停地告诫你:你须要开启mysql
的bin_log
。mysql的bin_log
是干什么用的呢?几乎全部资料都会谈到什么主从架构。
实际上,meteor
在这里只是把本身假装成是一个mysql
的从服务器。你们都知道,数据库的主从服务器是须要数据同步的,也就是说当主mysql服务器的数据发生变动时,它会以bin_log
的形式通知从服务器,从服务器只须要检查这个bin_log
就知道主服务器发生变动了。
因此,若是你没有开启bin_log
的话,meteor
也能够知道数据库的变化,只不过是用一种比较笨拙的轮询方式。而若是开启bin_log
的话,meteor
再也不以轮询方式访问数据库,而是等待主服务器向本身推送数据了。
我这里写了一个简单的例子,meteor
如何链接mysql
数据库,感兴趣的能够尝试一下。