SpringCloud-高级篇(十六)
前面学习了Lua的语法,就可以在nginx去做编程,去实现nginx类里面的业务,查询Redis,查询tomcat等 ,业务逻辑的编写依赖于其他组件,这些组件会用到OpenResty的工具去实现

(1)安装OpenResty









lualib、luajit是lua提供的第三方模块,比如说我们操作Redis,操作Mysql这些工具模块都封装到了lualib里面了,所以只要集成了lualib里面的插件,就能实现这些功能了

openresty是个软连接,启动的其实是nginx本身

配置了环境变量,之后就可以在任意的目录下启动nginx




启动nginx:

配置文件配置的端口是8081 :启动页面跟nginx很像

(2)OpenResty快速入门
在openResty里面编写业务Redis查询,tomcat查询等等


商品详情页的数据是查询服务端获取数据

现在请求报错了,页面渲染的是假数据,

这个请求被Windows的版本的nginx接收,然后反向代理到OpenRestry去处理业务


下面需要在OpenResty去接收这个请求:

修改 OpenResty下的nginx配置文件

item.lua是在nginx下面去找的:创建这个目录文件:

我们这里先返回假数据,先不查询:
ngx.say相当于java中的response.println()


更改数据:
重新加载nginx:

刷新页面:数据发生改变,请求成功了,是有openResty返回的数据
(3)OpenResty请求参数处理
怎么在openResty中获取用户的请求参数呢


修改nginx配置文件文件:


修改lua文件:



(4)查询tomcat
获取到请求参数之后,是要查询数据的
openresty是先查缓存,缓存中的数据从而而来是tomcat,我们这里先实现查询tomcat,先不查询缓存,把查询到的数据放到缓存中去

tomcat是Windows的地址,openResty是虚拟机的地址,发送请求的时候一定要找到正确的地址,有一个便捷的方式 ,使用关于所有的虚拟机,那就是把虚拟机的ip最好以为变为1,就能找到Windows的地址,前提是防火墙得关闭



tomcat接收的请求以item开头:
nginx配置添加:


openResty会读取这个路径下的lua文件

在上面的路径下创建lua文件

新建:


现在返回的数据,不在是假数据,而是查询的数据
修改nginx/lua下的item.lua配置文件:




先只返回商品信息,不返回库存信息
重新加载nginx:

然后查询页面:就能显示数据库中查询的真实数据了


返回完整数据,需要用到一个json的工具



(5)tomcat集群负载均衡
上面实现了从openResty向tomcat发送一个http请求,查询商品信息,返回页面,实现渲染,上面的tomcat只有一台,在实际的生产过程中国tomcat一定是个集群,openResty向tomcat发送请求的时候必须对多台tomcat实现负载均衡请求

8081去查询数据库,会形成一个JVM的进程缓存,缓存到8081的tomcat服务器上,下一次再来查8081就可以直接读取缓存,不查询数据库,就会提高性能,但是进程缓存是不能共享的8082就没有,tomcat负载均衡的规则默认是轮询,下一次访问必然到8082缓存就没有生效,除非把每台tomcat都查询缓存一遍,冗余的查询,冗余的保存,占用额外空间,命中率低
我想要1001商品第一次查询完,永远都由缓存,就需要把1001的查询每次都指定到同一台tomcat,才能保证缓存才能生效
1002的商品才会查询下一台tomcat
不同商品访问不一样的服务器,也可以一样,但是同一个商品一定访问同一台服务器,这样才能保证缓存永远命中,JVM进程缓存才有意义,轮询是做不到的,修改nginx负载均衡的算法
hash,通过hash对路径取余,只要路径不变,请求的tomcat就是同一台tomcat

修改nginx的配置文件:

重启nginx

在启动一台tomcat:

页面访问一下:
算法负载均衡到:8082


清空日志,在刷新一遍页面,8082有缓存,就不需要在查了:日志没有打印

换一个id=1002:

负载均衡到8081了:

8082没有日志

