[问题排查]记录一次两个dubbo提供者同时在线,代码不一致导致问题的排查记录

1. 需求

  有一个需求job定时5秒一次,job【消费者】调用dsc【提供者】提供的dubbo完成:先清空redis的某个key,然后再往redis中放入新的数据,这是一个定时任务,需要每隔5秒执行一次;

2. 问题场景

  某次上线发布之后,发现再写入redis中添加了多一点数据的写入,然后发布之后发现一个奇怪的情况,就是redis中数据一下子有,隔几秒又没有的问题,查找了一个早上,盯着日志看了很久都没发现问题;

3. 解决过程

  最后询问一个同事,

  他问:是走dubbo接口的吗?

  回:是

  他问:那你可以看一下dubbo-mointer会不会存在两个提供者。

  最后从dubbo的监控中看到有两个dubbo的提供者,url完全一样,但是一个服务上线了新的代码,一个服务忘记上线新代码了,导致如果job调用到新的代码就会有新数据的返回,如果调用旧的就会没有数据;

4. 解决方案【选一种执行】

  4.1 将旧的服务停止

  4.2 将服务代码更新

5. 总结

  使用微服务架构的时候,很多时候考虑问题不能用单机模式的思维了,需要转换成分布式的思想,就是服务可能分布在多个地方,查找问题的时候需要从多个角度来思考问题。

上一篇:[转载]基于UML的需求分析和系统设计(完整案例和UML图形演示)


下一篇:Xcode8新特性和iOS10新特性