kafka和mq的區(qū)別 日志采集系統(tǒng)flume和kafka有什么區(qū)別及聯(lián)系?
日志采集系統(tǒng)flume和kafka有什么區(qū)別及聯(lián)系?Flume和Kafka有一部分功能是相同的,但是整體來看,兩者的差別還是很大的;它們使用的場景有所不同,但是可以相互配合使用。Flume簡單的說,F(xiàn)
日志采集系統(tǒng)flume和kafka有什么區(qū)別及聯(lián)系?
Flume和Kafka有一部分功能是相同的,但是整體來看,兩者的差別還是很大的;它們使用的場景有所不同,但是可以相互配合使用。
Flume
簡單的說,F(xiàn)lume是分布式日志收集系統(tǒng),它把各個服務(wù)器上的日志收集起來,傳送到制定的地方,比如傳送到HDFS中。
Kafka
Kafka的定位是分布式消息中間件,自帶存儲,提供push和pull存取數(shù)據(jù)功能。
使用場景
在實際應(yīng)用中,系統(tǒng)實時產(chǎn)生的日志需要最后進(jìn)入HDFS,但是生產(chǎn)上的日志數(shù)量會有波動,比如由于訪問量的增加,導(dǎo)致突然之間產(chǎn)生大量的日志,這時候可能會導(dǎo)致日志寫入HDFS失敗,所以這時候可以先把日志數(shù)據(jù)寫入到Kafka中,再由Kafka導(dǎo)入到HDFS中。
總結(jié):在日志采集系統(tǒng)中,把Kafka當(dāng)做日志緩存更加合適,F(xiàn)lume做數(shù)據(jù)采集,因為它可以定制很多數(shù)據(jù)源,減少開發(fā)量,所以Flume和Kafka可以配合起來一起工作。
整體的流程是這樣的:
服務(wù)器上的日志<--Flume-->Kafka-->HDFS-->離線計算
服務(wù)器上的日志<--Flume-->Kafka-->Storm
希望我的回答能夠幫助到你!
kafka和mqtt的區(qū)別是什么?
kafka是分布式消息隊列或者叫分布式消息中間件,有時候會叫做一種MQ產(chǎn)品(Message Queue),同類型的有RabbitMQ,ActiveMQ等等。MQTT是一種即時消息傳輸協(xié)議,Message Queuing Telemetry Transport,也就是一種即時信息傳輸?shù)囊环N格式約定,與其類似的有XMPP等,是用來做IM的。kafka是不支持MQTT協(xié)議的,如果非要把它們集成在一起,你要不自己分析,要不去Github上找找,說不定有人做過這樣的項目。兩個M的意思,是完全不一樣的,kafka的M是指各個服務(wù)器或各個進(jìn)程間傳輸?shù)南?,而MQTT的M,是指類似MSN,QQ那種IM中那種大家交流的那種消息。
如何設(shè)計一個MQ消息隊列?
1.先上圖,明確一個消息發(fā)送和消費的流程
2.消息消息首先需要定義消息協(xié)議,比如ActiveMQ,Stomp,XMPP等
3.消息協(xié)議定義好了,明確消息隊列需要滿足什么場景
是否需要保證消息可靠性,如果需要就要做存儲的高可用
是否需要支持同步和異步消息
是否需要保證消息的順序
是否需要支持延時消息
具體可以參照很多開源實現(xiàn)的特性,比如RocketMQ就是高可靠的,Kafka就是高吞吐量的,但是不是高可靠的。