1.壹般會先創建壹個主題。比如TopicA有三個分區,兩個副本(壹共兩個:leader+follower)。同壹個分區的兩個副本肯定不在同壹個服務器上。
2.kafka工作流程基本總結:1) Broker: Broker代表Kafka的節點。經紀人是分布式的,相互獨立。啟動時向zookeeper註冊,Zookeeper上會有壹個專門記錄代理服務器列表的節點:/brokers/ids。
3.流程描述:用戶先構造要發送的消息對象ProducerRecord,然後調用KafkaProducer#send方法發送。
4.卡夫卡的工作流程在卡夫卡那裏,消息是按主題分類的,生產者生產消息,消費者消費消息,閱讀和消費的是同壹個主題。
5.和其他中間件壹樣,kafka每次發送數據都是發送到Leader分區,按順序寫入磁盤。那麽主分區將把數據同步到每個從分區的從分區。即使主分區掛起,也不會影響服務的正常運行。
卡夫卡式分割
在前面的示例中(Kafka producer-將數據寫入Kafka),ProducerRecord對象包含目標主題、鍵和值。
第壹步:將所有主題分區做成壹個topicanpartition列表,然後根據hashCode對topicanpartition列表進行排序,最後通過輪詢的方式發送給每個消費線程。
在Kafka中,每個主題會包含多個分區,默認下壹個分區只能被壹個消費群下的兩個消費者消費,這就產生了分區分配的問題。
您需要的分區越多,您需要的文件句柄就越多。您可以通過配置操作系統參數來增加打開文件句柄的數量。
總之,卡夫卡的消息存儲采用分區、LogSegment、稀疏索引,實現了高效率。
Kafka是壹個分布式消息系統,支持分區和多副本,基於zookeeper的協調。
kafka的消息隊列(III)壹致性和故障處理策略
服務器在處理消息時需要冪等,消息的生產者和接收者都需要冪等;發送方需要添加壹個定時器來遍歷和重推未處理的消息,以避免消息丟失導致的事務執行斷裂。
高吞吐量:Kafka具有很高的吞吐量,即使在單節點性能較低的商用集群中,也能保證單節點每秒傳輸65438+百萬條消息。容錯性高:Kafka在設計上支持多分區多副本的策略,容錯性強。
如果要保證壹致性,生產者需要在失敗後重試,但是重試會導致消息重復的問題。壹種解決方案是給每條消息壹個唯壹的id,通過服務器的主動避免消息重復的問題,但這種機制目前在Kafka中還沒有實現。
此時,rahbitMQ會立即刪除該消息。在這種情況下,如果使用者未能以異常方式處理消息(但消息隊列已經認為消息已被使用),則消息將會丟失。至於解決方案,手動確認消息就足夠了。
Kafka的存儲機制在這個時候,生產者產生的消息將被追加到日誌文件的末尾,這樣文件就會變得越來越大。為了防止日誌文件過大造成數據定位效率低下,Kafka采用了分片索引機制。
Kafka是壹個分布式消息隊列,具有高性能、持久性、多副本備份和橫向擴展的特點。生產者將消息寫入隊列,消費者從隊列中取出消息用於業務邏輯。壹般在架構設計中起到解耦、削峰、異步處理的作用。
卡夫卡的原理是什麽?
1,Kafka是壹個消息系統,最初是從LinkedIn發展而來,作為LinkedIn的ActivityStream和operation數據處理管道的基礎。現在它已被許多公司用作各種類型的數據管道和消息系統。
2.Kafka的復制機制是多個服務器節點復制其他節點主題分區的日誌。當集群中的壹個節點出現故障時,訪問故障節點的請求會被轉移到其他正常節點上(這個過程通常稱為再平衡)。
3.Kafka使用壹個全球唯壹的編號來指代每個代理服務器。不同的經紀人必須用不同的經紀人id註冊。創建節點後,每個代理將在節點中記錄自己的IP地址和端口信息。
4.kafka消息的排序是通過消息鍵保序策略實現的。壹個主題,壹個分區,壹個消耗者,內部單線程消耗,寫N個內存隊列,然後N個線程分別消耗壹個內存隊列。
卡夫卡面試問題
1,談談妳對卡夫卡冪等性的理解?Producer的冪等性是指在發送相同的消息時,數據在服務器端只會被持久化壹次,數據不會丟失或重,但這裏的冪等性是有條件的:Kafka在0.11版本中引入了事務支持。
2.分享壹些Linux面試問題的筆記,從負載均衡、nginx、MySQL、redis、kafka、zabbix、k8s等方面拆解Linux知識點。用於查漏補缺個人技術點。
3,大公司,基礎設施研發實力強,用RocketMQ是個不錯的選擇。如果是大數據領域實時計算和日誌收集的場景,Kafka是行業標準,絕對沒問題,社區活躍度很高,絕對不會黃,更何況在全世界這個領域幾乎是常態。
4.比如妳寫妳擅長MySQL,Jquery,bootstrap,那麽我們會問這些問題。當然也不會特別難。只是證明妳真的知道,不是在吹牛。
5.它包括遠程服務框架中間件,比如Dubbo,Apache的RPC框架。消息隊列中間件,如:阿裏巴巴開源分布式中間件RocketMQ,高吞吐量消息發布和流媒體服務Kafka等。
6.大家都知道卡夫卡性能好,但是真正明白其中原因的人比較少。這也是壹個悲傷的故事。我的壹次采訪對這個話題很酷。那麽卡夫卡是如何從設計的角度實現高性能的呢?卡夫卡會把信息寫到硬盤上,永遠不會丟失數據。