哪里有網(wǎng)站建設(shè)多少錢(qián)百度問(wèn)一問(wèn)付費(fèi)咨詢
Kafka 是一個(gè)開(kāi)源的分布式流式平臺(tái),它可以處理大量的實(shí)時(shí)數(shù)據(jù),并提供高吞吐量,低延遲,高可靠性和高可擴(kuò)展性。
Kafka 最初是為分布式系統(tǒng)中海量日志處理而設(shè)計(jì)的。它可以通過(guò)持久化功能將消息保存到磁盤(pán),并讓消費(fèi)者按照自己的節(jié)奏提取消息。Kafka 不僅僅是一個(gè)消息隊(duì)列,它還是一個(gè)開(kāi)源的分布式流處理平臺(tái)。
Kafka 的應(yīng)用場(chǎng)景
Kafka 作為一款熱門(mén)的消息隊(duì)列中間件,具備高效可靠的消息異步傳遞機(jī)制,主要用于不同系統(tǒng)間的數(shù)據(jù)交流和傳遞。
下面給大家介紹一下 Kafka 在分布式系統(tǒng)中常用的應(yīng)用場(chǎng)景:
- 日志處理與分析
- 消息隊(duì)列
- 系統(tǒng)監(jiān)控與報(bào)警
- CDC(數(shù)據(jù)變更捕獲)
- 數(shù)據(jù)流式處理
日志處理與分析
日志收集是 Kafka 最初的設(shè)計(jì)目標(biāo)之一,也是最常見(jiàn)的應(yīng)用場(chǎng)景之一。
可以用 Kafka 收集各種服務(wù)的日志,如 web 服務(wù)器、服務(wù)器日志、數(shù)據(jù)庫(kù)服務(wù)器等,通過(guò) Kafka 可以統(tǒng)一接口服務(wù)的方式開(kāi)放給各種消費(fèi)者,例如 Flink、Hadoop、Hbase、ElasticSearch 等。這樣可以實(shí)現(xiàn)分布式系統(tǒng)中海量日志數(shù)據(jù)的處理與分析。
下圖是一張典型的 ELK(Elastic-Logstash-Kibana)分布式日志采集架構(gòu)。
- 服務(wù)將日志數(shù)據(jù)寫(xiě)在 log 文件中。
- Logstash 讀取日志文件發(fā)送到 Kafka 的日志主題中。
- ElasticSearch 訂閱日志主題,建立日志索引,保存日志數(shù)據(jù)。
- 開(kāi)發(fā)者通過(guò) Kibana 連接到 ElasticSeach 即可查詢其日志索引內(nèi)容。
消息隊(duì)列
Kafka 最常見(jiàn)的應(yīng)用場(chǎng)景就是作為消息隊(duì)列。提供了一個(gè)可靠且可擴(kuò)展的消息隊(duì)列,可以處理大量數(shù)據(jù)。
Kafka 可以實(shí)現(xiàn)不同系統(tǒng)間的解耦和異步通信,如訂單系統(tǒng)、支付系統(tǒng)、庫(kù)存系統(tǒng)等。在這個(gè)基礎(chǔ)上 Kafka 還可以緩存消息,提高系統(tǒng)的可靠性和可用性,并且可以支持多種消費(fèi)模式,如點(diǎn)對(duì)點(diǎn)或發(fā)布訂閱。
系統(tǒng)監(jiān)控與報(bào)警
Kafka 常用于傳輸監(jiān)控指標(biāo)數(shù)據(jù)。例如,在分布式系統(tǒng)中可能會(huì)有數(shù)百臺(tái)服務(wù)器,通過(guò)工具把?CPU 利用率、內(nèi)存使用率、磁盤(pán)使用率、流量使用等指標(biāo)發(fā)布到 Kafka。然后,通過(guò)監(jiān)控應(yīng)用程序可以使用這些指標(biāo)來(lái)進(jìn)行實(shí)時(shí)可視化、警報(bào)和異常檢測(cè)。
常見(jiàn)監(jiān)控報(bào)警系統(tǒng)的工作流程。
- 采集器(agent)讀取購(gòu)物車指標(biāo)發(fā)送到 Kafka 中。
- Flink 讀取 Kafka 中的指標(biāo)數(shù)據(jù)進(jìn)行聚合處理。
- 實(shí)時(shí)監(jiān)控系統(tǒng)和報(bào)警系統(tǒng)讀取聚合數(shù)據(jù)作展示以及報(bào)警處理。
CDC
CDC:數(shù)據(jù)變更捕獲。用來(lái)將數(shù)據(jù)庫(kù)中的發(fā)生的更改以流的形式傳輸?shù)狡渌到y(tǒng)以進(jìn)行復(fù)制或者緩存等。
Kafka 中有一個(gè)連接器組件可以支持 CDC 功能,它需要和具體的數(shù)據(jù)源結(jié)合起來(lái)使用。數(shù)據(jù)源可以分成兩種:源數(shù)據(jù)源( data source ,也叫作“源系統(tǒng)”)和目標(biāo)數(shù)據(jù)源( Data Sink ,也叫作“目標(biāo)系統(tǒng)”)。
Kafka 連接器和源系統(tǒng)一起使用時(shí),它會(huì)將源系統(tǒng)的數(shù)據(jù)導(dǎo)入到 Kafka 集群。Kafka 連接器和目標(biāo)系統(tǒng)一起使用時(shí),它會(huì)將 Kafka 集群的數(shù)據(jù)導(dǎo)人到目標(biāo)系統(tǒng)。
常見(jiàn) CDC 系統(tǒng)的工作流程。
- 源數(shù)據(jù)源將事務(wù)日志發(fā)送到 Kafka。
- Kafka 的連接器將事務(wù)日志寫(xiě)入目標(biāo)數(shù)據(jù)源。
- 目標(biāo)數(shù)據(jù)源包含 ElasticSearch、Redis、備份數(shù)據(jù)源等。
數(shù)據(jù)流式處理
流式處理是 Kafka 在大數(shù)據(jù)領(lǐng)域的重要應(yīng)用場(chǎng)景之一。
可以用 Kafka 作為流式處理平臺(tái)的數(shù)據(jù)源或數(shù)據(jù)輸出,與 Spark Streaming、Storm、Flink 等框架進(jìn)行集成,實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)的處理和分析,如過(guò)濾、轉(zhuǎn)換、聚合、窗口、連接等。
比如要實(shí)現(xiàn)一個(gè)推薦系統(tǒng)的工作流程。
- 將用戶的點(diǎn)擊流數(shù)據(jù)發(fā)送到 Kafka 中。
- Flink 讀取 Kafka 中的流數(shù)據(jù)實(shí)時(shí)寫(xiě)入數(shù)據(jù)湖中其進(jìn)行聚合處理。
- 機(jī)器學(xué)習(xí)使用來(lái)自數(shù)據(jù)湖的聚合數(shù)據(jù)進(jìn)行訓(xùn)練,算法工程師也會(huì)對(duì)推薦模型進(jìn)行調(diào)整。
- 這樣推薦系統(tǒng)就能夠持續(xù)改進(jìn)對(duì)每個(gè)用戶的推薦相關(guān)性。