在 2012年3月15日 下午2:23,agentzh <age...@gmail.com> 写道:
> On Thu, Mar 15, 2012 at 10:11 AM, Zoom.Quiet <zoom...@gmail.com> wrote:
>>
>> 需求:
>> - 仅仅使用 openresty + lua 脚本,完成简单的 RESTful 接口服务
>> - 涉及用户简单的值对型文本数据的服务端存储
>> - 不想引入其它 db 产品
>> - 使用纯文本也可以
>> 问题:
>> - 如何解决好阻塞 I/O 和 openresty 的非阻塞运行形式?
>>
>
> 一般来说,对于 ngx_lua,文件 I/O 多是阻塞的(除非启用 aio),而网络 I/O 只要是走 nginx upstream 模块 +
> nginx 子请求,或者走 ngx_lua cosocket API,则都是非阻塞的。
>
>>
>> 思考:
>> - ngx.shared.DICT 已经足够
>> - 而且跨进程共享
>> - 是否可以拿来使用运行期数据字典
>> - 定期,或是异步每次有修改后, dump 到服务端?
>> - 启动时,自动加载一次就好?
>
>
> ngx_lua 的共享内存字典本身没有提供持久化支持。你需要自己在 Lua 层面去设计和实现持久化策略了,可选择的策略有很多。
>
是也乎,是也乎,这两周发觉俺平时对一些基础概念并没有精确把握住,
所以,面对问题时,经常想差,
建议 agentzh 在系列教程中也增补类似参考吼,
现在感觉到容易纠结在一起的概念(先尝试白话一下):
- 阻塞式 I/O
- 凡是对当前进程/线程之外的资源进行沟通,都是 I/O 不论网络/硬盘/内存,,,
- 栈式逐一等待完成的 I/O
- 非阻塞式 I/O
- 协程或是其它技术进行 非等待的 I/O 并行处理
- 请求的同步响应
- 应用对请求引发的所有行动,进行排队,逐一完成
- 请求的异步响应
- 应用能随时完好的挂起请求,进行并发处理
- 过程式同步代码
- 代码形式上,是顺序描述所有行动的
- 回调式异步代码
- 代码形式上,对行动可以进行条件回調
- 执行結果不一定各形式上的顺序
目前 openresty 的亮点,针对以上概念是:
- 内置多种非阻塞式网络I/O 模型
- 通过 Lua 进行业务描述时,形式是同步的,但是通过 Nginx 的内置机制配合
- 实际可以是异步的
以上!?
> Regards,
> -agentzh
--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/