分布式项目技术点

343 阅读2分钟

1.单点登录

1.1 什么是单点登录

单点登录: 一次登录多次使用 前提: 单点登录多使用在分布式系统中

image.png

1.2 Demo

参观动物园过程:

  • 直接去动物园,则会被直接拦下[查看是否有门票],没有则去售票处买票
    • 登录 = 买票
  • 我去买票[持有门票,准备进入] 检票员check
    • Token = 门票
  • 我们持有票就可以参观

2.购物车

2.1 购物车定义

  • 购物车与用户之间的关系
    • 一个用户必须对应一个购物车(一个用户不管买多少商品,都会存在属于自己的购物车中)
    • 单点登录一定在购物车之前
  • 跟购物车有关的操作由哪些
    • 添加购物车
      • 用户未登录状态
        • 添加到什么地方?未登录将数据保存到什么地方
          • Redis中 --- 京东
          • Cookie中 --- 自己开发可以使用
          • 如果禁用了Cookie 可以存放在localstorege中
      • 用户登录状态
        • Redis缓存中(读写速度快)
          • Hash: hset存储 (key , field , value)
            • Key : user : userID cart
            • Hset(Key , skuID , value)
        • 存在数据库中(oracle , mysql) 保证数据安全性
    • 展示购物车
      • 未登录状态展示
        • 直接从cookie中取得数据展示即可
      • 登录状态展示
        • 用户一旦登录: 必须显示数据库(Redis) + Cookie中的购物车的数据
          • Cookie中有3条记录
          • Redis中有5条
          • 真正展示的应该是8条

3.消息队列

3.1 背景

在分布式系统中是如何处理高并发的

  • 由于在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞

    • 大量的Insert,update之类的请求同时到达数据库MySQL,直接导致无数的行锁表锁,甚至会导致请求堆积很多,从而触发too many connections 错误。使用消息队列的异步通信可以解决
  • 异步 image.png

  • 并行 image.png

  • 排队 image.png

  • 使用场景:

image.png

  • 消息队列的弊端:
    • 消息的不确定性: 采用延迟队列,轮询技术来解决问题即可