如何在用户长时间未登录时处理保存在Redis中的购物车数据?

6个月前 (11-28 15:39)阅读2回复0
玛丽儿
玛丽儿
  • 管理员
  • 注册排名2
  • 经验值642080
  • 级别管理员
  • 主题128416
  • 回复0
楼主
购物车存到redis中,如果用户长时间用户不登录,怎么处理购物车里面的商品?

参考京东或者 *** ,你就会发现,购物车里得商品只有主动删除或者下单才会被删除的! 这就要求每次刷新购物车的时候都需要取出redis里面存放得基础数据,去刷新商品的状态,比如下线或者卖完了,就可以展示商品对应的状态 如果存入Redis是需要持久化的

什么是分布式系统,分布式系统例子?

现在的系统大部分都采用了分布式架构!下面通俗易懂的说下分布式到底是什么?

一开始互联网的应用服务比较单一(比如就只是提供一个天气状况接口),在访问量低,功能没有进一步增加的时候,运行也算是稳定!

但是随着经济发展和互联网的普及,互联网用户越来越多,原来每天几千几万的服务调用,变成了几百万甚至几千万!而且为了应付不同用户的业务需求和抓住用户,更多的功能不断增加!

购物车存到redis中,如果用户长时间用户不登录,怎么处理购物车里面的商品?


比如原来每次用户请求,你的内存只需要100k,现在做的秒杀系统,同时会有几百万的点击,也就是需要几十几百G的内存,一台机器远远处理不了这么大的数据,单一的系统处理模式语言更新换代了!

一台机器没有几十G的内存来处理数据,那么十台,百台呢?分布式由此诞生!

所谓分布式系统,就是把软件应用分布到不同的物理节点上,组成一个完整的对外应用系统!

分布式系统相比集中式系统具有速度快,可靠性强,可扩展性强,对用户透明的特性!

购物车存到redis中,如果用户长时间用户不登录,怎么处理购物车里面的商品?


既然从单一节点(同内存中处理),变为多节点处理(不同的机器,不同的ip,不同的内存),那么以前的单一系统的做法就需要进行升级!

比如下面的场景:

1,登录问题:以前的登录信息,session,ticket,认证等都放在一台服务器,但是现在不同的机器之间session等登录数据不再一个节点,可采用同一个redis集群,统一管理登录信息,应用服务器修改和查询都从redis中队列中获取!

2,服务调用:以前的服务都在一台服务器上,直接调用即可,但是现在必须使用rpc远程调用方式,根据数据传输http,tcp等协议,和不同的框架选择使用rmi,webservice,rest风格调用,zookeeper,consul等服务注册与发现架构!保证服务之间分布式调用!

购物车存到redis中,如果用户长时间用户不登录,怎么处理购物车里面的商品?


3,数据传输:以前数据传输都在同一个内存中进行,但是现在是不同的内存,所以需要诸如消息中间件等进行异步消息传递!

4,数据一致性:因为是不同的服务器,事务也是分布式的,如果使用强一致性,会影响分布式的性能,所以通常使用消息队列或者定时补偿等方式保证数据最终一致性!

5,分布式计算:将大量的互相之间有关系,却又可以解耦的计算分布到不同的机器上,提高整个系统的算力!比如hadoop,spark等大数据技术!

6,分布式调用安全性:分布式系统是跨服务器的,数据的传输具有隐患,所以需要保证数据的安全性,我们的系统通过使用AES算法加密和md5验签保证数据传输安全,有兴趣的可以私聊我!

7,日志问题:分布式系统的日志都在不同的机器上,如果出现生产问题需要一台机器一台机器逐一排查,所以必须使用分布式日志框架,集中处理日志!比如flume!

现在银行,保险,等等基本上业务量比较大的系统肯定都是分布实现的,所以这是作为程序员需要掌握的重要知识!如果你有碰到相关的问题,私信我,我们好好交流

0
回帖

如何在用户长时间未登录时处理保存在Redis中的购物车数据? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息