關於kafka可能會丟失訊息的問題?

來源:互聯網
上載者:User
關鍵字 kafka java php python apache
各位大神,小弟最近研究kafka,看了很多說kafka可能會丟失訊息。

實在不太明白做日誌系統,在什麼情境下可以容忍訊息的丟失。

比如做即時日誌分析系統的話,那麼就是說我所看到的日誌資訊中可能是不全的,如果出現異常日誌看不到可能會影響問題的定位?

還有看到說分布式叢集kafka的某一節點崩潰可能也會導致這一節點訊息的丟失(這個看kafka與rabbitMQ做對比的時候說到的,rabbitMQ不會有這個問題)。

如果說kafka這麼不靠譜,為啥這麼多大公司都在使用呢?

回複內容:

各位大神,小弟最近研究kafka,看了很多說kafka可能會丟失訊息。

實在不太明白做日誌系統,在什麼情境下可以容忍訊息的丟失。

比如做即時日誌分析系統的話,那麼就是說我所看到的日誌資訊中可能是不全的,如果出現異常日誌看不到可能會影響問題的定位?

還有看到說分布式叢集kafka的某一節點崩潰可能也會導致這一節點訊息的丟失(這個看kafka與rabbitMQ做對比的時候說到的,rabbitMQ不會有這個問題)。

如果說kafka這麼不靠譜,為啥這麼多大公司都在使用呢?

rabbitMQ怎麼做的,我不知道。

kafka會丟訊息主要集中在兩個環節

  1. 訊息落盤時機

訊息落盤有非同步重新整理和同步重新整理兩種,明顯非同步重新整理的可靠性要高很多。但在某些情境下追求效能而忽略可靠性,可以啟用。

  1. 訊息儲存維護

持久化儲存,這句話不是說來玩的。Oracle/MySQL做了這麼久的儲存,其中的災難恢複工具等都非常完備並形成體系(出問題你能找到人並能解決問題)kafka的儲存誰特麼知道~工具又特麼的少!

另外就是落盤的儲存介質,如果不做raid,那麼單盤存在損壞的可能;做了raid,則成本上升。如果做多集copy,則存在網路同步延時所帶來的瞬間資料不一致。

小結:kafka你要做到完全不丟資料(在非大災大難的情況下,比如機房被原子彈轟炸;或者raid被誤操作弄錯同步時間或者低格等),是完全可以的。代價就是丟失一定的效能。

所以kafka我一般用在業務允許少量資料丟失但整體輸送量非常大的情境(比如日誌採集),資料統計分析(卻少幾百條資料不會對億萬級的樣本空間產生什麼影響)。

kafka也可以用在兩個可靠儲存之間做資料同步,比如MySQL(寫)->MySQL(度),因為MySQL(寫)保證了資料可被重放,所以kafka出問題時恢複速度和恢複可靠程度是可以得到保證的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.