微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.4 查询Tomcat【环境准备】

news2025/1/16 1:13:58

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

多级缓存

文章目录

      • 微服务框架
      • 多级缓存
      • 48 多级缓存
        • 48.4 查询Tomcat【环境准备】
          • 48.4.1 多级缓存需求

48 多级缓存

48.4 查询Tomcat【环境准备】

48.4.1 多级缓存需求

之前我们已经拿到 了请求参数,现在肯定就要去获取数据了

目前我们已经准备好了Nginx 的反向代理服务器

在这里插入图片描述

就是在我们windows 本地跑的Nginx 服务,

在这里插入图片描述

让它去接收前端的请求,并转到我们部署在Linux 服务器上的OpenResty

在这里插入图片描述

服务端也准备好了,并且还加上 了进程缓存

在这里插入图片描述

现在的问题,Linux 上的服务器拿到数据后,从哪儿查,现在我们的数据库是在服务器上

在这里插入图片描述

按流程图看,应该先查Redis 缓存,缓存没有再查Tomcat 进程缓存 ,Tomcat 进程缓存也没有,再通过接口去访问数据库拿数据

现在Redis 缓存的数据又从何而来,现在还没做,就算做了 也应该是查完Tomcat 再把数据放到Redis 中

现在我们先跳过Redis 缓存这一步

在这里插入图片描述

我们先实现OpenResty对 Tomcat 的查询

在这里插入图片描述

【G 了,我的是真的服务器,我试试 ping 一下】

在这里插入图片描述

我干了,肯定ping 不通啊【Windows 绝对有防火墙】

【不会真要做内网穿透 吧,知识盲区…】【让我想想】

好像吧,我可以把项目打包,传到Linux 服务器上跑起来,这样就在同一个服务器上 了

试试吧

通过yum 快速整个java 1.8 的环境

yum install java-1.8.0-openjdk.x86_64

在这里插入图片描述

在这里插入图片描述

OK, 希望我的猜想可以成功

上案例

【案例】获取请求路径中的商品id信息,根据id向Tomcat查询商品信息

这里要修改item.lua,满足下面的需求:

  1. 获取请求参数中的id

  2. 根据id向Tomcat服务发送请求,查询商品信息

  3. 根据id向Tomcat服务发送请求,查询库存信息

  4. 组装商品信息、库存信息,序列化为JSON格式并返回

【nginx内部发送Http请求】

nginx提供了内部API用以发送http请求:

在这里插入图片描述

返回的响应内容包括:

  • resp.status:响应状态码
  • resp.header:响应头,是一个table
  • resp.body:响应体,就是响应数据

注意:这里的path是路径,并不包含IP和端口。这个请求会被nginx内部的server监听并处理。

但是我们希望这个请求发送到Tomcat服务器,所以还需要编写一个server来对这个路径做反向代理:

在这里插入图片描述

笔者再试试把Windows 防火墙关掉,看看能不能ping 上

在这里插入图片描述

在这里插入图片描述

算了算了,我直接打包上传到服务器

我先试试

在这里插入图片描述

改一下端口

在这里插入图片描述

Linux 本地测试

在这里插入图片描述

OK,没问题【我真是个叼毛】

在这里插入图片描述

先试试,不行再想办法

【封装http查询的函数】

我们可以把http查询的请求封装为一个函数,放到OpenResty函数库中,方便后期使用。

  1. 在/usr/local/openresty/lualib目录下创建common.lua文件:

在这里插入图片描述

在这里插入图片描述

  1. 在common.lua中封装http查询的函数

在这里插入图片描述

-- 封装函数,发送http请求,并解析响应
local function read_http(path, params)
    local resp = ngx.location.capture(path,{
        method = ngx.HTTP_GET,
        args = params,
    })
    if not resp then
        -- 记录错误信息,返回404
        ngx.log(ngx.ERR, "http not found, path: ", path , ", args: ", args)
        ngx.exit(404)
    end
    return resp.body
end
-- 将方法导出
local _M = {  
    read_http = read_http
}  
return _M

在这里插入图片描述

在这里插入图片描述

OK, 改成中文

在这里插入图片描述

OK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程

今天给大家演示的是一款由springMVCmysql实现的Java web医院分诊挂号管理系统,主要实现了患者管理、科室管理、挂号管理等业务功能,此外系统还有角色权限管理,用户管理、菜单管理、定时任务管理等功能,这些功能对于想要二次开发的…

数据结构---各类排序算法详解

