衆所周知,kafka的受歡迎程度在編程界也是首屈一指的,而且Kafka也擁有強勁的就業機會和職業前景。此外,在互聯網時代可以擁有Kafka知識對本身也是一條快速增加的道路。故,本文收集了一些一線互聯網大廠常見的Kafka面試題,並提供了詳細答案,但願能幫助到你們!java
答:Apache Kafka是一個發佈 - 訂閱開源消息代理應用程序。這個消息傳遞應用程序是用「scala」編碼的。基本上,這個項目是由Apache軟件啓動的。Kafka的設計模式主要基於事務日誌設計。面試
答:Kafka最重要的元素是:sql
答:給分區中的消息提供了一個順序ID號,咱們稱之爲偏移量。所以,爲了惟一地識別分區中的每條消息,咱們使用這些偏移量。編程
答:消費者組的概念是Apache Kafka獨有的。基本上,每一個Kafka消費羣體都由一個或多個共同消費一組訂閱主題的消費者組成。設計模式
答:Apache Kafka是一個使用Zookeeper構建的分佈式系統。雖然,Zookeeper的主要做用是在集羣中的不一樣節點之間創建協調。可是,若是任何節點失敗,咱們還使用Zookeeper從先前提交的偏移量中恢復,由於它作週期性提交偏移量工做。安全
答:繞過Zookeeper並直接鏈接到Kafka服務器是不可能的,因此答案是否認的。若是以某種方式,使ZooKeeper關閉,則沒法爲任何客戶端請求提供服務。服務器
答:Kafka有一些優勢,所以使用起來很重要:架構
答:Apache Kafka有4個主要API:併發
答:Kafka消費者訂閱一個主題,並讀取和處理來自該主題的消息。此外,有了消費者組的名字,消費者就給本身貼上了標籤。換句話說,在每一個訂閱使用者組中,發佈到主題的每一個記錄都傳遞到一個使用者實例。確保使用者實例可能位於單獨的進程或單獨的計算機上。分佈式
答:在Kafka的每一個分區中,都有一個服務器充當領導者,0到多個服務器充當追隨者的角色。
答:因爲領導者的主要角色是執行分區的全部讀寫請求的任務,而追隨者被動地複製領導者。所以,在領導者失敗時,其中一個追隨者接管了領導者的角色。基本上,整個過程可確保服務器的負載平衡。
答:基本上,複製日誌的節點列表就是副本。特別是對於特定的分區。可是,不管他們是否扮演領導者的角色,他們都是如此。
此外,ISR指的是同步副本。在定義ISR時,它是一組與領導者同步的消息副本。
答:因爲複製,咱們能夠確保發佈的消息不會丟失,而且能夠在發生任何機器錯誤、程序錯誤或頻繁的軟件升級時使用。
答:簡單地說,這意味着跟隨者不能像領導者收集數據那樣快速地獲取數據。
答:初始化ZooKeeper服務器是很是重要的一步,由於Kafka使用ZooKeeper,因此啓動Kafka服務器的過程是:
>bin/zooKeeper-server-start.sh config/zooKeeper.properties
>bin/kafka-server-start.sh config/server.properties
答:每當Kafka生產者試圖以代理的身份在當時沒法處理的速度發送消息時,一般都會發生QueueFullException。可是,爲了協做處理增長的負載,用戶須要添加足夠的代理,由於生產者不會阻止。
答:容許應用程序將記錄流發佈到一個或多個Kafka主題的API就是咱們所說的Producer API。
答:Kafka和Flume之間的主要區別是:
工具類型
複製功能
答:毫無疑問,Kafka是一個流處理平臺。它能夠幫助:
答:它能夠以多種方式執行,例如:
答:保留期限保留了Kafka羣集中的全部已發佈記錄。它不會檢查它們是否已被消耗。此外,能夠經過使用保留期的配置設置來丟棄記錄。並且,它能夠釋放一些空間。
答:Kafka能夠接收的最大消息大小約爲1000000字節。
答:基本上,傳統的消息傳遞方法有兩種,如:
答:ISR指的是同步副本。這些一般被分類爲一組消息副本,它們被同步爲領導者。
答:對於咱們的集羣,Kafka MirrorMaker提供地理複製。基本上,消息是經過MirrorMaker跨多個數據中心或雲區域複製的。所以,它能夠在主動/被動場景中用於備份和恢復;也能夠將數據放在離用戶更近的位置,或者支持數據位置要求。
答:咱們能夠輕鬆地將Kafka部署爲多租戶解決方案。可是,經過配置主題能夠生成或使用數據,能夠啓用多租戶。此外,它還爲配額提供操做支持。
答:容許應用程序訂閱一個或多個主題並處理生成給它們的記錄流的API,咱們稱之爲消費者API。
答:一種容許應用程序充當流處理器的API,它還使用一個或多個主題的輸入流,並生成一個輸出流到一個或多個輸出主題,此外,有效地將輸入流轉換爲輸出流,咱們稱之爲流API。
答:一個容許運行和構建可重用的生產者或消費者的API,將Kafka主題鏈接到現有的應用程序或數據系統,咱們稱之爲鏈接器API。
答:生產者的主要做用是將數據發佈到他們選擇的主題上。基本上,它的職責是選擇要分配給主題內分區的記錄。
答:Apache Kafka的另外一個選擇是RabbitMQ。那麼,讓咱們比較二者:
功能
性能速度
答:讓咱們比較一下傳統隊列系統與Apache Kafka的功能:
消息保留
基於邏輯的處理
答:爲了克服收集大量數據和分析收集數據的挑戰,咱們須要一個消息隊列系統。所以Apache Kafka應運而生。其好處是:
答:咱們將日誌視爲分區。基本上,數據源將消息寫入日誌。其優勢之一是,在任什麼時候候,都有一個或多個消費者從他們選擇的日誌中讀取數據。下面的圖表顯示,數據源正在寫入一個日誌,而用戶正在以不一樣的偏移量讀取該日誌。
答:咱們知道,在Kafka中,消息會保留至關長的時間。此外,消費者還能夠根據本身的方便進行閱讀。儘管如此,有一種可能的狀況是,若是將Kafka配置爲將消息保留24小時,而且消費者可能停機超過24小時,則消費者可能會丟失這些消息。可是,咱們仍然能夠從上次已知的偏移中讀取這些消息,但僅限於消費者的部分停機時間僅爲60分鐘的狀況。此外,關於消費者從一個話題中讀到什麼,Kafka不會保持狀態。
答:所以,調優Apache Kafka的方法是調優它的幾個組件:
答:Kafka的侷限性是:
答:Apache Kafka的業務包括:
答:Apache Kafka有不少用例,例如:
答:Netflix,Mozilla,Oracle
答:Kafka流的一些最佳功能是
答:連續、實時、併發和以逐記錄方式處理數據的類型,咱們稱之爲Kafka流處理。
答:系統工具備三種類型:
答:爲了加強持久性和更高的可用性,這裏提供了複製工具。其類型爲
答:爲了知足Kafka標準的高處理速率需求,咱們可使用java語言。此外,對於Kafka的消費者客戶,Java也提供了良好的社區支持。因此,咱們能夠說在Java中實現Kafka是一個正確的選擇。
答:Kafka的最佳特性是「各類各樣的用例」。
這意味着Kafka可以管理各類各樣的用例,這些用例對於數據湖來講很是常見。例如日誌聚合、Web活動跟蹤等。
答:在設計Kafka系統時,考慮主題複製是很是重要的。
答:生產者向特定主題分區發送的消息的順序相同。
一線互聯網大廠,面試所考到的知識可不止Kafka,固然多擁有一個技術點,對本身的面試也是一件好事;那麼針對Java成員,筆者整理了一套完整的已下線互聯網企業面試專題;包含了Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分佈式、高併發、性能調優、微服務等架構技術
須要這份面試題的朋友請點擊下方傳送門;便可免費領取完整的面試專題文件
如下是部分面試題截圖