P102-P127ES使用
九.业务代码:商品上架
P128.sku在es中存储模型分析
商品信息上架到Es中进行检索。
P129.nested嵌入式数据模型处理
130.构建基本数据
传递商品上架Id到后端,后端查询数据上传到es中。
P131.构建sku检索属性
sku的销售规格属性的集合
P132.远程查询库存,泛型结果进行封装
库存量等于总库存量减去锁定库存量;
P133远程上架接口
调用远程接口实现添加sku数据
P134上架接口调试,feign源码
十、前端thymeleaf、nginx、性能压测
P136首页thymeleaf整合
引pom,改yml(缓存关闭)
静态资源放在static包下面可以按照路径直径访问
页面放在template下,直接访问
SpringBoot访问时,默认找index页面
P137整合dev-tools渲染一级分类数据
P138渲染二级三级分类数据
P139搭建域名访问环境
P140nginx搭建域名访问环境,负载均衡到网关
P141-143压力测试
(1)主要关注三点:
吞吐量,每秒系统能处理的请求书、任务数。
响应时间,服务处理一个请求或者一个任务的耗时。
错误率:一批请求中结果出错所占比例
(2)JMeter压力测试
P144-150压力测试心梗监控与优化
三级分类优化:由多次查询诗句库转为一次,优化业务逻辑
十一、缓存和分布式锁
P151.缓存使用
(1)哪些数据适合使用缓存?
即时性要求不高
访问量大且更新频率不高的数据
(2)本地复杂均衡缺点:
① 每个服务A缓存B没有缓存就要查数据库
②A服务丢该缓存,B服务接收不到通知
P152.redis缓存
pom.yml(地端口),使用注解使用
P153.redis改变三级分类
查询redis,没有就插入
P154.压力测试内存溢出
springboot2.0默认使用lettuce作为操作redis客户端,使用的netty网络通信,导致内存溢出。
解决:
(1)升级lettuce客户端
(2)切换使用jedis
P155.缓存击穿、穿透、雪崩
穿透:访问空数据->空结果缓存,设置短暂的过期时间
雪崩:大片数据同时失效,都访问数据库->缓存失效时间设置为随机
击穿:某个高频key失效,同时大量数据缓存->加锁,大量数据只允许一个去查,其他排队等待
P156加锁解决缓存击穿问题?
方案1:
加同步代码块
P157.本地锁分布式问题
只能锁住当前请求,不能锁住其他服务请求
P158.分布式锁原理与使用
设置锁过期时间 ,设置锁id1保证原子操作。
锁时间短10s,业务执行30s未完成,qos后删除第一个锁,下一个进程占用,10S进行删锁,删除的是第二个锁。
P159、分布式锁Redisson简介&整合
分布式锁解决方案功能。
pom
创建redisson分布式锁类
P160lock锁 测试
1.可重用锁:A加1号锁,B发现1号锁,可进行重用
161.redisson看门狗锁原理
162.读写锁
读写锁相互等待
读锁是共享锁,写锁时互斥锁。只要有写锁就等待
P163.读写锁补充
P164闭锁测试
任务全部完成才算完成
P165信号量
三个车位,站车位,有车位可以停,没有不能停,也可以用作限流
P166缓存一致性
P167.SpringCache
P168-169.整合springcache
P170.springcache自定义缓存配置器
P171.@CalieEvict和@Cacheable
P172.SpringCache原理不足
十二.业务代码:检索服务
P173.检索服务页面搭建
nginx动静分离
P174调整页面跳转
P175检索查询参数模型分析抽离
176.返回检索模型抽离
P177-178查询构建+聚合构建分析
P179.代码检索构建
P180-181.构建检索
P182-183构建结果验证正确性
P184-192.页面结果渲染
页面渲染,分页渲染,分页排序,价格区间,面包屑导航,条件联动删除或增加
十二、异步线程池
P193线程复习
四种实现方式
继承Thread:不能得到返回值,不能控制资源
实现Runnable接口:不能得到返回值,不能控制资源
实现Callable接口+FutureTable(可以拿到返回结果,处理异常)::能得到返回值,不能控制资源
线程池::能得到返回值,能控制资源
创建:①Executors②new ThreadPoolExecutor
P194线程池详解
P195.CompletableFuture
为什么使用线程池?
降低资源消耗
提高响应速度
提高线程的可管理性
P196.启动异步任务
P197计算完成时回调方法
199.线程串行化
200.两个任务组合
201.一个完成执行操作
202.多任务组合
十三.业务代码:商品详情
P203商品详情环境搭建
网关修改,nginx动静分离修改
P204、模型抽取
P205规格参数
P206获取spu销售属性组合
P207商品详情属性渲染
P208商品SPU销售属性渲染
P209sku组合交换
P210异步编排信息
添加自己的线程池,可以把数据改为yml配置
十四.认证服务
211认证服务环境搭建
新建模块,网关,nginx动静分离,
211验证码倒计时
P213整合短信验证码
前端调用后端,后端生成一个验证码给第三方验证码。
P214验证码防刷校验
P215注册环境页
后端进行属性校验返回结果
P216异常机制
从redis获取验证码,验证验证码
P217密码加密处理
218注册完成
219账户密码登录
P220社交登录OAuth2登录
P221微博登录
超链接跳转到登录页
通过获取得到的code验证获取得到信息
P222社交登录回调
223.社交登录完成
根据微博获取得到的信息完成注册。判断该第三方服务账户是否已经注册,没有进行注册,已经注册,返回信息。
P224社交登录测试完成
P225分布式session不共享不同步问题
P226分布式session解决
方案一:
方案2:
方案3
227.整合springSession
pom。yml。注解
yml指定session存储到redis
其他项目也整合springSession,取得session。
228.完成session跨服务共享
P229SpringSession原理
P230页面效果完成
P231单点登录
一处登陆处处登录
P232框架效果演示
P233-234 单点登录实现
中央认证服务器
十五.业务代码:购物车服务
236.环境搭建
搭建模块,pom,nginx动静分离,网关路由
237.购物车数据模型分析
购物车储存进redis
238.VO模型抽取
239.ThreadLocal用户身份验证
ThreadLocal同一个线程共享数据
P240页面环境搭建
P241加入购物车
P242购物车添加细节
购物车如果有商品只添加数量
P243.RedirectAttribute
244获取购物车合并购物车