营销型网站及原因有哪些方面,手机网站cms系统,网站推广优化软件,杭州网站开发培训文章目录 整体示意图1.nginx缓存2.进程缓存Caffeine示例 3.Lua语法(为了在nginx中做编程)4.OpenResty5.封装向Tomcat发送的Http请求#xff0c;获取数据6.Tomcat集群的负载均衡7.redis缓存8.查询Redis缓存9.Nginx本地缓存 整体示意图 1.nginx缓存 2.进程缓存
Caffeine示例 3.… 文章目录 整体示意图1.nginx缓存2.进程缓存Caffeine示例 3.Lua语法(为了在nginx中做编程)4.OpenResty5.封装向Tomcat发送的Http请求获取数据6.Tomcat集群的负载均衡7.redis缓存8.查询Redis缓存9.Nginx本地缓存 整体示意图 1.nginx缓存 2.进程缓存
Caffeine示例 3.Lua语法(为了在nginx中做编程) 4.OpenResty 5.封装向Tomcat发送的Http请求获取数据 封装完函数之后我们对nginx.conf进行修改请求进来之后会去寻找item.lua item.lua文件内容 上面的item.lua文件中需要进行拼接数据我们需要JSON结果处理 6.Tomcat集群的负载均衡
在实际生产中tomcat是肯定以集群的方式存在
当我们修改nginx.conf发送请求为集群的时候如下图 这个时候存在一个问题集群的负载均衡算法是轮询会导致tomcat进程缓存产生浪费举个例子
假如现在有两台Tomcat服务器一台端口为8080一台端口为8081进行访问查询id为1的信息第一次查询8080端口的tomcat服务器此时8080端口的tomcat服务器上有id为1信息的缓存但是当我们再次查询id为1的信息因为轮询的机制会查询8081端口的tomcat服务器但是id为1的进程缓存在8080端口的tomcat服务器上并且进程缓存在集群之间不会共享这就导致会发生一种情况有多少tomcat服务器就会有多少份进程缓存这对资源是一种极大的浪费
解决方法更换负载均衡算法为 hash $request_uri 这种负载均衡算法是通过对id值进行hash运算然后进行对tomcat服务器数量取余来判断访问哪台tomcat服务器这样就保证了同一个id访问同一个tomcat服务器
7.redis缓存
两个问题 缓存预热代码(逻辑代码根据自己的更换即可)
public class CaffeineConfig implements InitializingBean {Autowiredprivate StringRedisTemplate redisTemplate;Autowiredprivate IItemService itemService;Autowiredprivate IItemStockService itemStockService;private static final ObjectMapper MAPPER new ObjectMapper();Overridepublic void afterPropertiesSet() throws Exception {// 初始化缓存// 1.查询商品信息ListItem itemList itemService.list();// 2.放入缓存for (Item item : itemList) {// 2.1 item序列化为JSONString json MAPPER.writeValueAsString(item);// 2.2 存入redisredisTemplate.opsForValue().set(item:id: item.getId(),json);}// 3.查询商品库存信息ListItemStock stockList itemStockService.list();// 2.放入缓存for (ItemStock stock : stockList) {// 2.1 item序列化为JSONString json MAPPER.writeValueAsString(stock);// 2.2 存入redisredisTemplate.opsForValue().set(item:stock:id: stock.getId(),json);}}
}API简介
InitializingBean
一定要实现其中的afterPropertiesSet()方法该方法会在创建Bean之后执行也就是项目启动的时候执行也就可以实现缓存预热效果了
ObjectMapper
spring自带的json序列化工具
8.查询Redis缓存 9.Nginx本地缓存