一、开发过程中遇到难的问题
1.1、重复下单 (解决:redis锁 锁单)
场景:
在商城中,用户使用支付宝支付了,但是由于支付宝回调太慢,
网络延迟等原因,该用户又采用微信支付或者银行卡,导致用户会重复
支付该订单。
支付宝/微信不可以重复支付,具有重复机制
银行开没有重复机制
1.2、数据库与redis数据一致性 (下)
redis文章提到如何解决,请查看redis文章
1.3、数据库与es数据一致性 (下)
场景:
在商城中,当商家端发布一个A商品时,把商品存入数据库,然后把商品的id
存入到redis,通过订单任务来控制上下架的时间,那么就需要定时任务,
通过定时任务,再从redis里面把A商品的Id取出来 ,查询出A商品的信息再存入
redis。
如果此时有人把A商品的库存在数据库改变了,那么Es没有改变,就会导致不同
步,当有人改变A商品的时候,那么肯定知道A商品的ID,前段页面输入商品的ID
再跑一次程序即可解决
1.4、下单减库存、支付减库存 (下)
下单减库存:一些恶意者只下单不买,真正想买的人无法下单,因为下单被占用
支付减库存:会出现超卖的情况,同一个商品库存为1,那么两个人都同时购买,
两个人都可以付款成功,但是这里只会出现谁先买,后买者付钱无法有货。
解决:两种方式都存在,当商家发布商品时选择需要那种方式
1.5、京东商品库存无法确定准确库存
二、开发过程中遇到一般的问题
2.1、poi导出一次性10W条数据(版本高低)
2003版只能导出65000
2007版可以导出百万级
但是考虑到并发情况以及流的情况下,数据太多还可以使用分页导出
每页导出10000条,但对操作人员不方便
2.2、Jar包无法下载 华为云图片包、自己封转的jar包(解决:替换)
2.3、华为云上传图片失败
注入方式,不需要关闭流
创建 new一个对象 需要手动关闭流
2.4、全国站问题(城市分站、区分站)
在商城中,一开始按城市分站显示商品
但有些商品需要在每个城市都看到,那么出现全国站,
根据站点Id来控制全国站
2.5、Redis-session共享 session监听器处理过期问题、 分布式使用什么作为key
session的监听器去监听session是否过期,如果过期那么会到redis中删除该用户信息
后端返回一个自定义的ID存到cookie中,访问的时候携带cookie查询,那么用这个cookie的值作为key
2.6、全国地区问题,2017年与最新地区如何新增?
比如2018年有一份地区表,定位code码,但是有其他表已经使用地区表的主键Id,
比如重庆市 没有九龙坡区,需要新增,怎么办,如果数据太多怎么办?
后台一个一个的新增
通过代码,先下载一份最新的地区表,更具code码来查看那些不存在的地址,
可以使用list的removeAll方法查询差值
难就难在需要九龙坡上一级的重庆的主键Id作为九龙坡区的父Id