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. 總結
使用微服務架構的時候,很多時候考慮問題不能用單機模式的思維了,需要轉換成分布式的思想,就是服務可能分布在多個地方,查找問題的時候需要從多個角度來思考問題。