粒商城项目总结(二)-高级篇

P102-P127ES使用

九.业务代码:商品上架

P128.sku在es中存储模型分析

商品信息上架到Es中进行检索。
粒商城项目总结(二)-高级篇_第1张图片

P129.nested嵌入式数据模型处理

es扁平化处理

130.构建基本数据

传递商品上架Id到后端,后端查询数据上传到es中。
粒商城项目总结(二)-高级篇_第2张图片
粒商城项目总结(二)-高级篇_第3张图片
粒商城项目总结(二)-高级篇_第4张图片

P131.构建sku检索属性

sku的销售规格属性的集合

P132.远程查询库存,泛型结果进行封装

库存量等于总库存量减去锁定库存量;
粒商城项目总结(二)-高级篇_第5张图片

P133远程上架接口

调用远程接口实现添加sku数据
粒商城项目总结(二)-高级篇_第6张图片

P134上架接口调试,feign源码

粒商城项目总结(二)-高级篇_第7张图片

十、前端thymeleaf、nginx、性能压测

P136首页thymeleaf整合

粒商城项目总结(二)-高级篇_第8张图片
引pom,改yml(缓存关闭)
静态资源放在static包下面可以按照路径直径访问
页面放在template下,直接访问
SpringBoot访问时,默认找index页面

P137整合dev-tools渲染一级分类数据

粒商城项目总结(二)-高级篇_第9张图片

P138渲染二级三级分类数据

返回三级分类方法粒商城项目总结(二)-高级篇_第10张图片

P139搭建域名访问环境

粒商城项目总结(二)-高级篇_第11张图片

P140nginx搭建域名访问环境,负载均衡到网关

粒商城项目总结(二)-高级篇_第12张图片
粒商城项目总结(二)-高级篇_第13张图片
粒商城项目总结(二)-高级篇_第14张图片

P141-143压力测试

(1)主要关注三点:
吞吐量,每秒系统能处理的请求书、任务数。
响应时间,服务处理一个请求或者一个任务的耗时。
错误率:一批请求中结果出错所占比例
(2)JMeter压力测试
P144-150压力测试心梗监控与优化

粒商城项目总结(二)-高级篇_第15张图片
三级分类优化:由多次查询诗句库转为一次,优化业务逻辑

十一、缓存和分布式锁

P151.缓存使用

(1)哪些数据适合使用缓存?
即时性要求不高
访问量大且更新频率不高的数据
(2)本地复杂均衡缺点:
① 每个服务A缓存B没有缓存就要查数据库
②A服务丢该缓存,B服务接收不到通知

P152.redis缓存

pom.yml(地端口),使用注解使用

P153.redis改变三级分类粒商城项目总结(二)-高级篇_第16张图片

查询redis,没有就插入

P154.压力测试内存溢出

springboot2.0默认使用lettuce作为操作redis客户端,使用的netty网络通信,导致内存溢出。
解决:
(1)升级lettuce客户端
(2)切换使用jedis

P155.缓存击穿、穿透、雪崩

穿透:访问空数据->空结果缓存,设置短暂的过期时间
雪崩:大片数据同时失效,都访问数据库->缓存失效时间设置为随机
击穿:某个高频key失效,同时大量数据缓存->加锁,大量数据只允许一个去查,其他排队等待

P156加锁解决缓存击穿问题?

方案1:
加同步代码块
粒商城项目总结(二)-高级篇_第17张图片
粒商城项目总结(二)-高级篇_第18张图片

P157.本地锁分布式问题

只能锁住当前请求,不能锁住其他服务请求

P158.分布式锁原理与使用

粒商城项目总结(二)-高级篇_第19张图片
粒商城项目总结(二)-高级篇_第20张图片
设置锁过期时间 ,设置锁id1保证原子操作。
锁时间短10s,业务执行30s未完成,qos后删除第一个锁,下一个进程占用,10S进行删锁,删除的是第二个锁。
粒商城项目总结(二)-高级篇_第21张图片
粒商城项目总结(二)-高级篇_第22张图片

P159、分布式锁Redisson简介&整合

分布式锁解决方案功能。
pom
创建redisson分布式锁类
粒商城项目总结(二)-高级篇_第23张图片

