Kafka入門和基礎配置

目錄

  • Kafka入門
    • 消息引擎系統ABC
    • 快速搞定Kafka術語
      • kafka三層消息架構
      • 名詞術語
  • Kafka基礎
    • Kafka部署參考
    • 重要配置參數
      • Broker端參數
      • Topic級別參數
      • JVM參數

Kafka是消息引擎系統,也是分布式流處理平臺

Kafka入門

消息引擎系統ABC

民間版:系統 A 發送消息給消息引擎系統,系統 B 從消息引擎系統中讀取 A 發送的消息。
消息引擎是用于在不同系統之間傳輸消息的,那么如何設計待傳輸消息的格式從來都是一等一的大事。Kafka使用的是純二進制的字節序列。當然消息還是結構化的,只是在使用之前都要將其轉換成二進制的字節序列。

點對點模型:也叫消息隊列模型。如果拿上面那個“民間版”的定義來說,那么系統 A發送的消息只能被系統 B 接收,其他任何系統都不能讀取 A 發送的消息。日常生活的例子比如電話客服就屬于這種模型:同一個客戶呼入電話只能被一位客服人員處理,第二個客服人員不能為該客戶服務。

發布 / 訂閱模型:與上面不同的是,它有一個主題(Topic)的概念,你可以理解成邏輯語義相近的消息容器。該模型也有發送方和接收方,只不過提法不同。發送方也稱為發布者(Publisher),接收方稱為訂閱者(Subscriber)。和點對點模型不同的是,這個模型可能存在多個發布者向相同的主題發送消息,而訂閱者也可能存在多個,它們都能接收到相同主題的消息。生活中的報紙訂閱就是一種典型的發布 / 訂閱模型。
我們不禁要問,為什么系統 A 不能直接發送消息給系統 B,中間還要隔一個消息引擎呢?
答案就是“削峰填谷”。
通常來說,兩個進程進行數據流交互的方式一般有三種:

  1. 通過數據庫:進程1寫入數據庫;進程2讀取數據庫
  2. 通過服務調用:比如REST或RPC,而HTTP協議通常就作為REST方式的底層通訊協議
  3. 通過消息傳遞的方式:進程1發送消息給名為broker的中間件,然后進程2從該broker中讀取消息。消息傳輸協議屬于這種模式

快速搞定Kafka術語

kafka三層消息架構

  • 第一層是主題層,每個主題可以配置 M 個分區,而每個分區又可以配置 N 個副本。
  • 第二層是分區層,每個分區的 N 個副本中只能有一個充當領導者角色,對外提供服務;其他 N-1 個副本是追隨者副本,只是提供數據冗余之用。
  • 第三層是消息層,分區中包含若干條消息,每條消息的位移從 0 開始,依次遞增。最后,客戶端程序只能與分區的領導者副本進行交互。

名詞術語

消息:Record。Kafka 是消息引擎嘛,這里的消息就是指 Kafka 處理的主要對象。
主題:Topic。主題是承載消息的邏輯容器,在實際使用中多用來區分具體的業務。
分區:Partition。一個有序不變的消息序列。每個主題下可以有多個分區。
消息位移:Offset。表示分區中每條消息的位置信息,是一個單調遞增且不變的值。
副本:Replica。Kafka 中同一條消息能夠被拷貝到多個地方以提供數據冗余,這些地方就是所謂的副本。副本還分為領導者副本和追隨者副本,各自有不同的角色劃分。副本是在分區層級下的,即每個分區可配置多個副本實現高可用。
生產者:Producer。向主題發布新消息的應用程序。消費者:Consumer。從主題訂閱新消息的應用程序。消費者位移:Consumer Offset。表征消費者消費進度,每個消費者都有自己的消費者位移。
消費者組:Consumer Group。多個消費者實例共同組成的一個組,同時消費多個分區以實現高吞吐。重平衡:Rebalance。消費者組內某個消費者實例掛掉后,其他消費者實例自動重新分配訂閱主題分區的過程。Rebalance 是 Kafka 消費者端實現高可用的重要手段。
在這里插入圖片描述

