溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)kafka常見面試題有哪些

發(fā)布時間:2021-12-23 17:49:19 來源:億速云 閱讀:174 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“大數(shù)據(jù)kafka常見面試題有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“大數(shù)據(jù)kafka常見面試題有哪些”吧!

1、什么是 kafka?

Apache Kafka 是一個開源消息系統(tǒng),由 Scala 寫成。是由 Apache 軟件基金會開發(fā)的一個開源消息系統(tǒng)項目。

Kafka 最初是由 LinkedIn 開發(fā),并于 2011 年初開源。2012 年 10 月從 Apache Incubator 畢業(yè)。該項目的目標(biāo)是為處理實時數(shù)據(jù)提供一個統(tǒng)一、高通量、低等待的平臺。

Kafka 是一個分布式消息隊列:生產(chǎn)者、消費者的功能。它提供了類似于JMS 的特性,但是在設(shè)計實現(xiàn)上完全不同,此外它并不是 JMS 規(guī)范的實現(xiàn)。Kafka 對消息保存時根據(jù) Topic 進行歸類,發(fā)送消息者稱為 Producer,消息接受者稱為 Consumer,此外 kafka 集群有多個 kafka 實例組成,每個實例(server) 成為 broker。無論是 kafka 集群,還是 producer 和 consumer 都依賴于 zookeeper 集群保存一些 meta 信息,來保證系統(tǒng)可用性

2、kafka 與傳統(tǒng)消息系統(tǒng)的區(qū)別

(1)在架構(gòu) <http://lib.csdn.net/base/architecture>模型方面

RabbitMQ 遵循 AMQP 協(xié)議,RabbitMQ 的 broker 由 Exchange,Binding,queue組成,其中 exchange 和 binding 組成了消息的路由鍵;客戶端 Producer 通過連接channel 和server 進行通信,Consumer 從queue 獲取消息進行消費(長連接,queue有消息會推送到 consumer 端,consumer 循環(huán)從輸入流讀取數(shù)據(jù))。rabbitMQ 以broker 為中心;有消息的確認(rèn)機制。

kafka 遵從一般的 MQ 結(jié)構(gòu),producer,broker,consumer,以 consumer 為中心,消息的消費信息保存的客戶端 consumer 上,consumer 根據(jù)消費的點,從broker 上批量 pull 數(shù)據(jù);無消息確認(rèn)機制。

(2)在吞吐量

kafka 具有高的吞吐量,內(nèi)部采用消息的批量處理,zero-copy 機制,數(shù)據(jù)的存儲和獲取是本地磁盤順序批量操作,具有 O(1)的復(fù)雜度,消息處理的效率很高。

rabbitMQ 在吞吐量方面稍遜于 kafka,他們的出發(fā)點不一樣,rabbitMQ 支持對消息的可靠的傳遞,支持事務(wù),不支持批量的操作;基于存儲的可靠性的要求存儲可以采用內(nèi)存或者硬盤。

(3)在可用性方面

rabbitMQ 支持 miror 的 queue,主 queue 失效,miror queue 接管。kafka 的 broker 支持主備模式。

(4)在集群負(fù)載均衡方面

kafka 采用 zookeeper 對集群中的 broker、consumer 進行管理,可以注冊 topic 到 zookeeper 上;通過 zookeeper 的協(xié)調(diào)機制,producer 保存對應(yīng) topic 的 broker 信息,可以隨機或者輪詢發(fā)送到 broker 上;并且 producer 可以基于語義指定分片,消息發(fā)送到 broker 的某分片上。

(5)kafka 與 activeMQ 的區(qū)別

Topic:主題,即一個標(biāo)識,類似于 map 里面的 key,通過它來給消息分類, 消息根據(jù) Topic 進行歸類。

共同點:都有生產(chǎn)者和消費者兩大組件,生產(chǎn)者發(fā)送消息給各自的服務(wù)器,

(發(fā)送消息是就會定義一個 topic)并進行存儲。不同點:

activeMQ:消費者會提前訂閱自己需要的 topic,當(dāng)該 topic 中有了消息以后,activeMQ 服務(wù)器會發(fā)送消息給消費者,然后消費者再去服務(wù)器中拿到自己想要的數(shù)據(jù)。

Kafka:消費者(指定 topic)會定時去 kafka 服務(wù)器中拿該 topic 中的數(shù)據(jù)。

(6)kafka 的組件介紹

producer:生產(chǎn)者,主要用于我們的消息的生產(chǎn),通過 producer 將我們的消息 push 到 kafka 集群當(dāng)中

topic:某一類消息的高度抽象,可以理解成某一類消息的集合,一類消息,每個topic 將被分成多個 partition(區(qū)),在集群的配置文件中配置。broker:kafka 的服務(wù)器,一個 broker 就代表一個服務(wù)器的節(jié)點partition:分區(qū)的概念,一個 topic 當(dāng)中的消息,可以拆分成多個 partition 分區(qū),存放在多個不同的服務(wù)器上,實現(xiàn)數(shù)據(jù)存放的橫向擴展。

repliaction:副本,所有的 partition 都可以指定存放幾個副本,做到數(shù)據(jù)的冗余,保證數(shù)據(jù)的安全

segment:每個 partiiton 由多個 segment 組成,segment 又包含了兩部分,一個.log 文件,一個是.index 文件

.log:存放我們的日志文件,所有的數(shù)據(jù),最后都以日志文件的形式存放到了 kafka 集群當(dāng)中

.index :索引文件,所有的.log 文件的索引都存放在了這里,便于我們查找某一條日志文件的快速

consumer:消費者,消費我們 kafka 集群當(dāng)中的消息, 問題:如何知道消費者消費到了哪一條消息來了??? 可以通過記錄的方式,記下來每次我們消費的位置。

第一種記錄方式:kafka 的本地文件系統(tǒng),比較慢,對應(yīng) kafka 的一個慢速消費的方式

第二種記錄方式:zookeeper 當(dāng)中的節(jié)點數(shù)據(jù)記錄,比較快,對應(yīng) kafka 的一個快速消費的方式

offset:偏移量,就是記錄的我們消費到了哪一條數(shù)據(jù)來了。

發(fā)布者發(fā)到某個 topic 的消息會被均勻的分布到多個 part 上,broker 收到發(fā)布消息往對應(yīng) part 的最后一個 segment 上添加該消息。

3、kafka 集群的安裝與搭建

第一步:下載上傳壓縮包

第二步:解壓

第三步:安裝包的分發(fā)第

四步:修改配置文件

第一臺服務(wù)器修改配置文件

第二臺服務(wù)器修改配置文件第三臺服務(wù)器修改配置文件第四步:三臺服務(wù)器的啟動三臺服務(wù)器的啟動

到此,相信大家對“大數(shù)據(jù)kafka常見面試題有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI