一次C端線上緩存問題的總結

一次C端線上緩存問題的總結

做C端需求的第二週,有個小需求,需要將從中央配置中心的拿回來的數據做一個緩存,保證數據訪問快速。

由於項目中直接有ehcache,集成spring-boot,所以開發起來比較簡單,只是隨手加上了@Cacheable註解,並在需要清除緩存的時候加上了@CacheEvict。

當然,正常情況下沒有任何問題。

結果….

突然當配置中心掛了的時候,我們把null值緩存進去了,導致的是緩存生效的剩餘時間裏,服務都是不可用的。

也算是個線上事故了。

犯得錯誤有點不應該,以此文來記錄,並總結錯誤。

總結:

  • 對使用的組件的所有功能應該有全面的認識再用
  • 如果使用的是新註解,應該對註解的所有的參數有了解才用
  • 多考慮代碼的邊界情況,異常情況
  • http請求總會失敗
  • 墨菲定律,壞事只要有可能,就一定會出現。

修正後代碼:

加上unless即可,意爲除了result==null下緩存。

@Cacheable(value = "hostsCache", key = "#appId",unless = "#result == null)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章