P160lock锁 测试

1.可重用锁:A加1号锁,B发现1号锁,可进行重用
粒商城项目总结(二)-高级篇_第24张图片

161.redisson看门狗锁原理

粒商城项目总结(二)-高级篇_第25张图片

162.读写锁

读写锁相互等待
读锁是共享锁,写锁时互斥锁。只要有写锁就等待

P163.读写锁补充

P164闭锁测试

任务全部完成才算完成

P165信号量

三个车位,站车位,有车位可以停,没有不能停,也可以用作限流
P166缓存一致性
粒商城项目总结(二)-高级篇_第26张图片粒商城项目总结(二)-高级篇_第27张图片
粒商城项目总结(二)-高级篇_第28张图片

P167.SpringCache

粒商城项目总结(二)-高级篇_第29张图片

P168-169.整合springcache

粒商城项目总结(二)-高级篇_第30张图片
粒商城项目总结(二)-高级篇_第31张图片
粒商城项目总结(二)-高级篇_第32张图片

P170.springcache自定义缓存配置器

粒商城项目总结(二)-高级篇_第33张图片粒商城项目总结(二)-高级篇_第34张图片

P171.@CalieEvict和@Cacheable

P172.SpringCache原理不足

粒商城项目总结(二)-高级篇_第35张图片

十二.业务代码:检索服务

P173.检索服务页面搭建

nginx动静分离
粒商城项目总结(二)-高级篇_第36张图片

P174调整页面跳转

P175检索查询参数模型分析抽离

粒商城项目总结(二)-高级篇_第37张图片

176.返回检索模型抽离

粒商城项目总结(二)-高级篇_第38张图片粒商城项目总结(二)-高级篇_第39张图片

P177-178查询构建+聚合构建分析

P179.代码检索构建

粒商城项目总结(二)-高级篇_第40张图片

P180-181.构建检索

粒商城项目总结(二)-高级篇_第41张图片

P182-183构建结果验证正确性

粒商城项目总结(二)-高级篇_第42张图片

P184-192.页面结果渲染

页面渲染,分页渲染,分页排序,价格区间,面包屑导航,条件联动删除或增加

十二、异步线程池

P193线程复习

四种实现方式
继承Thread:不能得到返回值,不能控制资源
实现Runnable接口:不能得到返回值,不能控制资源
实现Callable接口+FutureTable(可以拿到返回结果,处理异常)::能得到返回值,不能控制资源
线程池::能得到返回值,能控制资源
创建:①Executors②new ThreadPoolExecutor
P194线程池详解
粒商城项目总结(二)-高级篇_第43张图片
粒商城项目总结(二)-高级篇_第44张图片

P195.CompletableFuture

为什么使用线程池?
降低资源消耗
提高响应速度
提高线程的可管理性
粒商城项目总结(二)-高级篇_第45张图片

P196.启动异步任务

粒商城项目总结(二)-高级篇_第46张图片

P197计算完成时回调方法

粒商城项目总结(二)-高级篇_第47张图片
粒商城项目总结(二)-高级篇_第48张图片

199.线程串行化

粒商城项目总结(二)-高级篇_第49张图片

200.两个任务组合

粒商城项目总结(二)-高级篇_第50张图片
粒商城项目总结(二)-高级篇_第51张图片

201.一个完成执行操作

粒商城项目总结(二)-高级篇_第52张图片
粒商城项目总结(二)-高级篇_第53张图片

202.多任务组合

粒商城项目总结(二)-高级篇_第54张图片

十三.业务代码:商品详情

P203商品详情环境搭建

网关修改,nginx动静分离修改

P204、模型抽取

粒商城项目总结(二)-高级篇_第55张图片
粒商城项目总结(二)-高级篇_第56张图片
粒商城项目总结(二)-高级篇_第57张图片

P205规格参数

粒商城项目总结(二)-高级篇_第58张图片

P206获取spu销售属性组合

P207商品详情属性渲染

P208商品SPU销售属性渲染

P209sku组合交换

P210异步编排信息

添加自己的线程池,可以把数据改为yml配置
粒商城项目总结(二)-高级篇_第59张图片
粒商城项目总结(二)-高级篇_第60张图片
粒商城项目总结(二)-高级篇_第61张图片

