首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

实现一个简略的服务端推方案

2014-01-14 
实现一个简单的服务端推方案如果要写Nginx共享内存的话,可以这样操作:shell curl -d id123 http://HO

实现一个简单的服务端推方案

如果要写Nginx共享内存的话,可以这样操作:

shell> curl -d "id=123" http://<HOST>/config

如果要读Nginx共享内存的话,可以这样操作:

shell> curl http://<HOST>/config?field=id

注:实际应用时,应该加上权限判断逻辑,比如只有限定的IP地址才能使用此功能。

当数据库有新数据的时候,可以通过触发器来写Nginx共享内存,当然,在应用层通过观察者模式来写Nginx共享内存通常会是一个更优雅的选择。

如此一来,数据库就彻底翻身做主人了,虽然系统仍然存在轮询,但已经从轮询别人变成了轮询自己,效率不可相提并论,相应的,我们可以加快轮询的频率而不会造成太大的压力,从而在根本上提升用户体验。

突然想起另一个有趣的服务端推的做法,不妨在一起唠唠:如果DB使用Redis的话,那么可以利用其提供的BLPOP方 法来实现服务端推,这样的话,连sleep都不用了,不过有一点需要注意的是,一旦使用了BLPOP方法,那么Nginx和Redis之间的连接便会一直 保持下去,从Redis的角度看,Nginx是客户端,而客户端的可用端口数量是有限的,这就意味着一台Nginx至多只能建立六万多个连接 (net.ipv4.ip_local_port_range),有点儿少。

当然,本文的描述只是沧海一粟,还有很多技术可供选择,比如Pub/Sub,WebSocket等等,篇幅所限,这里就不多说了,有兴趣的读者请自己查阅。

This entry was posted in Technical and tagged Lua, Nginx by 老王. Bookmark the permalink.

23 thoughts on “实现一个简单的服务端推方案”

热点排行