浅谈openresty

浅谈openresty

  • 为何会有OpenResty?html

    • 咱们都知道Nginx有不少的特性和好处,可是在Nginx上开发成了一个难题,Nginx模块须要用C开发,并且必须符合一系列复杂的规则,最重要的用C开发模块必需要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,因此接下来咱们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮咱们实现了能够用lua的规范开发,实现各类业务,而且帮咱们弄清楚各个模块的编译顺序。
    • OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了不少高质量的第三方模块。OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可使用 Lua 脚本语言调动 Nginx 支持的各类 C 以及 Lua 模块,更主要的是在性能方面,OpenResty能够 快速构造出足以胜任 10K 以上并发链接响应的超高性能 Web 应用系统。它最大的特色就是用同步的代码逻辑实现非阻塞的调用,其次它有单进程内的 LRU cache 和进程间的 share DICT cache,并且它是揉合 nginx 和 LuaJIT 而产生的。 OpenResty 致力于将你的服务器端应用彻底运行于 Nginx 服务器中,充分利用 Nginx 的事件模型来进行非阻塞 I/O 通讯。不单单是和 HTTP 客户端间的网络通讯是非阻塞的,与MySQL、PostgreSQL、Memcached、以及 Redis 等众多远方后端之间的网络通讯也是非阻塞的。
  • OpenResty运行原理nginx

    • Nginx 采用的是 master-worker 模型,一个 master 进程管理多个 worker 进程,基本的事件处理都是放在 woker 中,master 负责一些全局初始化,以及对 worker 的管理。在OpenResty中,每一个 woker 使用一个 LuaVM,当请求被分配到 woker 时,将在这个 LuaVM 里建立一个 coroutine(协程)。协程之间数据隔离,每一个协程具备独立的全局变量_G
    • 1159210-20200110175546884-677863146.png
  • Tengine vs openrestygit

    • Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了不少高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等获得了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。
    • Tengine下载
    • 继承Nginx-1.6.2的全部特性,兼容Nginx的配置;
      动态模块加载(DSO)支持。加入一个模块再也不须要从新编译整个Tengine;
      支持SO_REUSEPORT选项,建连性能提高为官方nginx的三倍;
      支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;
      流式上传到HTTP后端服务器或FastCGI服务器,大量减小机器的I/O压力;
      更增强大的负载均衡能力,包括一致性hash模块、会话保持模块,还能够对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
      输入过滤器机制支持。经过使用这种机制Web应用防火墙的编写更为方便;
      支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
      动态脚本语言Lua支持。扩展功能很是高效简单;
      支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
      支持按指定关键字(域名,url等)收集Tengine运行状态;
      组合多个CSS、JavaScript文件的访问请求变成一个请求;
      自动去除空白字符和注释从而减少页面的体积
      自动根据CPU数目设置进程个数和绑定CPU亲缘性;
      监控系统的负载和资源占用从而对系统进行保护;
      显示对运维人员更友好的出错信息,便于定位出错机器;
      更强大的防攻击(访问速度限制)模块;
      更方便的命令行参数,如列出编译的模块列表、支持的指令等;
      能够根据访问文件类型设置过时时间;
    • agentzh是这样说的:Tengine 是一个 nginx 的 fork,而 ngx_openresty 是 nginx 的 bundle.最初二者没有交集,后来Tengine 也是 ngx_openresty 多数核心组件的用户 了,Tengine pdf文档中提到ngx_lua等核心组件也不足为怪了。
    • Nginx开发从入门到精通 — Nginx开发从入门到精通
  • openresty资源github

  • 其它资源redis

相关文章
相关标签/搜索