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的不足

  1. 读模式
  • 缓存穿透:查询一个null数据。解决: 缓存空数据 cache-null-values=true
  • 缓存击穿:大量并发进来同时查询一个正好过期的数据。解决:加锁 默认是不加锁的,加锁需要在@Cacheable里的 sync=true
  • 缓存雪崩: 大量的key同时过期。解决:加随机时间。
  1. 写模式 (缓存与数据库一致)
  • 读写加锁 (适用于读多写少的情况,如果写也多,效率会有影响)
  • 引入Cancal,感知mysql的更新去更新数据库
  • 读多写多的直接去查询数据库

9. 异步

线程的创建方式

  1. 继承Thread
  2. 实现Runnable接口
  3. 实现Callable接口 + FutureTask
  4. 线程池

线程池 Executors

异步编排 CompletableFuture

10. 盐值加密

11. SpringSession

社交登录

  1. 社交登录流程

    • 第3方社交登录开通、认证成功后的url
    • 社交认证成功会跳转到自定义的url,并携带一个code参数
    • 拿着这个code可以访问社交登录网站开放的api接口,获取用户的信息,进行注册
  2. 分布式session解决方案
    • SpringSession配置
    • Session的Domain设置解决session作用域的问题
      • 每一个服务都引入SpringSession
      • SpringSession会使用Filter拦截所有的请求
      • 通过SpringSession设置请求的session作用域(一般设置为顶级域名)

单点登录

  1. 为了解决不同顶级域名之间的session共享,需要使用单点登录
  2. 需要一个单独的认证服务,用于多个顶级域名不同的系统之间认证
  3. 当访问其中一个系统时,会检查当前用户是否登录,如果未登录,会自动跳转到单独的认证服务进行登录认证,并携带认证完成需要重定向返回页面url
  4. 认证完成,会重定向到指定的页面,并将生成的token返回给业务系统
  5. 后续业务系统的任何请求,都会携带该token,从而跳过认证过程,直接获取资源
    参考

项目学习--谷粒商城相关推荐

  1. 尚硅谷2020微服务分布式电商项目《谷粒商城》学习笔记

    尚硅谷2020微服务分布式电商项目<谷粒商城> 项目简介 资料 百度云 链接:https://pan.baidu.com/s/1eGCTi6pLtKbDCwBs-zCOzQ 提取码:1pm ...

  2. 第四章 :JavaEE项目之“谷粒商城” ----快速开发

    第四章 :JavaEE项目之"谷粒商城" ----快速开发 目录 第四章 :JavaEE项目之"谷粒商城" ----快速开发 一.人人开源搭建后台管理系统 (1 ...

  3. 尚硅谷2020微服务分布式电商项目《谷粒商城》-支付、秒杀

    学习更多的知识,整理不易,拒绝白嫖,记得三连哦 关注公众号:java星星 获取全套课件资料 1. 支付 订单搞定之后就是支付了,首先搭建支付工程. 1.1. 搭建环境 pom.xml <?xml ...

  4. 尚硅谷2020微服务分布式电商项目《谷粒商城》-商品搜索

    关注公众号:java星星 获取全套课件资料 1. 导入商品数据 1.1. 搭建搜索工程 pom.xml内容如下: <?xml version="1.0" encoding=& ...

  5. 微服务分布式电商项目《谷粒商城》学习笔记

    文章目录 一.基本架构图 二.配置 三.项目搭建 四.数据库 1.开启虚拟机,在windows下通过navicat连接上 2.人人开源:https://gitee.com/renrenio 五.微服务 ...

  6. 尚硅谷2020微服务分布式电商项目《谷粒商城》-单点登录(jwt)

    学习更多的知识,整理不易,拒绝白嫖,记得三连哦 关注公众号:java星星 获取全套课件资料 1. 用户管理提供数据接口 1.1. 数据验证功能 根据接口文档知: 请求方式:GET 请求路径:check ...

  7. 项目学习 —— 图书商城后台管理

    查询.修改.删除数据库中数据. 一. 创建数据库和表 在数据库studyproject下创建一个book表 CREATE TABLE `studyproject`.`book` (`id` INT N ...

  8. 简单介绍一下谷粒商城这个项目。

    谷粒商城(Gulimall)是一个基于 Spring Boot 和 Vue.js 的电子商务项目.通过学习和实践谷粒商城项目,您可以掌握许多有关 Web 开发.电子商务和技术栈的知识.以下是一些值得学 ...

  9. 谷粒商城学习时遇到的一些问题

    1.问题1-Uncaught (in promise) TypeError: Cannot read property 'xx' of null 1.问题描述   今天在测试将数据保存到ES中时,在& ...

最新文章

  1. 为什么大部分人做不了架构师?
  2. python的文件类型
  3. 糟糕!服务器被植入挖矿木马,CPU 飙升200%。。。
  4. 实战:Nginx集成Lua脚本并调用memcached
  5. 【MFC】自绘对话框动画效果的状态栏
  6. bkwin设置文本控件为多行模式
  7. js设置select列表中特定项为选中状态
  8. python本地编译器_Python学习札记(0)——Python开发环境搭载及推荐几款Python编译器...
  9. Docker Harbor 2.3.4 集群 双主复制高可用镜像仓库
  10. 如何在RTSP/RTMP直播过程中加入SEI扩展数据发送和接收解析
  11. detachedcriteria查询去重_sql的简单查询
  12. 设计模式学习之策略模式(Strategy,行为型模式)(13)
  13. BigDecimal 加减乘除 | 比较大小 | 取最大最小值 | 保留小数位 |转String
  14. php 日志库,这可能是php世界中最好的日志库——monolog
  15. 12个你值得拥有的虚拟科学实验APP、工具和资源
  16. TiDB学习笔记(七)-数据库系统优化
  17. ARM Neon Intrinsics 学习指北:从入门、进阶到学个通透
  18. php使用fleaphp框架做开发。
  19. 【Hadoop】Build and Execute
  20. 自古深情留不住,总是套路得人心!带你吊打面试官...

热门文章

  1. 非常详细的Series核心操作使用详解
  2. 晨跑、午后跑和夜跑对身体的影响及优缺点
  3. 第2次实验——算法基本功 与 综合思考
  4. 3分钟短文:Laravel的“南天门”,过滤掉七七八八的数据
  5. ue4 项目模板_Unreal 学习和使用UE4的第二步——创建项目和模板试玩 - 游戏编程 ️...
  6. 1044 mysql_MYSQL 有ERROR 1044
  7. 象棋里的天地炮与重炮
  8. 【华为校园招聘】2019春实习模拟试卷 软件题demo
  9. 〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径
  10. excel透视表 统计结果 累加