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