專案中為什麼通常flume和kafka要共同使用

2021-08-29 13:45:52 字數 740 閱讀 2652

系統架構方面的考慮:

(1)如果系統比較簡單,應用場景比較單一,從簡化系統的角度考慮,在滿足應用需求的情況下可能只使用乙個比較好。

(2)但是考慮到現有系統業務發展,為了後面的靈活擴充套件,在先用系統設計時留有一定的擴充套件**覺更重要,

(3)可能使用flume+kafka架構相對只使用kafka會多占用1-2臺機器做flume日誌採集,但是為了方便以後日誌資料處理方式的擴充套件,可以採用flume+kafka架構。

原理方面的考慮:

個人覺得原理不同,側重點不同

flume :管道流方式,提供了很多的預設實現,讓使用者通過引數部署,及擴充套件api.

kafka :乙個可持久化的分布式的訊息佇列。

(1)kafka 是乙個非常通用的系統。你可以有許多生產者和很多的消費者共享多個主題topics。相比之下,flume是乙個專用工具被設計為旨在往hdfs,hbase傳送資料。它對hdfs有特殊的優化,並且整合了hadoop的安全特性。如果資料被多個系統消費的話,使用kafka;如果資料被設計給hadoop使用,使用flume。

(2)flume可以使用***實時處理資料。這些對資料遮蔽或者過量是很有用的。kafka需要外部的流處理系統才能做到。

(3)kafka和flume都是可靠的系統,通過適當的配置能保證零資料丟失。然而,flume不支援副本事件。於是,如果flume**的乙個節點奔潰了,即使使用了可靠的檔案管道方式,你也將丟失這些事件直到你恢復這些磁碟。如果你需要乙個高可靠行的管道,那麼使用kafka是個更好的選擇。

專案中為什麼要使用redis

你的專案中為什麼要使用redis呢,相信主要是從效能和併發考慮。1.純記憶體操作 2.單執行緒操作,避免了頻繁的上下文切換 3.採用了非阻塞i o多路復用機制 對於變動較少的資料,或者查詢時間比較長的資料,我們可以將查詢結果快取到redis,這樣請求就能夠迅速響應。特別是秒殺系統,在這種高併發情況下...

為什麼要在專案中應用三層架構?

區分層次的目的即為了 高內聚,低耦合 的思想。優點 1 開發人員可以只關注整個結構中的其中某一層 2 可以很容易的用新的實現來替換原有層次的實現 3 可以降低層與層之間的依賴 4 有利於標準化 5 利於各層邏輯的復用。缺點 1 降低了系統的效能。這是不言而喻的。如果不採用分層式結構,很多業務可以直接...

專案交付為什麼失敗? 記我在某個專案中的迷思

上個專案接近尾聲,我以developer的身份加入了現在的專案,姑且叫做專案a吧。說實話a專案蠻神奇的,幹了一年多了只有一次release,8月初要進行第二次release了,但是測試環境還未搭建好。該專案是個分布式團隊,分布在成都和澳洲兩個地方。由於成都這邊團隊都是清一色的developer,沒有...