Kafka監控工具:
kafka manager kafka eagle JMXTrans + InfluxDB + Grafana

Kafka基礎

Kafka部署參考

重要配置參數

Broker端參數

log.dirs: 指定了Broker需要使用的若干個文件目錄路徑。在線上生產環境中一定要為log.dirs配置多個路徑,具體格式是一個 CSV 格式,也就是用逗號分隔的多個路徑,比如/home/kafka1,/home/kafka2,/home/kafka3這樣。如果有條件的話你最好保證這些目錄掛載到不同的物理磁盤上。
zookeeper.connect:
這也是一個 CSV 格式的參數,比如我可以指定它的值為zk1:2181,zk2:2181,zk3:2181。2181 是 ZooKeeper的默認端口。
如果我讓多個 Kafka 集群使用同一套ZooKeeper 集群,那么這個參數應該怎么設置呢?這時候chroot 就派上用場了。這個 chroot 是 ZooKeeper 的概念,類似于別名。
如果你有兩套 Kafka 集群,假設分別叫它們 kafka1 和kafka2,那么兩套集群的zookeeper.connect參數可以這樣指定:zk1:2181,zk2:2181,zk3:2181/kafka1和zk1:2181,zk2:2181,zk3:2181/kafka2。切記 chroot只需要寫一次,而且是加到最后的。
zookeeper.connect=172.20.38.137:34983,172.20.38.148:34983,172.20.38.125:34983
listeners:
listeners:學名叫監聽器,其實就是告訴外部連接者要通過什么協議訪問指定主機名和端口開放的 Kafka 服務。
監聽器的概念,從構成上來說,它是若干個逗號分隔的三元組,每個三元組的格式為<協議名稱,主機名,端口號>。這里的協議名稱可能是標準的名字,比如PLAINTEXT 表示明文傳輸、SSL 表示使用 SSL 或 TLS 加密傳輸等;也可能是你自己定義的協議名字
listeners=PLAINTEXT://172.20.38.148:34984
advertised.listeners
和 listeners 相比多了個advertised。Advertised 的含義表示宣稱的、公布的,就是說這組監聽器是 Broker 用于對外發布的。
advertised.listeners主要是為外網訪問用的。如果clients在內網環境訪問Kafka不需要配置這個參數。
log.retention.{hour|minutes|ms}
log.retention.hour=168
自動刪除 7 天前的數據
log.retention.bytes:這是指定 Broker 為消息保存的總磁盤容量大小
message.max.bytes:
message.max.bytes=10485760(10M)
auto.create.topics.enable:是否允許自動創建Topic。
unclean.leader.election.enable:是否允許Unclean Leader 選舉。
auto.leader.rebalance.enable:是否允許定期進行 Leader 選舉。

Topic級別參數

Topic級別參數會覆蓋全局Broker參數的值,可以通過kafka-configs自帶腳本修改Topic級別參數。
retention.ms:規定了該 Topic 消息被保存的時長。默認是 7 天,即該 Topic 只保存最近 7 天的消息。一旦設置了這個值,它會覆蓋掉 Broker 端的全局參數值。
retention.bytes:規定了要為該 Topic 預留多大的磁盤空間。和全局參數作用相似,這個值通常在多租戶的Kafka 集群中會有用武之地。當前默認值是 -1,表示可以無限使用磁盤空間。

JVM參數

  • KAFKA_HEAP_OPTS:指定堆大小。(一般設置6G)
  • KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 參數

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89048.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OPENPPP2 VEthernet 網絡協議堆棧(CTCP)VNetStack 深度技術解析

&#x1f310; OPENPPP2 VEthernet 網絡協議堆棧&#xff08;CTCP&#xff09;VNetStack 深度技術解析&#x1f3d7;? 一、系統架構全景圖 #mermaid-svg-FdlbKZCGQDDbvOL6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermai…

Gartner發布2025年中國網絡安全成熟度曲線:網絡安全的重點正轉向保護AI、推動業務轉型和增強組織韌性

