您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>其它程序>

kafka定時(shí)清除過期數(shù)據(jù)分析

大?。?/span>0.3 MB 人氣: 2017-09-28 需要積分:1

  《p》Kafka將數(shù)據(jù)持久化到了硬盤上,允許你配置一定的策略對(duì)數(shù)據(jù)清理,清理的策略有兩個(gè),刪除和壓縮。 《br》 數(shù)據(jù)清理的方式 《br》 刪除 《br》 log.cleanup.policy=delete啟用刪除策略 《br》 直接刪除,刪除后的消息不可恢復(fù)。可配置以下兩個(gè)策略: 《br》 清理超過指定時(shí)間清理: 《br》 log.retention.hours=16 《br》 超過指定大小后,刪除舊的消息: 《br》 log.retention.bytes=1073741824 《br》 為了避免在刪除時(shí)阻塞讀操作,采用了copy-on-write形式的實(shí)現(xiàn),刪除操作進(jìn)行時(shí),讀取操作的二分查找功能實(shí)際是在一個(gè)靜態(tài)的快照副本上進(jìn)行的,這類似于Java的CopyOnWriteArrayList。 《br》 壓縮 《br》 將數(shù)據(jù)壓縮,只保留每個(gè)key最后一個(gè)版本的數(shù)據(jù)。 《br》 首先在broker的配置中設(shè)置log.cleaner.enable=true啟用cleaner,這個(gè)默認(rèn)是關(guān)閉的。 《br》 在topic的配置中設(shè)置log.cleanup.policy=compact啟用壓縮策略。 《br》 壓縮策略的細(xì)節(jié)《/p》《p》如上圖,在整個(gè)數(shù)據(jù)流中,每個(gè)Key都有可能出現(xiàn)多次,壓縮時(shí)將根據(jù)Key將消息聚合,只保留最后一次出現(xiàn)時(shí)的數(shù)據(jù)。這樣,無論什么時(shí)候消費(fèi)消息,都能拿到每個(gè)Key的最新版本的數(shù)據(jù)。 《br》 壓縮后的offset可能是不連續(xù)的,比如上圖中沒有5和7,因?yàn)檫@些offset的消息被merge了,當(dāng)從這些offset消費(fèi)消息時(shí),將會(huì)拿到比這個(gè)offset大的offset對(duì)應(yīng)的消息,比如,當(dāng)試圖獲取offset為5的消息時(shí),實(shí)際上會(huì)拿到offset為6的消息,并從這個(gè)位置開始消費(fèi)。 《br》 這種策略只適合特俗場(chǎng)景,比如消息的key是用戶ID,消息體是用戶的資料,通過這種壓縮策略,整個(gè)消息集里就保存了所有用戶最新的資料。 《br》 壓縮策略支持刪除,當(dāng)某個(gè)Key的最新版本的消息沒有內(nèi)容時(shí),這個(gè)Key將被刪除,這也符合以上邏輯

  Kafka定時(shí)清除過期數(shù)據(jù)2017-09-04 14:04《p》Kafka將數(shù)據(jù)持久化到了硬盤上,允許你配置一定的策略對(duì)數(shù)據(jù)清理,清理的策略有兩個(gè),刪除和壓縮。 《br》 數(shù)據(jù)清理的方式 《br》 刪除 《br》 log.cleanup.policy=delete啟用刪除策略 《br》 直接刪除,刪除后的消息不可恢復(fù)??膳渲靡韵聝蓚€(gè)策略: 《br》 清理超過指定時(shí)間清理: 《br》 log.retention.hours=16 《br》 超過指定大小后,刪除舊的消息: 《br》 log.retention.bytes=1073741824 《br》 為了避免在刪除時(shí)阻塞讀操作,采用了copy-on-write形式的實(shí)現(xiàn),刪除操作進(jìn)行時(shí),讀取操作的二分查找功能實(shí)際是在一個(gè)靜態(tài)的快照副本上進(jìn)行的,這類似于Java的CopyOnWriteArrayList。 《br》 壓縮 《br》 將數(shù)據(jù)壓縮,只保留每個(gè)key最后一個(gè)版本的數(shù)據(jù)。 《br》 首先在broker的配置中設(shè)置log.cleaner.enable=true啟用cleaner,這個(gè)默認(rèn)是關(guān)閉的。 《br》 在topic的配置中設(shè)置log.cleanup.policy=compact啟用壓縮策略。 《br》 壓縮策略的細(xì)節(jié)《/p》《p》如上圖,在整個(gè)數(shù)據(jù)流中,每個(gè)Key都有可能出現(xiàn)多次,壓縮時(shí)將根據(jù)Key將消息聚合,只保留最后一次出現(xiàn)時(shí)的數(shù)據(jù)。這樣,無論什么時(shí)候消費(fèi)消息,都能拿到每個(gè)Key的最新版本的數(shù)據(jù)。 《br》 壓縮后的offset可能是不連續(xù)的,比如上圖中沒有5和7,因?yàn)檫@些offset的消息被merge了,當(dāng)從這些offset消費(fèi)消息時(shí),將會(huì)拿到比這個(gè)offset大的offset對(duì)應(yīng)的消息,比如,當(dāng)試圖獲取offset為5的消息時(shí),實(shí)際上會(huì)拿到offset為6的消息,并從這個(gè)位置開始消費(fèi)。 《br》 這種策略只適合特俗場(chǎng)景,比如消息的key是用戶ID,消息體是用戶的資料,通過這種壓縮策略,整個(gè)消息集里就保存了所有用戶最新的資料。 《br》 壓縮策略支持刪除,當(dāng)某個(gè)Key的最新版本的消息沒有內(nèi)容時(shí),這個(gè)Key將被刪除,這也符合以上邏輯

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?