OpenResty——(nginx的多级缓存)

 OpenResty:

基于nginx的高并发web平台,其实也就是在nginx的基础上面再进行二次开发的产物!

一、安装:

1、安装(直接用软件包部署):
1-1:安装OpenResty的依赖开发库(也就是安装依赖环境。)

1-2:安装OpenResty的仓库(也就是把系统更新的地址给绑定一下,之后更新直接)

 1-3:安装OpenResty

1-4:安装opm工具(opm是OpenResty的一个管理工具 ,可以帮助我们安装第三方的Lua模块

然后我们来看一下OpenResty安装在linux的那个位置上:/usr/local/Openresty

注意:我们可以通过OpenResty的文件夹就可以知道。他其实就是在nginx的基础上面进行了二次开发。此时,如果我们需要开启这个里面的nginx。我们需要配置环境变量:

1-5:配置环境变量

vim /etc/profie,进入到环境变量文件中!

刷新配置,让配置生效

 1-6:启动nginx

此时登陆对应的端口页面会显示这个:

说明已经部署成功了。

二、nginx多级缓存:

我们都知道nginx在做反向代理的时候,通常都是把请求转发给服务器,然后服务器进行响应,然后再返回响应数据给nginx。然后nginx再返回给前端页面。

此时如果要做多级缓存的话,也就是通过nginx发送请求给OpenResty,然后OpenResty的lua文件,执行之后会返回响应数据。所以此时nginx的配置文件应该这样去编写。其实也就是再nginx之后会接上OpenResty。

也就是在这个过程上面,nginx做一个方向代理的操作,对应会反向到OpenResty上面去。

对应不同的文件的写法。

1、OpenResty的配置:

1-1:创建lua文件,也就是响应文件。在OpenResty里面lua文件对应的有一个方法,来把放回数据到Response中:ngx.say(json字符串)

1-2:设置OpenResty中nginx的配置文件 

(1)告诉OpenResty执行lua的执行文件在那里,可以使用lua来执行lua文件

(2)编写反向代理的请求。

(3)修改完之后重新启动。

nginx -s reload

2、外部nginx的配置:

此时,我们开启外部的nginx。然后在浏览器里面输入localhost:8082(因为外部nginx我这边是挂在了本地里面去。) 

此时就会响应对应的lua文件的响应数据了。

三、OpenResty在Lua中封装类:

1、ngx      (请求和响应)

我们在做所有的http请求的时候,都会把数据记录放入到请求体里面去,在java后台里面我们可以通过request与springmvc里面提供的参数值来进行获取。

但是如果OpenResty里面的lua文件需要获取的话。

1-1、接收请求获取请求参数:

可以通过上面的所有方法来进行获取。 

1-2、发送请求:

ngx.location.capture("请求路径",{method=请求方式,args={键值对},body="键值对"})

我们这里需要留意的一个点就是

请求方式这里有多种:

ngx.HTTP_GET--------------------------------------------GET请求方式.

ngx.HTTP_POST--------------------------------------------POST请求方式.

而且需要注意的点就是,返回的resp是整个响应,注意:一个lua文件代表着一个类.

我们可以通过类.属性名来获取对应的数值.

1-3、返回响应:

ngx.say(响应数据)

实现案例:

(1).写http.lua的lua文件.lua文件里面做了请求以及返回响应的动作.

 (2).定义OpenResty里面的nginx的nginx.conf配置文件,添加请求转发执行lua文件.

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

(3).因为我们知道OpenResty里面的所有nginx请求都是基于OpenResty的端口链接进行的.假设现在OpenResty的id为 192.168.138.100:8081.

那么也就是上面第一步的请求/one.也就是请求到了192.168.138.100:8081/one,此时我们知道我们这个请求时要发送给服务器的(也就是我们的项目),所以我们需要做反向代理.     

此时服务器的端口为192.168.200.201:8080

 2、cjson      (请求和响应)--------(GitHub地址:https://github.com/openresty/lua-cjson/

(1)我们需要在GitHub上面把cjson.lua文件下载下来,翻入lualib这个目录下面

(2)我们需要引入模块cjson:

1-1序列化------encode:

1-2反序列化------decode:

注意了:

如果直接使用命令require去执行这个lua文件,是会报错误的,会显示没有cjson这个模块,那为什么使用OpenResty的nginx执行的时候就不会报错咧?

 3、Redis访问模块 (GitHub地址:https://github.com/openresty/lua-cjson/

后期补充

 4、自定义模块

我们都知道,其实ngx以及cjson都是别人编写好模块,然后进行模块导入,然后再引用的.

所以,我们自己来创建一个模块.就以http封装类案例:

(1)创建lua为后缀的文件.

我们这边假设一下自己定义的模块为Http.lua

注意:结尾的return其实是返回了_M这个table类型.而怎么起效咧,主要是看require引用模块.

 (2)引入自定义的lua模块.

注意:require这里其实跟多的是把return的返回值放入进去了.

(3)然后进行方法的调用.

四、实现本地缓存策略:

OpenResty里面可以有无数个nginx,为了能让nginx的每个lua文件数据能够共享。OpenResty为nginx提供了shard dict的功能。实现缓存同步。

1、配置共享字典在配置文件中:

2、把想要共享的值存放到共享字典里面去:

 

注意:java中实现本地缓存同步的前提:把缓存对象以bean的形式存入ioc容器里面去,此时服务里面的不同的线程就能通过自动装配来获取到数据。

### 回答1: OpenResty 是基于 Nginx 之上的一个高性能 Web 平台,它包含了大量精心挑选的三方模块,组成了一个完整的增强版 NginxOpenResty 能够让开发者使用 Lua 脚本来扩展 Nginx 功能,使其轻松地支持许多动态功能,比如负载均衡、内存缓存等。 Nginx 是一款轻量级的 Web 服务器,具有很好的性能和资源占用率。它的特点是高性能、低资源占用、高并发。Nginx 可以用来作为反向代理服务器,负载均衡服务器以及 HTTP 缓存服务器。 总的来说,Nginx 是一款高性能的 Web 服务器,而 OpenResty 则是在 Nginx 之上添加了大量功能和模块,提供了一个完整的 Web 平台,支持使用 Lua 脚本来扩展 Nginx 的功能。 ### 回答2: OpenResty是基于Nginx的一个开放源代码的软件包,它主要是为了方便开发人员在Nginx上构建高性能的Web应用和网站。下面是OpenRestyNginx之间的一些主要区别。 1. 功能差异:OpenRestyNginx基础上增加了很多额外的功能。它包含了一套用于编写动态内容、执行复杂处理逻辑的LuaJIT编程接口。这意味着开发人员可以使用Lua语言来扩展和定制Nginx的功能。 2. 高性能:OpenResty借助Nginx的高性能和可扩展性,能够处理大量并发请求。它通过将业务逻辑编写为Lua脚本,将其直接嵌入到Nginx的事件处理流程中,从而提高了性能和响应速度。 3. 生态系统:OpenResty基于Nginx的开发模式,拥有丰富的生态系统。开发者可以使用众多的第三方模块和插件,以及Lua库和框架来简化开发过程。这使得OpenResty能够更容易地构建出功能强大且高性能的Web应用和服务。 4. 配置和管理:OpenRestyNginx一样,具有相似的配置和管理方式。通过简单的编辑配置文件,开发人员可以定义服务器的行为和路由规则。 总的来说,OpenResty是在Nginx的基础上扩展而来的,它提供了更丰富的功能和性能优势,使得开发人员能够更加灵活和高效地构建和部署Web应用和服务。 ### 回答3: OpenRestyNginx是两个不同的软件项目,但OpenResty实际上是在Nginx的基础上进行的增强和扩展。 Nginx是一个高性能的开源Web服务器和反向代理服务器。它的主要用途是处理静态文件、代理请求和负载均衡。Nginx还支持基于事件驱动的非阻塞I/O模型,这使得它具有出色的性能和可伸缩性。 OpenResty是一个基于Nginx的Web服务器扩展平台,它将NginxLua编程语言集成在一起,为开发者提供了一种更灵活的方式来扩展和定制服务器功能。通过使用Lua脚本,开发者可以添加自定义的功能模块,如动态内容生成、访问控制、缓存、API代理等。 因此,OpenResty可以看作是在Nginx上增加了lua-nginx-module等模块,以便更好地支持脚本编程和动态内容生成。OpenResty还提供了一些额外的工具和插件,用于监控和调试Nginx服务器,以及便于开发者的使用和维护。 总而言之,OpenResty是在Nginx的基础上提供了更丰富的功能和灵活性,使开发者能够更方便地定制和扩展服务器功能。它是一种强大的工具,可以用于构建高性能的Web应用程序和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值