相关文章:
SpringCloud-高级篇(十六)
前面学习了Lua的语法,就可以在nginx去做编程,去实现nginx类里面的业务,查询Redis,查询tomcat等 ,业务逻辑的编写依赖于其他组件,这些组件会用到OpenResty的工具去实现 (1)安装OpenRe…...
【C++基础】C++内存处理机制面试题(以面促学 )
🌈欢迎来到C基础专栏 🙋🏾♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mysq…...
arcgis 批量删除字段
一、打开ArcToolbox-数据管理工具-字段-删除字段。 二、在输入表中选择要删除字段的要素,在删除字段栏中选择要删除的字段,点击确认即可。...
尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码
特色功能: 不同助教服务类型选择 助教申请,接单,陪练师入住,赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈:前端uniapp后端thinkphp 独立全开源...
Spring-集成Junit
一、引子 我们在Spring概念中提到:Spring的一大优势在于可以集成众多优秀的框架。毫无疑问,我首先向读者推荐的就是Junti框架。因为我们在前期的学习中,写一些小的demo,用Junit来进行小测试是非常合适的。下面让我们来具体看看如…...
DS:经典算法OJ题(1)
创作不易,友友们给个三连呗!! 本文为经典算法OJ题练习,大部分题型都有多种思路,每种思路的解法博主都试过了(去网站那里验证)是正确的,大家可以参考!! 一、移…...
最好理解文章——什么是闭包?
学习Javascript闭包(Closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用…...
Git 教程 | 将本地修改后的文件推送到 Github 指定远程分支上
Git 是一种分布式版本控制系统,用于敏捷高效地处理任何大小的项目。它是由 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的开源版本控制软件。Git 的本地克隆就是一个完整的版本控制存储库,无论脱机还是远程都能轻松工作。开发人员会在本地提交其工…...
漏洞原理linux操作系统的SqlMap工具的使用
漏洞原理linux操作系统的SqlMap工具的使用 Linux操作系统基础操作链接: 1024一篇通俗易懂的liunx命令操作总结(第十课)-CSDN博客 kali的IP地址:192.168.56.1 实操 # kali中使用sqlmap http://192.168.56.1/ sqlmap -u http://192.168.56.1/news/show.php?id46 sqlmap -u …...
【机器学习】欠拟合与过拟合
过拟合:模型在训练数据上表现良好对不可见数据的泛化能力差。 欠拟合:模型在训练数据和不可见数据上泛化能力都很差。 欠拟合常见解决办法: (1)增加新特征,可以考虑加入特征组合、高次特征,以…...
【C++】C++入门基础讲解(二)
💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读 接着上一篇的内容继续学习,今天我们需要重点学习引用。 1. 引用 在C中,引用是一种特殊的变量ÿ…...
Requestly工具快速提升前端开发与测试的效率
痛点 前端测试 在进行前端页面开发或者测试的时候,我们会遇到这一类场景: 在开发阶段,前端想通过调用真实的接口返回响应在开发或者生产阶段需要验证前端页面的一些 异常场景 或者 临界值 时在测试阶段,想直接通过修改接口响应来…...
Node+Express写分页接口
后端逻辑 router.js文件 const express require(express); const router express.Router();//导入函数处理,数据 const articleMessage require(../router_handle/artcle)//文章列表 router.get(/list,articleMessage.articleList)module.exports router; router_handle.js…...
ifconfig 主机ip url记录
ifconfig 容器Pods相关主机与url信息 一文搞懂网络知识,IP、子网掩码、网关、DNS、端口号_关于ip,网关。端口-CSDN博客 计算机网络知识之URL、IP、子网掩码、端口号_ip地址和url-CSDN博客 阅读看下以上文章 由此可知 1.主机ip 10.129.22.124 10.129.22 是网段…...
RT-Thread: STM32 SPI使用流程
1.添加驱动 ①点开设置界面 ②勾选看门 SPI 驱动 ③点击保存 ④查看添加的驱动文件 drv_spi.c 2.打开驱动头文件定义 ①打开配置文件 ②打开定义 3.打开需要开启的SPI总线 打开 drivers 目录下的 board.h 用SPI搜索,找到如下文字,打开对应的宏。 /*-…...
Qt 基于海康相机 的视频标绘
需求: 基于 视频 进行 标注,从而进行测量。 曾经搞在线教育时,尝试在视频上进行文字或者图形的绘制,但是发现利用Qt widget 传sdk 句柄的方式,只能使用窗口叠加的方式(Qt 基于海康相机的视频绘图_海康相…...
【UEFI实战】Redfish的BIOS实现——生成EDK数据
生成Redfish文件 Redfish数据的表示形式,最常用的是JSON。将JSON表示的数据转换成C语言可以操作的结构体,是必不可少的步骤。当然如果手动转换的话,需要浪费大量的时间,因此DMTF组织开发了一个工具,用于将JSON数据快速…...
VUE--VUEX
一、什么是Vuex Vuex就是一个vue的状态(数据)管理工具,是vue项目实现大范围数据共享的技术方案。能够方便、高效的实现组件之间的数据共享。 Vuex的好处: (1)数据的存储一步到位,不需要层层传递…...
【NodeJS】004- NodeJS的模块化与包管理工具
模块化 1. 介绍 1.1.什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什么是模块化项目 ? 编码时是按照模…...
Linux浅学笔记02
目录 grep-wc-管道符 echo-tail-重定向符 vi编辑器 grep-wc-管道符 grep命令(过滤文件内容) //更准确的来说,是筛选包括“所需字符”的一句内容或多句内容。 语法:grep [-n] 关键字 文件路径 //-n:可选,表示在结果中匹配的行…...
若依框架下,如何让JimuReport积木报表乖乖认你的登录状态?(附完整前后端代码)
若依框架与JimuReport深度整合:实现无缝登录状态管理的全链路实践 在当今企业级应用开发中,权限控制与单点登录已成为基础需求。当我们将若依(RuoYi)这一流行后台管理系统框架与JimuReport报表工具集成时,如何确保两者间的登录状态无缝衔接&a…...
缺陷检测新利器:f-AnoGAN原理剖析与工业视觉实战
1. 工业视觉缺陷检测的痛点与挑战 在工业生产线上,产品表面缺陷检测一直是个让人头疼的问题。传统的人工检测方式效率低下,一个工人盯着传送带看8小时,漏检率能达到15%以上。我见过某家电企业质检车间,工人们需要检查微波炉门板上…...
自编码器在异常检测中的实战:如何用TensorFlow识别异常数据点
自编码器在异常检测中的实战:如何用TensorFlow识别异常数据点 金融交易中的一笔异常转账、工业设备传感器突然的读数波动、医疗影像中微小的病变区域——这些隐藏在庞大数据流中的异常信号,往往预示着关键风险或机会。传统基于阈值规则的检测方法在面对高…...
解锁创意:obs-composite-blur插件的视觉魔法
解锁创意:obs-composite-blur插件的视觉魔法 【免费下载链接】obs-composite-blur A comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing. 项目地址: https://gitcode.com/gh_mirrors/ob/obs-composite…...
告别目标跟丢!手把手教你用BoT-SORT和OpenCV GMC搞定复杂场景下的多目标跟踪
告别目标跟丢!手把手教你用BoT-SORT和OpenCV GMC搞定复杂场景下的多目标跟踪 在智能监控和自动驾驶等实际应用中,多目标跟踪(MOT)技术常常面临动态相机和目标快速移动带来的挑战。传统算法在目标遮挡、镜头晃动等复杂场景下容易出…...
WRF风场后处理实战:用Python+Cartopy绘制500hPa风场矢量图(附完整代码)
WRF风场后处理实战:用PythonCartopy绘制500hPa风场矢量图(附完整代码) 气象数据分析中,风场可视化是理解大气环流特征的关键环节。WRF(Weather Research and Forecasting)模式输出的数据包含丰富的三维风场…...
番茄小说下载器:一站式离线阅读与听书解决方案
番茄小说下载器:一站式离线阅读与听书解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为网络不稳定而无法畅快阅读番茄小说烦恼吗?想要在通…...
【无标题】260329
一切都只是我想多了么看到你的博文看到你的新年快乐现在看到你删库跑路为什么要这样出现又消失。。。本来就虚无缥缈的一点儿联系又消失殆尽如果现在可以见到你我心里有N个为什么想问你只是觉得憋屈可能是我理解能力不足共情能力有限我猜不到你的心思啊你到底是想联系还是不想联…...
不只是图表:用Three.js和Vue3打造一个可交互的3D热力图组件库(附完整源码)
不只是图表:用Three.js和Vue3打造一个可交互的3D热力图组件库 在数据可视化领域,3D热力图正逐渐成为展示高密度空间数据的首选方案。传统2D热力图虽然直观,但在表现复杂数据关系时往往力不从心。本文将带您从零开始构建一个生产级Vue3Three.j…...
用Python可视化理解柯西-施瓦茨不等式:从向量内积到函数空间的几何直觉
用Python可视化理解柯西-施瓦茨不等式:从向量内积到函数空间的几何直觉 数学中的不等式往往蕴含着深刻的几何意义,柯西-施瓦茨不等式就是这样一个连接代数与几何的桥梁。对于数据科学和机器学习的学习者来说,理解这个不等式不仅能夯实数学基础…...
