openresty
1. 什么是openresty
openresty是一款http服务器,基于nginx,比nginx强大的地方是可以配置文件里配置输出内容,可以通过lu-redis等模块来直接连接redis来实现读写操作,不用apache 那样需要借助于php 语言才能连接数据库来实现数据的读写和网页的编写。
官网说法:
OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。
OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。
连接:http://www.runoob.com/w3cnote/openresty-intro.html
2. 配置文件直接输出内容类似:
content_by_lua '
ngx.say("<p>Hello, World!</p>")
3.作用:
a.自由连接后端,如redis.mysql
b. 访问控制
c响应头的修改
d.nginx输出内容的自定义在配置文件里,用content_by_lua。
4.具体配置:
修改响应头:
header_filter_by_lua 'ngx.header.Foo = ngx.HTTP_OK';
or header_filter_by_lua_file path;
path: ngx.header["aaa"]="bbb"
自定义网页内容:
content_by_lua 'ngx.say("hello world")';
控制访问:
access_by_lua_file path;
path: lua脚本里各种判断等内容
连接后端:
redis:
redis=require("resty.redis")
redis 模块的路径 reety/redis
red=redis:new()
red:auth()
ok,res=red:auth("root1234")
red:connect()
ok,res=red:connect("127.0.0.1",6379)
red.set
red.get
mysql and memchched 类似:
注意 都是: 如new connect 等
Openresty
1, 同步非阻塞 概念:
同步: 程序按顺序执行,上一条任务执行返回后,下一条任务才继续执行,如果不等上一条命令的返回,下一条即开始的话,叫异步
非组塞: 指的是cpu 调用, 程序执行过程中,cpu 调用 网络,文件等内容时, 不会立刻返回,在此期间cpu 空闲, 如果cpu 同时去处理其他任务,即是 非阻塞。
openresty 的 同步非阻塞
站在用户请求的角度,非阻塞并不会减少处理的时间,但是会减少等待的时间。OpenResty 的每个 worker 同一时间只在处理一个请求,如果阻塞了,这个 worker 上的其他请求都需要等待。
C10K 要解决的是高并发的问题,是服务端的整体性能。
注意说的是openresty 的 同步非阻塞 和 cpu 非阻塞 不一样。。。