随笔分类 -  谷粒商城

摘要:应用场景 高并发场景下, 避免大量请求打到服务器中导致服务器导致服务器崩溃, 可以将请求存储到消息队列中, 处理时每次从队列中获取几个请求进行处理, 这样就实现了削峰. 应用解耦, 当一个服务调用多个服务时, 耦合度较高, 如果被调用服务接口发生更改, 那么服务调用者代码也得进行修改, 如果引入消息 阅读全文
posted @ 2022-05-21 21:20 RainbowMagic 阅读(29) 评论(0) 推荐(0) 编辑
摘要:登录流程 首先根据用户名密码对用户进行匹配,如果能匹配通过表示登录成功 由于密码是由MD5加密算法进行加密的, 所以校验时要对用户密码进行加密然后再进行匹配 登录成功之后将使用UUID生成token用于标识用户已登录状态 之后将token与用户昵称返回到前端中, 前端将token存储到cookie中 阅读全文
posted @ 2022-05-13 18:30 RainbowMagic 阅读(798) 评论(0) 推荐(0) 编辑
摘要:实体类分析 首先在商品详情页要获取的数据有如下被框住的部分: 首先是商品详情 分为商品商品名称 商品价格 默认图片 其次是商品图片 在然后是商品规格属性如颜色和版本 最后还有商品是否有货 还有商品介绍图以及规格 最后的实体类如下所示 public class ItemVO { // 商品信息 pri 阅读全文
posted @ 2022-05-10 16:25 RainbowMagic 阅读(246) 评论(0) 推荐(0) 编辑
摘要:创建线程的三种方法 继承Thread类 使用时直接new 该实现类然后执行start方法便可以运行线程. public void testSearchService() throws ExecutionException, InterruptedException { new ThreadTest( 阅读全文
posted @ 2022-05-07 14:52 RainbowMagic 阅读(113) 评论(0) 推荐(0) 编辑
摘要:登录流程 访问业务前首先判断用户是否携带token 如果未携带或token不合法则跳转至登录页面 填写登录信息后会生成token并将token存储到cookie中, 并跳转至之前的业务页面,, 后续访问业务页面则跳转登录页面,因为token已经存储到cookie中. 阅读全文
posted @ 2022-05-03 11:50 RainbowMagic 阅读(17) 评论(0) 推荐(0) 编辑
摘要:搜索json如下 Java api拼接查询如下 可以看到SearchRequest中是有数据的 执行搜索却没用结果不到 只有一个nested聚合对象 解决方法: 将elasticsearch-java 升级到8.1.2 问题解决 阅读全文
posted @ 2022-04-15 20:22 RainbowMagic 阅读(302) 评论(0) 推荐(0) 编辑
摘要:分析 因为搜索服务有多种查询条件,所以要使用bool查询来构造查询条件, 全文检索使用must条件,因为要记录查询分数, 不进行全文检索的条件 使用filter查询, 因为filter不进行分数统计,这样查询比较快些. 关键字查询 这个参数为全文检索条件, 根据tiitle检索商品 { "query 阅读全文
posted @ 2022-04-03 22:52 RainbowMagic 阅读(17) 评论(0) 推荐(0) 编辑
摘要:商品查询页面如下 搜索框查询 首先我们可以根据搜索框的内容进行全文检索 查询方式: keywrod=xxx 分类查询 然后我们可以根据首页传入的三级分类的id进行商品查询 查询方式: catalog3Id=xxx 排序 因为排序方式可以根据多种方式进行查询 如综合排序 销量 价格 定义多个字段过于冗 阅读全文
posted @ 2022-03-27 11:55 RainbowMagic 阅读(51) 评论(0) 推荐(0) 编辑
摘要:基础概念 有CacheManager来管理缓存 缓存管理器中根据不同的业务来将不同的缓存进行分区 源码 可以查看CacheAutoConfiguration来查看spring cache自动配置了哪些东西 CacheProperties.class类中保存spring cache在yaml或prop 阅读全文
posted @ 2022-03-15 21:30 RainbowMagic 阅读(129) 评论(0) 推荐(0) 编辑
摘要:锁的粒度 锁的粒度越小 对业务影响的越小 双写模式 写数据库是一并将缓存进行更新 但在高并发下会出现一点问题 这里有两个请求 首先请求一进去了 将数据修改完毕 因为一些原因卡住了 这时候请求二进入 将数据修改哭数据修改完毕顺便将缓存修改完了 这时候请求一才将缓存修改完毕 这时候缓存中的数据和数据库中 阅读全文
posted @ 2022-02-24 15:49 RainbowMagic 阅读(56) 评论(0) 推荐(0) 编辑
摘要:环境搭建 导入pom包 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.16.8</version> </dependency> 创建redisson客户端 根据文档提 阅读全文
posted @ 2022-02-23 10:04 RainbowMagic 阅读(704) 评论(0) 推荐(0) 编辑
摘要:基本原理 所有的服务从redis中插入数据 若插入成功 则表示拿到锁 则可以进行数据库操作 若插入失败 则未拿到锁 则不可以进行插入操作 可以使用redis SET key value [EX seconds] [PX milliseconds] [NX|XX] 命令 EX seconds – 设置 阅读全文
posted @ 2022-02-21 19:19 RainbowMagic 阅读(23) 评论(0) 推荐(0) 编辑
摘要:产生缓存击穿的原因 发生缓存击穿的原因是在高并发场景下 大量请求访问一个已失效数据 频繁访问数据库 导致数据库宕机 解决方案 可以引入本地锁 因为在springboot 容器中的bean都是单例 所以只要锁住当前对象即可 在进行缓存查询时 若发现在缓存中数据不存在 去数据库中查询 在数据库查询时添加 阅读全文
posted @ 2022-02-21 17:25 RainbowMagic 阅读(78) 评论(0) 推荐(0) 编辑
摘要:缓存雪崩 在某一时刻 大量缓存在同一时刻失效 导致大量请求打到数据库中 将数据库打摊 解决方案: 将缓存失效时间随机设置到1-5分钟内 这样就避免了在 一段时间内 缓存数据大量失效 缓存击穿 类似缓存雪崩 不同的是缓存穿透是由单个数据失效 高并发场景下 大量请求打到数据库中 导致数据库宕机 解决方案 阅读全文
posted @ 2022-02-21 10:36 RainbowMagic 阅读(25) 评论(0) 推荐(0) 编辑
摘要:缓存的访问流程 redis中查询缓存数据 若不存在则进行数据库查询并将缓存数据存入redis中 若存在在直接进行放回 引入缓存 首先导入spring-data-redis的pom包 <dependency> <groupId>org.springframework.boot</groupId> <a 阅读全文
posted @ 2022-02-21 10:05 RainbowMagic 阅读(25) 评论(0) 推荐(0) 编辑
摘要:缓存概述 为什么要使用缓存 因为系统已经无法从优化业务代码的角度去优化系统了 为了提高系统的性能 可以将对数据一直性不高和不会频繁修改的数据存入缓存中 避免频繁访问数据库 以此来优化性能 缓存使用流程 首先去缓存中查询如果没有再从数据库中查询并保存至缓存中 如果有直接返回 本地缓存 可以在项目中新建 阅读全文
posted @ 2022-02-18 11:34 RainbowMagic 阅读(93) 评论(0) 推荐(0) 编辑
摘要:为什么要进行压力测试 为了找出系统中最高的瓶颈 使系统稳定运行 未来找出一些错误 如并非和内存泄漏 产生内存泄漏的原因是系统中new了大量对象而未进行复用 性能指标 响应时间: 客户端发起请求 服务端响应所花费的时间 tps: 每秒所处理的交易数 所谓的交易数可以理解为一个业务功能 如下订单, 下订 阅读全文
posted @ 2022-02-16 14:25 RainbowMagic 阅读(115) 评论(0) 推荐(0) 编辑
摘要:1. nginx配置文件的组成 nginx 由以下几部分组成 2. nginx 反向代理的使用 proxy_pass指令可以根据规则代理到proxy_pass后的url地址 server_name 用于定义哪些url使用此规则 将gulimaill.com 下所有请求进行代理 负载均衡语法如下 up 阅读全文
posted @ 2022-02-15 16:42 RainbowMagic 阅读(51) 评论(0) 推荐(0) 编辑
摘要:微服务项目部署 将静态资源部署到nginx中 以减轻微服务的并发压力 根据nginx反向代理 将请求转发到网关中 这样做的好处是增强了安全性 避免暴露网关接口和减轻微服务的压力 渲染首页 由以下操作: 导入thymeleaf模板引擎 关闭thymeleaf cache并导入静态资源和html 静态资 阅读全文
posted @ 2022-02-15 15:46 RainbowMagic 阅读(334) 评论(0) 推荐(0) 编辑
摘要:一. 业务思路 根据es mapping创建java entity 根据spuId 查询到sku列表 根据查询到的sku列表 将sku值映射到 第一步创建的java entity中 设置商品热度 热度服务hotScore 先初始化为0 之后再拓展 第三步查询到的sku中有保存brandId 根据br 阅读全文
posted @ 2022-02-12 23:28 RainbowMagic 阅读(113) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示