您好,登錄后才能下訂單哦!
本篇內容介紹了“如何解決生產Kafka掛掉的問題”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
背景
上周下午兩點多的時候,阿粉正在悠閑的敲著代碼,零星的看到幾條報警機器人發的 Kafka 集群負載高的報警信息,看到是負載高而已就沒怎么在意,更何況這個點還不是高峰期,想著過會應該就好了。誰知道過了一會不見好,而且還越來越多,趕緊拿著電腦跑到運維處去看看是什么情況。不看不知道,一看嚇一跳,集群中某個 topic 的數據寫不進去了!但是生產者端沒有任何報錯,看上去還在正常寫入,集群卻在報錯,而且消費端也沒有消費到數據。
報錯內容如下:
[2020-10-28 15:12:32,923] ERROR [KafkaApi-2] Error when handling request {replica_id=-1,max_wait_time=500,min_bytes=1,topics=[{topic=xxxx,partitions=[{partition=0,fetch_offset=409292609,max_bytes=1048576}]}]} (kafka.server.KafkaApis) java.lang.IllegalArgumentException: Magic v1 does not support record headers
看到這程序肯定是沒有問題的,因為最近沒有升級,嘗試重啟集群和服務但是問題依舊存在, 這個時候為了保證業務的穩定,考慮到這個 topic 可能有問題,決定刪掉這個 topic 然后自動重新創建,雖然會丟失部分數據,但是并不會產生大的影響,但是如果服務長時間寫不進去數據將會更嚴重。
處理
好在我們的服務是基于 Nacos 做的服務配置與發現,修改 Nacos 里面的 Kafka 集群配置臨時切換到另一套集群里面,然后重啟服務,因為我們沒有開啟 Nacos 配置自動生效。切換過后數據正常寫入到新的集群,然后手動將舊集群中的有錯誤的 topic 刪掉,刪掉出錯的 topic 過后集群變得一切正常,沒有出現上面的錯誤。既然沒有錯誤了,通過修改 Nacos 將集群配置切換回來,一切也正常。
整個事故從發現到解決差不多經歷了二十幾分鐘,但是因為剛開始忽略了報警信息,導致差不多影響了一個小時的數據,好在這個數據對線上業務本身不會出現大的影響,而且通過切換到臨時集群以及日志數據,還可以找回來一部分。
事后復盤了一下,主要總結了以下幾點,分享給大家,共勉:
敬畏線上!線上環境報警信息第一時間查看確保沒問題!
保證線上數據安全,及時備份和切換臨時環境(這塊一定要做好動態配置,別慢慢的還要走發布流程,推薦使用 Nacos);
事后復盤,回顧整個處理過程,哪些地方可以優化,哪些地方做的不對浪費了時間,下次再遇到這種情況是否可以快速解決。生產上時間就是金錢,事故多一分鐘就多一分鐘風險,有點時候一分鐘可以改變很多東西。
“如何解決生產Kafka掛掉的問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。