優化Kafka防止數據泄露發方法有以下這些:
設計上保證數據的可靠安全性,依據分區數做好數據備份,設立副本數等。權衡安全性和速度性的要求,選擇相應的同步推送還是異步推送方式,當發現數據有問題時,可以改為同步來查找問題。
flush是Kafka的內部機制,Kafka優先在內存中完成數據的交換,然后將數據持久化到磁盤。Kafka首先會把數據緩存(緩存到內存中)起來再批量flush。可以通過log.flush.interval.messages和log.flush.interval.ms來配置flush間隔。’
可以通過replica機制保證數據不丟,代價就是需要更多資源,尤其是磁盤資源,Kafka當前支持GZip和Snappy壓縮,來緩解這個問題。是否使用replica(副本)取決于在可靠性和資源代價之間的balance(平衡)。
異步要考慮到partitionleader在未完成副本數follows的備份時就宕機的情況,即使選舉出了新的leader但是已經push的數據因為未備份就丟失了。不能讓內存的緩沖池太滿,如果滿了內存溢出,也就是說數據寫入過快,Kafka的緩沖池數據落盤速度太慢,這時肯定會造成數據丟失。盡量保證生產者端數據一直處于線程阻塞狀態,這樣一邊寫內存一邊落盤。
設置合適的方式,增大batch大小來減小網絡IO和磁盤IO的請求,這是對于Kafka效率的思考。不過異步寫入丟失數據的情況還是難以控制,還是得穩定整體集群架構的運行,特別是zookeeper,當然正對異步數據丟失的情況盡量保證broker端的穩定運作吧。
回答所涉及的環境:聯想天逸510S、Windows 10。
優化Kafka防止數據泄露發方法有以下這些:
設計上保證數據的可靠安全性,依據分區數做好數據備份,設立副本數等。權衡安全性和速度性的要求,選擇相應的同步推送還是異步推送方式,當發現數據有問題時,可以改為同步來查找問題。
flush是Kafka的內部機制,Kafka優先在內存中完成數據的交換,然后將數據持久化到磁盤。Kafka首先會把數據緩存(緩存到內存中)起來再批量flush。可以通過log.flush.interval.messages和log.flush.interval.ms來配置flush間隔。’
可以通過replica機制保證數據不丟,代價就是需要更多資源,尤其是磁盤資源,Kafka當前支持GZip和Snappy壓縮,來緩解這個問題。是否使用replica(副本)取決于在可靠性和資源代價之間的balance(平衡)。
異步要考慮到partitionleader在未完成副本數follows的備份時就宕機的情況,即使選舉出了新的leader但是已經push的數據因為未備份就丟失了。不能讓內存的緩沖池太滿,如果滿了內存溢出,也就是說數據寫入過快,Kafka的緩沖池數據落盤速度太慢,這時肯定會造成數據丟失。盡量保證生產者端數據一直處于線程阻塞狀態,這樣一邊寫內存一邊落盤。
設置合適的方式,增大batch大小來減小網絡IO和磁盤IO的請求,這是對于Kafka效率的思考。不過異步寫入丟失數據的情況還是難以控制,還是得穩定整體集群架構的運行,特別是zookeeper,當然正對異步數據丟失的情況盡量保證broker端的穩定運作吧。
回答所涉及的環境:聯想天逸510S、Windows 10。