網絡安全的重點正轉向保護人工智能、推動業務轉型和增強組織韌性。首席信息官及其安全和風險管理主管可以利用這份技術成熟度曲線來識別實用且高價值的技術和實踐&#xff0c;從而保持安全和敏捷。 戰略規劃假設 到2027年&#xff0c;60%的中國大型組織將在安全運營中心&#x…

網絡準入控制系統的作用解析,2025年保障企業入網安全第一道防線

在當今數字化時代&#xff0c;網絡已成為企業運營的基礎&#xff0c;隨著網絡的廣泛應用&#xff0c;網絡準入控制系統作為保障網絡安全的重要手段&#xff0c;正發揮著至關重要的作用。保障網絡安全網絡準入控制系統如同網絡的忠誠衛士&#xff0c;它為網絡大門安裝了智能鎖&a…

java基礎(day09)

目錄 1.繼承的作用 2.繼承樹 3.protected和super protected super 注&#xff1a;super/this()--構造方法&#xff0c;第一行&#xff0c;一般不同時出現 4.向上向下轉型 向上轉型 向下轉型 final 小結 1.繼承的作用 理解&#xff1a;首先就是可以實現代碼復用&#x…

如何進行選擇。

初始理解問題 首先&#xff0c;我們需要明確題目在問什么。題目“House Robber”描述的是一個強盜在一排房屋前&#xff0c;每個房屋都有一定數量的錢。強盜不能連續搶劫兩個相鄰的房屋&#xff0c;否則會觸發警報。目標是搶劫到最多的錢。 動態規劃的思路 這個問題可以使用動態…

PHP語法高級篇(三):Cookie與會話

Cookie與會話在 Web 編程中十分實用&#xff1a;Cookie 能實現一周免登錄&#xff0c;還能記住用戶的主題偏好&#xff1b;會話可保存當前用戶信息&#xff0c;也能臨時存儲購物車數據。本篇文章將記錄Cookie與會話的學習過程。 一、Cookie cookie 常用于識別用戶。cookie 是服…

11. JVM中的分代回收

1. JVM介紹和運行流程-CSDN博客 2. 什么是程序計數器-CSDN博客 3. java 堆和 JVM 內存結構-CSDN博客 4. 虛擬機棧-CSDN博客 5. JVM 的方法區-CSDN博客 6. JVM直接內存-CSDN博客 7. JVM類加載器與雙親委派模型-CSDN博客 8. JVM類裝載的執行過程-CSDN博客 9. JVM垃圾回收…

基于PaddleOCR的營業執照識別與數據分析系統

基于PaddleOCR的營業執照識別與數據分析系統 1. 項目概述 本項目旨在利用百度PaddleOCR技術識別營業執照圖片中的關鍵信息,結合自然語言處理(NLP)和卷積神經網絡(CNN)對OCR結果進行分類處理,最后對識別出的收入流水數據進行深度分析與可視化展示。系統將實現從圖像識別到數…

SpringBoot JSON字典序列化翻譯

&#x1f9e9; 一、效果預期 Data public class UserVO {private String status;DictTranslate(type "user_status")private String statusName; }最終返回 JSON&#xff1a; {"status": "1","statusName": "啟用" }&#…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一個WebUI自動化框架(5)失敗用例截圖與重試

在UI自動化測試用例執行過程中&#xff0c;經常會有很多不確定的因素導致用例執行失敗&#xff0c;比如網絡原因、環境問題等&#xff0c;所以我們有必要引入重試機制&#xff08;失敗重跑&#xff09;&#xff0c;來提高測試用例執行穩定性。準備工作&#xff1a;我們在進行失…

【Oracle】centos7靜默安裝oracle19c

靜默安裝三步驟&#xff1a; 1、數據庫安裝db_install.rsp&#xff08;數據庫軟件安裝響應文件&#xff09;2、配置監聽netca.rap&#xff08;監聽配置響應文件&#xff09;3、建庫dbca.rsp&#xff08;建庫響應文件&#xff09;安裝oracle19c先決條件準備&#xff1a; 1.檢查主…

