请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在签到远程调用新增积分接口后,如果积分接口报错,会出现什么问题

老师你好,这个问题我的第一反应是会造成数据库和缓存的不一致。

即:redis记录了签到次数,但是数据库没有对应的积分记录。且课程中的代码会返回给用户异常,但是redis已经写成功了,用户再次签到则会提示用户当前日期已完成签到,无需再签。
我想的是catch住远程调用的方法,如果发生异常,则setBit(signKey, offset, false).然后再返回给用户异常信息。
以上是我暂时想到的,还请老师指教。


正在回答

1回答

这是两个不同的业务,当然具体看产品如何定义,比如对积分要求不是那么高,那么积分服务有异常,那也可以忽略,如果积分要求很严格,比如签到一定要有积分,那么有很多种解决方案:比如不调用远程积分服务,自己写积分操作(这是最简单最安全的做法),如果调用了远程那么就可以按照你所讲的去实现,不单单是catch里面捕捉,还有远程积分服务返回的数据是不是正常的,都需要判断,判断完后如果有错误就setBit(signKey, offset, false).

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仔8930017 #1
    感谢老师解答。积分接口报错除了咱们上面提到的影响点,请问老师还会有其他影响吗?
    回复 有任何疑惑可以回复我~ 2021-01-18 15:37:54
  • InCowboy 回复 提问者 慕仔8930017 #2
    差不多就是这些了,有的为了提高性能这里还使用异步,为了确保积分的安全问题,在添加积分这里可以做一层日志的,方便排错,当然还可以追加监控和链路的追踪
    回复 有任何疑惑可以回复我~ 2021-01-18 15:44:29
  • 提问者 慕仔8930017 回复 InCowboy #3
    明白了,感谢老师解答
    回复 有任何疑惑可以回复我~ 2021-01-18 15:45:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信