项目学习--谷粒商城
1. 微服务搭建
本地安装虚拟机,静态IP划分和docker的使用
微服务功能模块介绍以及业务模块划分与抽取
2. 前端搭建
3. 后端业务代码完善
云储存OSS的整合与使用
JSR303校验以及自定义分组校验
统一异常拦截处理和返回json格式
4. Elasticsearch学习
Elasticsearch的基础使用
Elasticsearch字段match、嵌套聚合,字段类型mapping
分词器使用,结合nginx
Java代码整合Elasticsearch,完成业务数据封装后上传ElasticSearch建立索引
5. Nginx反向代理
域名先通过本地host文件映射到Nginx,Nginx将请求负载到业务网关,业务网关根据网关断言将请求分发到具体服务
6. 压力测试与JVM调优
QPS(Query ),TPS (Transport)概念了解
JMeter的使用,指定时间指定线程数对接口进行测试,以及测试结果观察
JVM了解,堆区gc流程:
- 老年代
- 新生代
- 伊甸园区
- 大GC,小GC
7. 缓存-Redis
缓存穿透(一直查不存在的数据)–null结果缓存,并加入短暂过期时间
缓存雪崩(相同时间大批key失效)–原有失效时间的基础上增加一个随机值,减少集体失效的事件
缓存击穿(热点数据失效)–加锁
本地锁–synchronized
本地Redis锁-- set key nx ex
- 设置过期时间,必须和加锁是同步的,原子的 (setIfAbsent)
- 获取值对比+对比成功删除=原子操作 (Lua脚本)
- 其他线程自旋锁
分布式Redis锁–Redisson
- 阻塞式等待,默认加锁都是30秒 Rlock.lock()
- 默认的lock方法会自动续期,使用看门狗机制,定时任务每1/3(10秒)的看门狗时间自动续期
- 如果lock中指定了过期时间,则看门狗机制失效
- 可重入锁:A方法拿到α锁,调用B方法,B方法也需要获取α锁,可重入锁允许B直接使用A的锁
- 公平锁
- 读写锁
- 修改数据期间,写锁是一个排他锁(互斥锁),只要写锁存在,读锁就必须存在
- 读锁是共享锁,在仅是读数据期间,好似无锁一样
- 信号量 redisson.getSemaphore
- 闭锁 countDownLartch
- RCountDownlatch.await 等待指定数量的线程countDown(数量-1)以后,才继续执行后续代码
- 缓存数据一致性
- 双写模式–可能导致数据脏读,多个线程对同一个数据进行修改时,写缓存的顺序和修改数据库数据的时序不一致
- 双写模式可以通过设置数据过期时间来达到最终一致性,当缓存里的错误数据过期后会重新从数据库缓存最新在正确的数据
8. SpringCache
@Cacheable: Triggers cache population. 触发将数据保存到缓存的操作
@CacheEvict: Triggers cache eviction. 触发将数据从缓存删除的操作
@CachePut: Updates the cache without interfering with the method execution. 不影响方法执行
@Caching: Regroups multiple cache operations to be applied on a method. 组合以上多个操作
@CacheConfig: Shares some common cache-related settings at class-level. 在类级别共享缓存的相同
SpringCache的不足
- 读模式
- 缓存穿透:查询一个null数据。解决: 缓存空数据 cache-null-values=true
- 缓存击穿:大量并发进来同时查询一个正好过期的数据。解决:加锁 默认是不加锁的,加锁需要在@Cacheable里的 sync=true
- 缓存雪崩: 大量的key同时过期。解决:加随机时间。
- 写模式 (缓存与数据库一致)
- 读写加锁 (适用于读多写少的情况,如果写也多,效率会有影响)
- 引入Cancal,感知mysql的更新去更新数据库
- 读多写多的直接去查询数据库
9. 异步
线程的创建方式
- 继承Thread
- 实现Runnable接口
- 实现Callable接口 + FutureTask
- 线程池
线程池 Executors
异步编排 CompletableFuture
10. 盐值加密
11. SpringSession
社交登录
- 社交登录流程
- 第3方社交登录开通、认证成功后的url
- 社交认证成功会跳转到自定义的url,并携带一个code参数
- 拿着这个code可以访问社交登录网站开放的api接口,获取用户的信息,进行注册
- 分布式session解决方案
- SpringSession配置
- Session的Domain设置解决session作用域的问题
- 每一个服务都引入SpringSession
- SpringSession会使用Filter拦截所有的请求
- 通过SpringSession设置请求的session作用域(一般设置为顶级域名)
单点登录
- 为了解决不同顶级域名之间的session共享,需要使用单点登录
- 需要一个单独的认证服务,用于多个顶级域名不同的系统之间认证
- 当访问其中一个系统时,会检查当前用户是否登录,如果未登录,会自动跳转到单独的认证服务进行登录认证,并携带认证完成需要重定向返回页面url
- 认证完成,会重定向到指定的页面,并将生成的token返回给业务系统
- 后续业务系统的任何请求,都会携带该token,从而跳过认证过程,直接获取资源
参考
项目学习--谷粒商城相关推荐
- 尚硅谷2020微服务分布式电商项目《谷粒商城》学习笔记
尚硅谷2020微服务分布式电商项目<谷粒商城> 项目简介 资料 百度云 链接:https://pan.baidu.com/s/1eGCTi6pLtKbDCwBs-zCOzQ 提取码:1pm ...
- 第四章 :JavaEE项目之“谷粒商城” ----快速开发
第四章 :JavaEE项目之"谷粒商城" ----快速开发 目录 第四章 :JavaEE项目之"谷粒商城" ----快速开发 一.人人开源搭建后台管理系统 (1 ...
- 尚硅谷2020微服务分布式电商项目《谷粒商城》-支付、秒杀
学习更多的知识,整理不易,拒绝白嫖,记得三连哦 关注公众号:java星星 获取全套课件资料 1. 支付 订单搞定之后就是支付了,首先搭建支付工程. 1.1. 搭建环境 pom.xml <?xml ...
- 尚硅谷2020微服务分布式电商项目《谷粒商城》-商品搜索
关注公众号:java星星 获取全套课件资料 1. 导入商品数据 1.1. 搭建搜索工程 pom.xml内容如下: <?xml version="1.0" encoding=& ...
- 微服务分布式电商项目《谷粒商城》学习笔记
文章目录 一.基本架构图 二.配置 三.项目搭建 四.数据库 1.开启虚拟机,在windows下通过navicat连接上 2.人人开源:https://gitee.com/renrenio 五.微服务 ...
- 尚硅谷2020微服务分布式电商项目《谷粒商城》-单点登录(jwt)
学习更多的知识,整理不易,拒绝白嫖,记得三连哦 关注公众号:java星星 获取全套课件资料 1. 用户管理提供数据接口 1.1. 数据验证功能 根据接口文档知: 请求方式:GET 请求路径:check ...
- 项目学习 —— 图书商城后台管理
查询.修改.删除数据库中数据. 一. 创建数据库和表 在数据库studyproject下创建一个book表 CREATE TABLE `studyproject`.`book` (`id` INT N ...
- 简单介绍一下谷粒商城这个项目。
谷粒商城(Gulimall)是一个基于 Spring Boot 和 Vue.js 的电子商务项目.通过学习和实践谷粒商城项目,您可以掌握许多有关 Web 开发.电子商务和技术栈的知识.以下是一些值得学 ...
- 谷粒商城学习时遇到的一些问题
1.问题1-Uncaught (in promise) TypeError: Cannot read property 'xx' of null 1.问题描述 今天在测试将数据保存到ES中时,在& ...
最新文章
- 为什么大部分人做不了架构师?
- python的文件类型
- 糟糕!服务器被植入挖矿木马,CPU 飙升200%。。。
- 实战:Nginx集成Lua脚本并调用memcached
- 【MFC】自绘对话框动画效果的状态栏
- bkwin设置文本控件为多行模式
- js设置select列表中特定项为选中状态
- python本地编译器_Python学习札记(0)——Python开发环境搭载及推荐几款Python编译器...
- Docker Harbor 2.3.4 集群 双主复制高可用镜像仓库
- 如何在RTSP/RTMP直播过程中加入SEI扩展数据发送和接收解析
- detachedcriteria查询去重_sql的简单查询
- 设计模式学习之策略模式(Strategy,行为型模式)(13)
- BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数位 |转String
- php 日志库,这可能是php世界中最好的日志库——monolog
- 12个你值得拥有的虚拟科学实验APP、工具和资源
- TiDB学习笔记(七)-数据库系统优化
- ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
- php使用fleaphp框架做开发。
- 【Hadoop】Build and Execute
- 自古深情留不住,总是套路得人心!带你吊打面试官...
热门文章
- 非常详细的Series核心操作使用详解
- 晨跑、午后跑和夜跑对身体的影响及优缺点
- 第2次实验——算法基本功 与 综合思考
- 3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据
- ue4 项目模板_Unreal 学习和使用UE4的第二步——创建项目和模板试玩 - 游戏编程 ️...
- 1044 mysql_MYSQL 有ERROR 1044
- 象棋里的天地炮与重炮
- 【华为校园招聘】2019春实习模拟试卷 软件题demo
- 〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径
- excel透视表 统计结果 累加