多级缓冲-Tomcat查询
个人名片:本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式3)实现商品查询测试:在item.lua中添加返回值:重启nginx:访问:http://localhost/item.html?id=10001结果:sold和stock为null,这两个都是库存表中的数据,说明两个表未拼接官方地址:
个人名片:
博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看
四、实现多级缓存
多级缓存的实现离不开Nginx编程,而Nginx编程又离不开OpenResty。
4. 查询Tomcat
Apache Tomcat是一个流行的开源Java Web应用服务器。
它实现了几个Java EE规范,包括Java Servlet、Java Server Pages (JSP)、Java Expression Language和JavaWebSocket等,并且Tomcat的连接器组件实现了HTTP请求的解析,因此可以将Tomcat看作是一个HTTP服务器。
Tomcat有5个主要的功能,分别是:接收和反馈外部请求的连接器、负责处理请求的容器、管理servlet应用的生命周期、把客户端请求的url映射到对应的servlet、与Servlet程序合作处理HTTP请求。
除此之外,Tomcat还有其他的优点,比如:Tomcat是开源的,并且是由Apache软件基金会开发的;Tomcat是由Java语言实现的,因此需要运行在Java虚拟机上;Tomcat实现了几个Java EE规范,因此可以运行自己编写的Servlet应用程序处理动态请求,即实现动态页面。
3)实现商品查询
最后,我们修改
/usr/local/openresty/lua/item.lua
文件,利用刚刚封装的函数库实现对tomcat的查询:
注释掉之前的代码
-- 引入自定义common工具模块,返回值是common中返回的 _M
local common = require("common")
-- 从 common中获取read_http这个函数
local read_http = common.read_http
-- 获取路径参数
local id = ngx.var[1]
-- 根据id查询商品
local itemJSON = read_http("/item/".. id, nil)
-- 根据id查询商品库存
local stockJSON = read_http("/item/stock/".. id, nil)
测试:
在item.lua中添加返回值:
ngx.say(itemJSON)
重启nginx:
nginx -s reload
访问:
http://localhost/item.html?id=10001
结果:
sold和stock为null,这两个都是库存表中的数据,说明两个表未拼接
- CJSON工具类
OpenResty提供了一个cjson的模块用来处理JSON的序列化和反序列化。
官方地址: https://github.com/openresty/lua-cjson/
语法格式:
-- 引入cjson模块:
local cjson = require "cjson"
-- 序列化
local json = cjson.encode(obj)
-- 反序列化:
local obj = cjson.decode(json);
- 实现Tomcat查询
下面,我们修改之前的item.lua中的业务,添加json处理功能:
-- 导入common函数库
local common = require('common')
local read_http = common.read_http
-- 导入cjson库
local cjson = require('cjson')
-- 获取路径参数
local id = ngx.var[1]
-- 根据id查询商品
local itemJSON = read_http("/item/".. id, nil)
-- 根据id查询商品库存
local stockJSON = read_http("/item/stock/".. id, nil)
-- JSON转化为lua的table
local item = cjson.decode(itemJSON)
local stock = cjson.decode(stockJSON)
-- 组合数据
item.stock = stock.stock
item.sold = stock.sold
-- 把item序列化为json 返回结果
ngx.say(cjson.encode(item))
测试:
重启nginx:
nginx -s reload
访问:
http://localhost/item.html?id=10001
结果:
sold和stock都有数值了
更多推荐
所有评论(0)