消息隊(duì)列
Kafka作為一個(gè)傳統(tǒng)的消息代理的替代品表現(xiàn)得非常出色漫雕。使用消息代理有各種各樣的原因(將處理與數(shù)據(jù)生成器解耦还绘,緩沖未處理的消息窗价,等等)。與大多數(shù)消息傳遞系統(tǒng)相比碰煌,Kafka有更好的吞吐量舒岸、內(nèi)置分區(qū)、復(fù)制和容錯(cuò)性芦圾,這使得它成為大規(guī)模消息處理應(yīng)用的一個(gè)很好的解決方案蛾派。
根據(jù)我們的經(jīng)驗(yàn),消息傳遞的使用通常是相對(duì)較低的吞吐量个少,但可能需要較低的端到端延遲洪乍,并且常常依賴(lài)于Kafka提供的強(qiáng)大的持久性保證。
在這個(gè)領(lǐng)域夜焦,Kafka可以與ActiveMQ或RabbitMQ等傳統(tǒng)消息傳遞系統(tǒng)相媲美壳澳。
網(wǎng)站活動(dòng)追蹤
Kafka最初的用例是能夠重建一個(gè)用戶(hù)活動(dòng)跟蹤管道,作為一組實(shí)時(shí)發(fā)布-訂閱提要茫经。這意味著站點(diǎn)活動(dòng)(頁(yè)面瀏覽巷波、搜索或用戶(hù)可能采取的其他操作)被發(fā)布到中心主題,每個(gè)活動(dòng)類(lèi)型有一個(gè)主題卸伞。這些提要可用于訂閱一系列用例抹镊,包括實(shí)時(shí)處理、實(shí)時(shí)監(jiān)視和加載到Hadoop或脫機(jī)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)以進(jìn)行脫機(jī)處理和報(bào)告荤傲。
活動(dòng)跟蹤通常是非常大的量髓考,因?yàn)樵S多活動(dòng)消息會(huì)生成的每個(gè)用戶(hù)頁(yè)面視圖。
監(jiān)控
Kafka通常用于運(yùn)行監(jiān)控?cái)?shù)據(jù)弃酌。這涉及聚合來(lái)自分布式應(yīng)用程序的統(tǒng)計(jì)信息氨菇,以生成集中的操作數(shù)據(jù)提要。
日志聚合
許多人使用Kafka作為日志聚合解決方案的替代品妓湘。日志聚合通常收集服務(wù)器上的物理日志文件查蓉,并將它們放在一個(gè)中心位置(可能是文件服務(wù)器或HDFS)進(jìn)行處理。Kafka抽象了文件的細(xì)節(jié)榜贴,并以消息流的形式對(duì)日志或事件數(shù)據(jù)進(jìn)行了更清晰的抽象豌研。這允許低延遲處理,并更容易支持多個(gè)數(shù)據(jù)源和分布式數(shù)據(jù)消費(fèi)唬党。與以日志為中心的系統(tǒng)如Scribe或Flume相比鹃共,Kafka提供了同樣好的性能,由于復(fù)制而更強(qiáng)的持久性保證驶拱,以及更低的端到端延遲霜浴。
流處理
很多Kafka的用戶(hù)在處理數(shù)據(jù)的管道中都有多個(gè)階段,原始的輸入數(shù)據(jù)會(huì)從Kafka的主題中被消費(fèi)蓝纲,然后被聚合阴孟、充實(shí)或者轉(zhuǎn)換成新的主題進(jìn)行進(jìn)一步的消費(fèi)或者后續(xù)的處理晌纫。例如,推薦新聞文章的處理管道可能會(huì)從RSS源抓取文章內(nèi)容永丝,并將其發(fā)布到“文章”主題;進(jìn)一步的處理可能會(huì)規(guī)范化或刪除該內(nèi)容锹漱,并將清理后的文章內(nèi)容發(fā)布到新主題;最后一個(gè)處理階段可能會(huì)嘗試向用戶(hù)推薦這些內(nèi)容。這種處理管道基于單個(gè)主題創(chuàng)建實(shí)時(shí)數(shù)據(jù)流圖慕嚷。從0.10.0.0開(kāi)始哥牍,Apache Kafka提供了一個(gè)輕量級(jí)但功能強(qiáng)大的流處理庫(kù),名為Kafka Streams喝检,用于執(zhí)行上述的數(shù)據(jù)處理。除了Kafka Streams蛇耀,其他開(kāi)源流處理工具包括Apache Storm和Apache Samza辩诞。
事件朔源
事件溯源是一種應(yīng)用程序設(shè)計(jì)風(fēng)格,其中將狀態(tài)更改記錄為按時(shí)間順序排列的記錄序列纺涤。Kafka支持非常大的存儲(chǔ)日志數(shù)據(jù)译暂,這使得它成為這種風(fēng)格的應(yīng)用程序的優(yōu)秀后端。
提交日志
Kafka可以作為分布式系統(tǒng)的一種外部提交日志撩炊。日志有助于在節(jié)點(diǎn)之間復(fù)制數(shù)據(jù)外永,并充當(dāng)故障節(jié)點(diǎn)的重新同步機(jī)制,以恢復(fù)它們的數(shù)據(jù)拧咳。Kafka的日志壓縮特性支持這種用法伯顶。在這種用法中,Kafka類(lèi)似于Apache BookKeeper項(xiàng)目骆膝。