大數據“復活”記
679
2025-03-31
1 核心API
● Producer API
允許一個應用程序發布一串流式數據到一或多個Kafka topic。
● Consumer API
允許一個應用程序訂閱一個或多個topic ,并且對發布給他們的流式數據進行處理。
● Streams API
允許一個應用程序作為一個流處理器,消費一個或者多個topic產生的輸入流,然后生產一個輸出流到一個或多個topic中去,在輸入輸出流中進行有效的轉換。
● Connector API
允許構建并運行可重用的生產者或者消費者,將Kafka topics連接到已存在的應用程序或者數據系統。比如,連接到一個關系型數據庫,捕捉表(table) 的所有變更內容。
在Kafka中,客戶端和服務器之間的通信是通過簡單,高性能,語言無關的TCP協議完成的。
此協議已版本化并保持與舊版本的向后兼容性。Kafka提供多種語言客戶端。
2 Kafka API - producer
Producer會為每個partition維護一個緩沖,用來記錄還沒有發送的數據,每個緩沖區大小用batch.size指定,默認值為16k.
linger.ms為,buffer中的數據在達到batch.size前,需要等待的時間
acks用來配置請求成功的標準
send異步方法
3 Kafka API - Consumer
3.1 Simple Cnsumer
位于kafka.javaapi.consumer包中,不提供負載均衡、容錯的特性每次獲取數據都要指定topic、partition、offset、 fetchSize
3.2 High-level Consumer
該客戶端透明地處理kafka broker異常,透明地切換consumer的partition, 通過和broker交互來實現consumer group級別的負載均衡。
Group
4 整體架構
5 使用場景
5.1 消息系統
消息系統被用于各種場景,如解耦數據生產者,緩存未處理的消息。Kafka 可作為傳統的消息系統的替代者,與傳統消息系統相比,kafka有更好的吞吐量、更好的可用性,這有利于處理大規模的消息。
根據經驗,通常消息傳遞對吞吐量要求較低,但可能要求較低的端到端延遲,并經常依賴kafka可靠的durable機制。
在這方面,Kafka可以與傳統的消息傳遞系統(ActiveMQ 和RabbitMQ)相媲美。
5.2 存儲系統
寫入到kafka中的數據是落地到了磁盤上,并且有冗余備份,kafka允許producer等待確認,通過配置,可實現直到所有的replication完成復制才算寫入成功,這樣可保證數據的可用性。
Kafka認真對待存儲,并允許client自行控制讀取位置,你可以認為kafka是-種特殊的文件系統,它能夠提供高性能、低延遲、高可用的日志提交存儲。
5.3 日志聚合
日志系統一般需要如下功能:日志的收集、清洗、聚合、存儲、展示。
Kafka常用來替代其他日志聚合解決方案。(官方說法,略有夸大嫌疑)
和Scribe、Flume相 比,Kafka提供同樣好的性能、更健壯的堆積保障、更低的端到端延遲。
日志會落地,導致kafka做 日志聚合更昂貴
kafka可實現日志的清洗(需要編碼)、聚合(可靠但昂貴,因為需要落地磁盤)、存儲。
ELK是現在比較流行的日志系統。在kafka的配合 下才是更成熟的方案,kafka在ELK技術棧中,主要起到buffer的作用,必要時可進行日志的匯流。.
5.4 跟蹤網站活動
kafka的最初始作用就是,將用戶行為跟蹤管道重構為一組實時發布-訂閱源。
把網站活動(瀏覽網頁、搜索或其他的用戶操作)發布到中心topics中,每種活動類型對應一個topic。基于這些訂閱源,能夠實現一系列用例,如實時處理、實時監視、批量地將Kafka的數據加載到Hadoop或離線數據倉庫系統,進行離線數據處理并生成報告。
每個用戶瀏覽網頁時都生成了許多活動信息,因此活動跟蹤的數據量通常非常大。(Kafka實際應用)
5.5 流處理 - kafka stream API
Kafka社區認為僅僅提供數據生產、消費機制是不夠的,他們還要提供流數據實時處理機制
從0.10.0.0開始, Kafka通過提供Strearms API來提供輕量,但功能強大的流處理。實際上就是Streams API幫助解決流引用中一些棘手的問題,比如:
處理無序的數據
代碼變化后再次處理數據
進行有狀態的流式計算
Streams API的流處理包含多個階段,從input topics消費數據,做各種處理,將結果寫入到目標topic, Streans API基于kafka提供的核心原語構建,它使用kafka consumer、 producer來輸入、輸出,用Kfka來做狀態存儲。
流處理框架: flink spark streamingJ Stortm、 Samza 本是正統的流處理框架,Kafka在流處理中更多的是扮演流存儲的角色。
API Kafka
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。