深入浅出OpenResty
Posted AI船长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入浅出OpenResty相关的知识,希望对你有一定的参考价值。
“ OpenResty 是一个基于 nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关”
OpenResty 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 mysql、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
01
—
适用场景
通过 OpenResty,你可以把 nginx 的各种功能进行自由拼接, 更重要的是,开发门槛并不高,这一切都是用强大轻巧的 Lua 语言来操控。
它主要的使用场景主要是:
1.在 Lua 中揉和和处理各种不同的 nginx 上游输出(Proxy,Postgres,Redis,Memcached 等)。
2.在请求真正到达上游服务之前,Lua 可以随心所欲的做复杂的访问控制和安全检测,随心所欲的操控响应头里面的信息。
3.从外部存储服务(比如 Redis,Memcached,MySQL,Postgres)中获取后端信息,并用这些信息来实时选择哪一个后端来完成业务访问,在内容 handler 中随意编写复杂的 Web 应用,使用 同步但依然非阻塞 的方式,访问后端数据库和其他存储。
4.在 rewrite 阶段,通过 Lua 完成非常复杂的 URL dispatch。
5.用 Lua 可以为 nginx 子请求和任意 location,实现高级缓存机制。
组织 OpenResty 技术大会之前,我一直认为自己是一个孤独的 OpenResty 使用者,觉得自己在使用一个冷门的技术。
虽然大家都听说过 OpenResty 或者 ngx_lua,但感觉用在生产环境中使用的却少之又少,除了几个 CDN 公司外,好像没有听说过哪家知名互联网公司在使用。而 CDN 行业之所以使用,很多是受到 cloudflare 技术栈的影响,OpenResty 的作者也在国外这家 CDN 公司。
以上是关于深入浅出OpenResty的主要内容,如果未能解决你的问题,请参考以下文章