openresty 学习笔记六:使用session库
lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Protocol。
项目地址:https://github.com/bungle/lua-resty-session
使用方法有很多种,我这里只使用简单的用redis存储session
lua-resty-session 是一个面向 OpenResty 的安全和灵活的 session 库,它实现了 Secure Cookie Protocol。
项目地址:https://github.com/bungle/lua-resty-session
使用方法有很多种,我这里只使用简单的用redis存储session
这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面。输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据数据库记录的类型调转到不同页面,并记录下访问者的IP并记录到数据库,参数不符合要求返回默认页面。
其实也就用到之前记录下的那些功能点,这个实验也就被用在本网的www入口
之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节。这里是做具体实施,用lua访问RabbitMQ消息队列。
RabbitMQ消息队列有几个比较重要的概念:生产者Producer,消费者Consumer,交换器Exchanges,队列Queues
毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库。比如首次查询数据在redis查询不到则查询mysql,再将查询结果写过redis供下次查询。保存数据也可以先写入redis再通过队列使用另外的程序异步写入mysql。
后面会逐步把openresty写入rabbitmq和python通过订阅rabbitmq的队列将数据写入mysql得方法都整理一下。
先看看openresty如何对mysql进行连接和操作,并进行二次封装
openresty 获取POST或者GET的请求参数。这个是要用openresty 做接口必须要做的事情。
这里分几种类型:GET,POST(urlencoded),POST(form-data)。可以根据需要选择某种提交请求的方式,也可以集合封装成一个工具库来使用
openresty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
性能之高与具体内容就不贴了,官网介绍很详细了
对我而言,我是觉得在nginx上加上这个lua的扩展来处理网关,路由和鉴权甚至加解密都是是非常合理的,这些工作在nginx就处理好,后端类似php程序等只管业务实现和界面展示,整个系统的架构也变得非常清晰。加上openresty 的性能还不是一般高的话就非常有可用性了。
学习的第一步是搭建环境。以下教程是在centos上编译安装openresty,php,redis,mysql的全部过程