传统模式
传统模式下网页对数据库的读写类似于下面这种:
张三通过浏览器访问web服务器,修改数据;
web服务器把新数据写入数据库;
李四并不知道数据库是否有变化,他必须刷新浏览器页面,浏览器访问服务器;
服务器再次访问数据库;
数据库把新的结果返回给服务器;
服务器返回新页面给李四。
meteor模式
meteor提供了一种新的思路:
张三通过浏览器访问web服务器;
web服务器把新数据写入数据库;
数据库通知web服务器有新数据产生;
web服务器通知浏览器有新数据,浏览器自动变化页面,李四就看到结果了。
meteor原理
在后面一张图中,第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
数据库,感兴趣的可以尝试一下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。