SpringCloud-高级篇(十六)

news2024/11/17 9:29:28

前面学习了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没有日志 

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

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

相关文章

不熟悉现货白银的震荡行情?你可以试着这样理解

在现货白银交易中,投资者很不想碰到震荡行情,因为震荡行情说明市场没有明确的趋势,而是倾向于横向波动,因此没有潜在风险较低且潜在盈利较大的顺势交易机会。可不幸的是,在市场中大部分时间市场还是会倾向横向震荡&…

WhatsApp首次营销模板怎么写?WhatsApp营销效果怎么样?

近年来,随着社交媒体的飞速发展,WhatsApp作为一种全球通用的即时通讯应用程序,在营销领域备受重视。很多企业开始利用WhatsApp这一平台与客户进行沟通和营销推广活动。本文将探讨WhatsApp首次营销模板如何编写以及其所带来的效果。 首先&…

MG7050VAN 基于声表的差分多输出 晶体振荡器(LVDS)

MG7050VAN的LVDS输出是一款差分多输出晶体振荡器,具有极低的抖动和超强的稳定性。该振荡器适用于多种应用场景,如服务器、存储器和网络仪器等。作为一款高端的LVDS输出设备,该振荡器在输出性能上具有明显优势。其超低抖动水平可以达到0.3ps M…

【机器学习】强化学习(七)-策略梯度算法-REINFORCE 训练月球着陆器代理(智能体)...

概 述 月球着陆器代理是一个模拟飞行器在月球表面着陆的环境,它有八个连续的状态变量,分别是水平坐标、垂直坐标、水平速度、垂直速度、角度、角速度、腿1触地、腿2触地。它有四个离散的动作,分别是什么都不做、发动左方向引擎、发动主引擎、…

情人节爆品出现!单周GMV暴涨6成,直冲20K美金,节庆用品赛道迎来“爆单潮”!

2024新年钟声已经敲响,一大波节日爆品正在疯狂涌现,而这只是一个开始。 开年首月电商流量一波接一波来袭,下一个“消费大节”已经在来的路上!——情人节。 节日营销热点抢量,宜早不宜晚。商家们纷纷开始上新节庆相关…

【详解】贪吃蛇游戏----下篇(完整源码)

目录 引入: 本片文章目的: 整个游戏的实现流程图如下: 游戏实现 GameRun PrintHelpInfo Pause NextIsFood printSnake EatFood NoFood KillByWall KillBySelf GameRun GameEnd 总代码: (1&#xff09…

【Linux】Linux权限的概念 -- 详解

一、Linux 中的用户 Linux 下有两种用户: 超级用户(root):可以在 Linux 系统下做任何事情,不受限制。普通用户:在 Linux 下做有限的事情。 超级用户的命令提示符是 “#”,普通用户的命令提示符…

【算法专题】动态规划综合篇

动态规划7.0 1. 最长公共子序列2. 不相交的线3. 不同的子序列4. 通配符匹配5. 正则表达式匹配6. 交错字符串7. 两个字符串的最小ASCII删除和8. 最长重复子数组 1. 最长公共子序列 题目链接 -> Leetcode -1143.最长公共子序列 Leetcode -1143.最长公共子序列 题目&#xf…

操作系统论述题+第5、6、7、8、9章的知识小点总结(尤其是选择题)

文章目录 一、操作系统论述题怎么提高内存利用率?怎么提高CPU利用率?怎么提高操作系统并发度?这个答案也不知道是什么问题里面的 二、操作系统5、6、7、8、9章选择题知识点第五章:存储器管理第六章:虚拟存储器第七章&a…

【笔试常见编程题03】统计回文、连续最大和、不要二、把字符串转换成整数

1. 统计回文 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串…

如何通俗解释Docker是什么?

要想弄懂Docker,咱们得先从“容器化”讲起。 一、容器化技术及Docker的出现 容器化,它是一种轻量级、可移植的软件打包方式,你就想象成一个快递箱子,里面装着你的应用和所有需要运行的环境,这个箱子能在任何支持容器…

promethues基础概念

promethues是一个开源的系统监控以及报警系统,整个zabbix的功能,系统,网络,设备 promethues可以兼容网络和设置被,容器监控,告警系统,因为他和k8s是一个项目基金开发的产品,天生匹配…

【漏洞复现】中移铁通禹路由器信息泄露漏洞

Nx01 产品简介 中移禹路由器支持宽带拨号、动态IP和静态IP三种上网模式,一般中国移动宽带的光猫都是智能光猫也就是光猫带路由器功能,中移禹路由器作为二级路由使用。 Nx02 漏洞描述 中移禹路由器ExportSettings处存在信息泄露漏洞,攻击者可以获取后台权限。 Nx03…

【机器学习】欠拟合与过拟合

过拟合:模型在训练数据上表现良好对不可见数据的泛化能力差。 欠拟合:模型在训练数据和不可见数据上泛化能力都很差。 欠拟合常见解决办法: (1)增加新特征,可以考虑加入特征组合、高次特征,以…

【Mac】windows PC用户转用Mac 配置笔记

win转mac使用的一些配置笔记;感觉mac在UI上还是略胜一筹,再配合在win上的操作习惯就体验更好了,对日常办公需求的本人足以。 优化设置 主要 操作优化 AltTab: win 习惯查看全部活动的alt键,对比cmdtab多了可以预览&…

【qt】switchBtn

方法1 在qtdesigner中设置按钮图标的三个属性,normal off 、normal on和checkabletrue。 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5 import uic from switchBtn import Ui_Dialogclass Test(QDialog, Ui_…

手敲Mybatis(17章)-二级缓存功能,感受装饰器的魅力

1.目的 本节主要是讲Mybatis的二级缓存,一级缓存是会话SqlSession级别的,二级缓存是Mapper级别的这个大家都知道,一级缓存主要是同一个SqlSession实例才可以缓存,那么出现commit等其他情况可能清除缓存,我想要再发起的…

ABB机器人单周和连续运行模式切换的配置方法

ABB机器人单周和连续运行模式切换的配置方法 有朋友反映:示教器上已经选择了“连续”模式,在通过PLC远程控制ABB机器人启动时,机器人的运行模式会从“连续”自动切换到“单周”, 那么哪里可以设置该选项呢,大家可以参考以下内容: 用户可以在快速设置栏设置机器人运行的运…

Q-Bench:一种用于低级别视觉通用基础模型的基准测试

1. 引言 多模态大语言模型(Multi-modality Large Language Models,后续简称多模态大模型)能够提供强大的通用级别视觉感知/理解能力,甚至可以通过自然语言与人类进行无缝对话和互动。虽然多模态大模型的这些能力已经在多个视觉语…

解析PreMaint在石油化工设备预测性维护领域的卓越表现

石油化工行业一直在寻找能够确保设备高效运行的先进维护解决方案。在这个领域,PreMaint以其卓越的性能和创新的技术引起了广泛关注。 一、为何选择预测性维护? 传统的维护方法,基于固定的时间表,无法灵活应对设备的真实运行状况。…