单点登录: 一处登录,多处使用
单点登录多使用在分布式系统中
购物车实现的过程
1、 用户未登录状态
数据添加到上面地方?未登录将数据保存到什么地方?
可以保存到redis中 注意:这里就和前面的redis的应用场景结合起来了
前面介绍了redis的使用场景
我们这里就使用Hash : hset(key , field , value)
key : 是 user + userid + cart 表示某个用户的购物车
field : 是skuID ,表示的是哪一个商品
value: 是商品的详细信息
速度快,也可以存储在Cookie中
2、用户登录的状态
存储到redis缓存中,存储到数据库中
3、展示购物车
未登录的状态:直接从cookie中取得数据展示即可
登录状态
用户登录之后,必须显示数据库【redis】+cookie中的购物车数据
消息队列在项目中的使用
在分布式系统中是如何处理高并发的?
在高并发环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞。比如说,大量的insert请求和update请求同时到达数据库Mysql,直接导致无数的行锁和表锁,甚至会导致请求堆积很多。从而触发too many connections 错误。使用消息队列可以解决【异步通信】
同步操作 需要 完成 写数据库、发送短信通知、更新缓存三个操作之后才是一个业务的完成
异步操作则是 我们在将写数据库并发送消息队列的同时,我们将消息发送到消息队列中,然后我们就返回用户说我们已经完成了业务。
实际上我们的消息队列中的消息此时并没有进行下步的操作,并没有发送通知和更新缓存的操作,这两步操作是等到后面才进行的,这就是 异步
高并发 :
消息队列在电商的使用场景
消息队列的弊端
这个很重要,消息对列的弊端会引出新的技术
消息的不确定性:
订单模块不确定,订单是否支付成功,需要去
延迟队列,轮询技术解决消息的不确定性
推荐使用activeMq,环境都是java写的