十四.认证服务

211认证服务环境搭建

新建模块,网关,nginx动静分离,

211验证码倒计时

粒商城项目总结(二)-高级篇_第62张图片
粒商城项目总结(二)-高级篇_第63张图片

P213整合短信验证码

前端调用后端,后端生成一个验证码给第三方验证码。
粒商城项目总结(二)-高级篇_第64张图片
粒商城项目总结(二)-高级篇_第65张图片

P214验证码防刷校验

粒商城项目总结(二)-高级篇_第66张图片

P215注册环境页

后端进行属性校验返回结果

P216异常机制

从redis获取验证码,验证验证码
粒商城项目总结(二)-高级篇_第67张图片
粒商城项目总结(二)-高级篇_第68张图片

P217密码加密处理

粒商城项目总结(二)-高级篇_第69张图片
粒商城项目总结(二)-高级篇_第70张图片
粒商城项目总结(二)-高级篇_第71张图片

218注册完成

219账户密码登录

P220社交登录OAuth2登录

粒商城项目总结(二)-高级篇_第72张图片

P221微博登录

超链接跳转到登录页
通过获取得到的code验证获取得到信息

P222社交登录回调

粒商城项目总结(二)-高级篇_第73张图片

223.社交登录完成

根据微博获取得到的信息完成注册。判断该第三方服务账户是否已经注册,没有进行注册,已经注册,返回信息。
粒商城项目总结(二)-高级篇_第74张图片

P224社交登录测试完成

P225分布式session不共享不同步问题

粒商城项目总结(二)-高级篇_第75张图片

P226分布式session解决

方案一:
粒商城项目总结(二)-高级篇_第76张图片
方案2:
粒商城项目总结(二)-高级篇_第77张图片
方案3
粒商城项目总结(二)-高级篇_第78张图片
粒商城项目总结(二)-高级篇_第79张图片

227.整合springSession

pom。yml。注解
yml指定session存储到redis
其他项目也整合springSession,取得session。
粒商城项目总结(二)-高级篇_第80张图片

228.完成session跨服务共享

粒商城项目总结(二)-高级篇_第81张图片

P229SpringSession原理

粒商城项目总结(二)-高级篇_第82张图片

P230页面效果完成

P231单点登录

一处登陆处处登录
粒商城项目总结(二)-高级篇_第83张图片

P232框架效果演示

P233-234 单点登录实现

中央认证服务器
粒商城项目总结(二)-高级篇_第84张图片
粒商城项目总结(二)-高级篇_第85张图片
粒商城项目总结(二)-高级篇_第86张图片
粒商城项目总结(二)-高级篇_第87张图片
粒商城项目总结(二)-高级篇_第88张图片

粒商城项目总结(二)-高级篇_第89张图片

粒商城项目总结(二)-高级篇_第90张图片
粒商城项目总结(二)-高级篇_第91张图片
粒商城项目总结(二)-高级篇_第92张图片

十五.业务代码:购物车服务

236.环境搭建

搭建模块,pom,nginx动静分离,网关路由

237.购物车数据模型分析

购物车储存进redis

238.VO模型抽取

粒商城项目总结(二)-高级篇_第93张图片
粒商城项目总结(二)-高级篇_第94张图片

239.ThreadLocal用户身份验证

ThreadLocal同一个线程共享数据

粒商城项目总结(二)-高级篇_第95张图片

粒商城项目总结(二)-高级篇_第96张图片
粒商城项目总结(二)-高级篇_第97张图片
粒商城项目总结(二)-高级篇_第98张图片

P240页面环境搭建

P241加入购物车

粒商城项目总结(二)-高级篇_第99张图片
粒商城项目总结(二)-高级篇_第100张图片

P242购物车添加细节

购物车如果有商品只添加数量

P243.RedirectAttribute

粒商城项目总结(二)-高级篇_第101张图片
244获取购物车合并购物车
粒商城项目总结(二)-高级篇_第102张图片

245.购物车选中项

246.改变购物车数量

P247.删除购物项

你可能感兴趣的:(谷粒商城,spring,cloud,架构,java)