MCP基礎知識二(實戰通信方式之Streamable HTTP)

介紹 MCP 使用 JSON-RPC 2.0 作為其傳輸格式。傳輸層負責將 MCP 協議消息轉換為 JSON-RPC 格式進行傳輸&#xff0c;并將接收到的 JSON-RPC 消息轉換回 MCP 協議消息。其中SSE被廢棄了&#xff08;Server-Sent Events (SSE) - Deprecated&#xff09; SSE as a standalone tra…

量子計算與AI的融合:開啟智能革命的“量子躍遷”新范式

當量子計算的并行算力與人工智能的深度學習能力相遇,一場顛覆傳統認知的技術革命正在醞釀。從藥物研發到自動駕駛,從金融風控到氣候預測,兩者的融合不僅突破了經典計算的算力天花板,更催生出全新的算法范式與產業生態。本文將深入解析量子計算與AI融合的技術邏輯、核心突破…

【氮化鎵】不同偏壓應力下電荷俘獲效應導致的P-GaN HEMT閾值電壓不穩定性

2022年12月7日,意大利國家研究委員會微電子與微系統研究所的Giuseppe Greco等人在《Applied Physics Letters》期刊發表了題為《Threshold voltage instability by charge trapping effects in the gate region of p-GaN HEMTs》的文章,基于對p-GaN高電子遷移率晶體管(HEMTs…

ONLYOFFICE深度解鎖系列.10-如何識別圖像和PDF掃描件中的文本?用ONLYOFFICE的AI OCR輕松搞定!

ONLYOFFICE 文檔版本 9.0帶來多項 AI 關鍵改進&#xff0c;顯著提升您處理電子表格和 PDF 文件的工作效率。本指南將重點介紹新增的 OCR 功能&#xff0c;并講解如何在 PDF 編輯器中利用 AI 助手將圖像轉為可編輯文本。什么是 OCR 文字識別&#xff1f;OCR 技術能夠掃描各類文檔…

單例模式詳解:確保一個類只有一個實例

在軟件開發中&#xff0c;設計模式是解決常見問題的經典方案。單例模式&#xff08;Singleton Pattern&#xff09;作為創建型設計模式中最簡單也最常用的一種&#xff0c;確保一個類只有一個實例&#xff0c;并提供一個全局訪問點。本文將全面探討單例模式的概念、多種實現方式…

Appdynamic 配置 PostgreSQL 收集器

配置 PostgreSQL 收集器 您可以使用數據庫可見性監控任何版本的 PostgreSQL。 連接詳細信息 部分場地描述創建新的收集器數據庫類型您想要監控的數據庫類型。代理人管理收集器的數據庫代理。收藏家姓名您想要用來識別收集器的名稱。連接詳細信息主機名或 IP 地址運行數據庫的機…

其他常見 HTTP 方法

除了最常用的四種方法&#xff08;GET、POST、PUT、DELETE&#xff09;&#xff0c;HTTP 協議還定義了一些較少使用但非常有用的請求方法&#xff0c;常用于調試、部分更新、跨域預檢等場景。1. HEAD 方法&#xff1a;獲取響應頭 特點&#xff1a; 用途&#xff1a;與 GET 類似…

Web應用防火墻(WAF)技術

目錄 一&#xff1a;簡介 1.1 Web安全現狀 1.2 傳統防御的局限性 二&#xff1a;Web應用防火墻技術解析 2.1 WAF核心架構 2.2 關鍵技術特性 三&#xff1a;WAF必要性 3.1 典型防護場景 3.2 與傳統方案對比 四&#xff1a;進階防護方案 4.1 智能WAF架構 4.2 關鍵技術…

機器學習之線性回歸(七)

機器學習之線性回歸&#xff08;七&#xff09; 文章目錄機器學習之線性回歸&#xff08;七&#xff09;一、線性回歸線性回歸超全指南&#xff1a;從“一條直線”到“正則化調參”的完整旅程0. 先對齊語言&#xff1a;標稱型 vs 連續型1. 問題形式化2. 損失函數全景3. 求解方法…