Hello!
2013/10/11 尚学金:
> 你好,看了你写的 lua-nginx-module 模块,受益良多,非常喜欢,特别感谢
>
很高兴你能喜欢它 :)
> 最近我们在nginx的使用上遇到了些问题,不知道你能否给些提示?
>
> 我们的项目部署比较简单:客户端<=>Nginx<=>服务端。普通HTTP请求没有任何问题,但是我们需要从后台推送数据到前台。比如客户端请求/ch1这个地址,服务端要不断地把/ch1的数据推送给客户端。我们的推送打算使用的是Server-Sent
> Event来实现,那么推送的连接就是长连接了。这样一旦规模上去了,比如有100,000个客户端,每个客户端都要请求20个不同url的数据,这样服务端就要和客户端建立20×100,000个连接!我们在客户端和Nginx直接使用SPDY协议,解决了客户端到Nginx连接过多的问题。但是Nginx到服务端的连接?于是我们想在Nginx上做推送的分发,即服务端不断推送这20个url的数据给nginx,nginx再分发给这10000个客户端。测试过一些模块,但由于各种问题,结果都放弃了,打算自己写Lua来实现。
>
可以参考一下下面这篇博客里的做法:
http://huoding.com/2012/09/28/174
值得一提的是,我有计划把 redis 中的相关实现作为 ngx_lua 的共享内存字典的另一个平行的引擎。如果能在 nginx 内部直接支持
redis 的大部分操作,包括 redis 的 blpop 命令,有可能会高效和灵活得多。
>
> 尝试着写了,但是也没能成功。。。如何在init_by_lua启动一个线程呢?或者说我们的想法不对?
>
init_by_lua 是运行在 nginx master 进程中的,而只有 nginx worker 进程才会实际处理请求。所以即使你能在
nginx master 进程里面运行轻线程,你的这个线程也不可能影响到 worker 的进程空间。
同时抄送给 openresty 邮件列表:https://groups.google.com/group/openresty
同时也建议你加入此列表并在那里交流这样的问题。
谢谢合作!
Regards,
-agentzh