【问题梳理】

问题梳理

1. 项目中有哪些难点、挑战

难点:设备的命令的不确定性;设备的不稳定性。比如开门不发指令,心跳的自我保护机制

难点:设备的一些网络状态、命令的不稳定性

2. 发出一个开门指令,它不回复我们门是开的还是关的

多次查询,如果多次都没有结果,把订单的仓门状态设置为异常,并通知运营人员。

3. 把门打开,拿了一个东西,放进去一个相同重量的东西

补货员补货的时候发现有不属于我们的商品,把这个仓门这段时间所有订单拿出来核对,并通过监控探头核实。

金额小就打电话,金额大就报名。

有的是视觉柜,可以规避这种风险,但设备成本较高。

4. 从1货道拿了商品后不想买了,放回2货道

  • 首先,肯定是会扣钱的,因为1货道的重量减轻了
  • 那2货道,如果一个订单完成后一个货道的重量大幅增加,那我们就会把这个货道报警,通知运营人员去现场看一下,或通过摄像头看一下;或者客户自己发现没拿东西扣款了,会去我们的平台申诉。根据客户提供的照片信息,和缓存的重量信息,摄像头,考虑是否对其退款

5. 自我保护机制,项目上下线

6. 有用到RocketMQ吗?

  • 通信服务 通过 消息队列 和其他外部服务进行信息交互,没有接口的提供,只有接收消息、发送消息跟其他服务进行交互
  • 关门 设备服务 收到商品详情的时候,通过消息队列发送给账户服务去结单,另外一个发送给设备服务的补货 通知它补货
  • 所有发短信,就是发送短信通知运营人员校准或者补货,发短信通过通道服务的消息队列去发送短信

7. 哪里用到Redis

  • 用Redis做缓存,缓存设备信息

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q0TPODXN-1685621626840)(C:\Users\Chen_Zhuo\AppData\Roaming\Typora\typora-user-images\image-20230529234502902.png)]
  • 开仓门下单的时候,利用Redis做分布式锁。同时补货、换品也用的是这同一把锁

  • reddision 框架 ,watch dog机制

  • 存阿里的APPKey和项目的配置信息

  • 通道服务连的哪些设备

    • 通道服务id sn1 sn2 sn3

8.哪里用到了分布式事务?

  • 分为强一致性 和 最终一致性

  • app创建用户下单信息 --> 账户服务创建账户信息(Seata AT)模式

  • 最终一致性,结单的时候(RocketMQ的事务消息)

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gy7Q2qNK-1685621626842)(C:\Users\Chen_Zhuo\AppData\Roaming\Typora\typora-user-images\image-20230530220650720.png)]

9.对账

如果一个 客户拿了东西,我们却没扣钱;

  • 过去,只会在补货的时候运营人员才会发现;

  • 每天 晚上12点,或者交易量小的时候,凌晨1点也好2点也好;

  • 去比较一下,每90s上传一次重量,最新的总重量去除以最新的单重=最新的库存,和数据库中的现有库存进行对比

    如果是对的就没问题,如果对不上,通过之前重量更改的信息,然后打电话给客户 能不能把钱补上,如果对方不补就算亏损。

10.支付宝结单回调保证幂等性

  • 因为是免密支付,支付宝是不会告诉我们支付失败的,

  • 2笔只收到成功,就用分布式锁

  • 先收到成功,再收到失败,就会报警

11.预授权幂等性

  • 授权中才会授权成功

12. 有没有做分库分表

  • 做了
  • 重量记录30s记录一次
  • 只记录4张表,一个星期存一张

13.支付宝和微信 有啥区别?

14. JVM调优

  • 做过。
    • 最初通信服务100台,新生代 老年代
    • 后来通信设备越来越多,到了600台,持续发心跳 导致新生代的Eden区 压力越来越大
    • CPU处理速度变慢
    • 或导致频繁的full GC
  • 怎么解决?
    • 首先把每个通信服务我们最多让它连接300台~500台设备,新增的设备连到新的通信服务上。
    • 通信服务做了集群,一共4~5台,缓存记录了每台设备连接的是哪些通信服务
    • 正常情况下,老年代 : 新生代 = 2:1 将其调成 老年代:新生代 = 1:1
    • 再将新生代的 Eden : Survivor : Survivor = 8 : 1 : 1 改成 Eden : Survivor : Survivor = 3 : 1 : 1

大部分的JVM调优,都是调堆里面的新生代和老年代的比例,还有新生代 Eden区和Survivor区的比例。还有一个就是大对象的阈值。

15.哪里会取消订单

  • 在1分钟之内用户免密支付未授权
  • 门未开(门未响应、异常)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈卓410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值