Lesson6–排序 文章目录Lesson6--排序一、.排序的概念及其应用1.1排序的概念1.2常见的排序算法二、.常见排序算法的实现2.1插入排序2.1.1插入排序的基本思想:2.1.2直接插入排序:2.1.3 直接插入排序代码实现2.1.4希尔排序(缩小增量排序&#x…

入门学习SpringSecurity,这一篇就够了

入门学习SpringSecurity,这一篇就够了1.SpringSecurity环境搭建2.认识SpringSecurity3.配置SpringSecurity4.注销5.权限控制展示内容6.记住我实现7.定制登录页在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但…

处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?

如果你计划开发一款程序处理.dwg文件中的数据。那么你有三种技术方案实现----AutoCAD(ObjectARX/http://Acad.NET)、 RealDWG或Teigha. 试图编写自己的dwg解析引擎是不可行的,dwg的加密格式使任务极其艰巨。再考虑到引擎后续版本的维护以及兼容性、稳定性&#xff…

NPC/ANPC三电平调制方法和中点平衡算法

一调制算法和中点平衡方法概要 1.调制算法 【1】三电平空间矢量调制算法 (1)常规90度xy坐标系 (2)改进60度gh坐标系 【2】载波调制算法 (1)载波同相 (2)载波反相 2.中点平衡…

PLC点云滤波

在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,以及电磁波衍射特性、被测物体表面性质变化和数据拼接配准操作过程的影响,点云数据中将不可避免地出现一些噪声点。实际应用中除了这些测量随机误差产生的噪声点之外&#…

Batch Norm 与 Layer Norm

这里写自定义目录标题1 为何要对输入数据做 Normalization2 Batch Normalization3 Layer Normalization4 实际应用参考1 为何要对输入数据做 Normalization 可以比较好的抑制梯度消失和梯度爆炸的情况 归一化技术就是让每一层的分布稳定下来,让后面的层能在前面层…

HashMap(一)

HashMap集合简介 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 JDK1…

灵活就业潮带热职业技能培训,河南00后Python学习人数翻倍

前言 短视频带货、直播带货、在线接单修图、开工作室……时间自由、收入更高的灵活就业,正在成为年轻人的就业新选择,职业技能培训焦点也在转移。5月12日,腾讯课堂数据显示,近半年(2021年11月至2022年4月)…

主键顺序影响——如何优化 ClickHouse 索引(二)

回顾一下上一篇文章,ClickHouse 的存储设计,从存储目录出发,讲 ClickHouse 的数据读取: 第一阶段,通过隐含的 granule 单位读取主键索引 idx 文件通过二分搜索过滤不需要的 Granule,再关联对应的 mk2 文件…

elasticsearch7.17 与minio集成,并快照备份与恢复

elasticsearch 7.6以支持 一、monio 1、部暑minio mkdir -p /data/minio/{data,config}cat > /data/minio/start.sh << EOF docker run -d \ -p 9000:9000 \ -p 9001:9001 \ --name minio \ --restartalways \ -e "MINIO_ROOT_USERadmin" \ -e "MINI…

Linux学习01-Linux基础认知

笔记来源于鸟哥的Linux私房菜&#xff08;第四版&#xff09;&#xff0c;这本书写的真的非常好。 1 简介 早期的Linux是针对386的计算来开发的&#xff0c;由于Linux只是一个操作系统&#xff0c;并不含有其他的应用程序&#xff0c;因此很多工程师在下载了Linux内核并安装&a…

【Linux】进程的程序替换(execl、execlp、execle、execvpe等替换函数)

文章目录1、进程程序替换1.1 理解进程替换原理1.2 进程相应替换函数1.3 进一步理解程序替换1、进程程序替换 父进程创建子进程的目的&#xff1a; 1.想让子进程执行父进程代码的一部分。&#xff08;子承父业&#xff09; 2.想让子进程执行一个全新的程序。   进程程序替换讨…

深圳大学数学文化赏析MOOC第一次作业答案(满分)

一、单选题 (共 40.00 分) 1. 关于归纳推理&#xff0c;以下说法错误的是 A. 归纳推理是从特殊到一般的推理。 B. 归纳推理属于发散性思维。 C. 归纳推理的结论一定是正确的。 D. 归纳推理具有创新性。 满分&#xff1a;2.00 分 得分&#xff1a;2.00 分 你的答案&a…

[MySQL]-数据库恢复工具之binlog2sql

[MySQL]-数据库恢复工具之binlog2sql 森格 | 2022年12月 本文主要介绍工具binlog的使用&#xff0c;它可以帮助我们快速解析出原始SQL、回滚SQL、去除主键的INSERT SQL等。 一、工具介绍 1.1 概述 我们可以去设想&#xff0c;当开发人员使用了delete语句误删除了某表的数据&…

微服务实用篇5-分布式搜索elasticsearch篇1

今天的主要学习任务是分布式搜索&#xff0c;首先了解elasticsearch&#xff0c;然后学习索引库的操作、文档的操作、RestAPI等。elasticsearch是非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速定位到我们需要的内容。这一篇主要学习ES的基本使用&#xff0c…

rocketmq源码-关于消费者push模式和pull模式的对比

在rocketmq中&#xff0c;对于消费者而言&#xff0c;有两种模式&#xff0c;push和pull 我在没有看源码之前&#xff0c;看其他博客的时候&#xff0c;大部分的说法是&#xff1a; mq中有两种获取消息的模式&#xff0c;一种是push&#xff0c;一种是pull&#xff1b;pull这种…

技术人员必备的便携版卸载清理工具 - Uninstall Tool 3 便携版直接U盘中启动软件,专为单个用户在多台电脑上使用而设计的。

Uninstall Tool &#xff0c;快速、强大的卸载清理软件&#xff0c;可完全彻底删除已安装软件。彻底删除不需要的应用程序&#xff0c;实时安装监视器。控制在系统启动时运行的应用。有效&#xff0c;强大的应用程序&#xff0c;具有简单而直观的界面。 删除不需要的软件&#…

马斯克都不懂的 GraphQL,API 网关又能对其如何理解?

作者&#xff0c;罗泽轩 上个月马斯克评论 Twitter App 滥用 RPC 后&#xff0c;与一些 Twitter 的技术主管发生了矛盾 —— 直言马斯克不懂技术。那这个马斯克都不懂的 GraphQL 到底是什么&#xff1f; 什么是 GraphQL&#xff1f;它有多流行&#xff1f; GraphQL 是一套由 F…

【javascript】值,类型,变量,函数,noi103题目,if语句,调试

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录基本类型NumberStringboolean例子变量求二元一次方程函数1.3题目if例子1.4题目调试下面我们会随着…