kafka初步介紹

Kafka角色介紹

Topic

? ? ? ? Topic主題的意思,消費者必須指定主題用于的消息發送,生產者也必須指定主題用于消息的接收。topic只是邏輯上的劃分。

partition

? ? ? ? partition是分區的意思,他的主要作用是將發送到一個topic的數據做一個劃分。如果有4個partition那么消費者就可以去這四個分區中獲取消息,理想情況下提高了4倍效率。(降低Topic處理消息的壓力)其中的offset是用來記錄消息在分區當中的物理位置,可以用來保證在同一分區下消息的順序性。

? ? ? ? partition是將消息以物理的形式進行隔離,就是在一個目錄下由不同文件存儲。

broker

? ? ? ? broker即kafka服務器中的一個節點。用于接收生產者發來的消息、將消息寫入磁盤(分區對應的日志文件)、向消費者提供消息、參與分區副本的同步與 Leader 選舉

consumer-group

? ? ? ? 消費者組是讓一組消費者消費一個或者多個主題的分區,一個消費者組中一個分區只會被其中一個消費者消費。

? ? ? ? 分組的好處:組相當于調度中心,如果組內有人丟失消息了,組內維護有offset可以幫忙你送。誰沒活都去配置中心領。

? ? ? ? 為什么不用一個分組消費一個分區。每個組offset不共享,當組內無法處理時外部就會從最開始的消息開始消費出現重復消費。擴展也麻煩想要擴展只能加消費者組。

熟悉Kafka配置

kafka的配置可以通過配置類的形式進行設置,但是我們使用SpringBoot可以通過properties/yaml文件的形式加載配置(值得注意的是properties文件都是以扁平鍵值對,用 . 分割;yaml文件是通過樹形結構)然后就可以通過注解的形式使用Kafka

#表示配置Kafaka服務地址,通過 ,可以配置多臺服務
spring.kafka.bootstrap-servers = 127.0.01
#表示Kafka消息失敗重試次數
spring.kafka.producer.retries=3
#設置批量發送消息大小的閥值,達到16kb就會批量發送。
#批次發送的意義是為了減少網絡開支成本,多條消息建立一次網絡通道
#但是這里沒有設置消息等待發送時間,也就是每一條消息都會立即發送,這條消息更像是一個保險策略
spring.kafka.producer.batch-size=16384
#設置緩沖區大小,消息都會放到緩沖區里面等待
spring.kafka.producer.buffer-memory=33554432
#消息確認機制 0表示無需ack機制 1表示需要leader節點確認(ACK機制) -1 表示需要所有節點都確認
spring.kafka.producer.acks=1
#設置鍵值對的序列化方式。kafka對于生產者和消費者都必須設置序列化類型,
#因為Kafka將生產者消息將對象轉為字符數組,消費者需要將字符數組轉為需要的類型
#所以為了讓Kafka能夠接收消費消息都需要設置序列化類型
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
#消費者組的意義是為了記錄一個組中消息消費到的位置也就是offset
#這樣新加入的消費者就知道從哪里開始執行任務
spring.kafka.consumer.group-id=default-group-td-geek
#兜底策略,避免因消息正在消費時,偏移量提交時宕機導致該條消息不消費。
#手動提交,只有在消息被消費完畢之后才會去提交偏移量
spring.kafka.consumer.enable-auto-commit=false
#兜底策略,當消費者啟動時,判斷偏移量是否可靠,如果不可靠 配置lateset讓消費者從最新消息開始消費 配置earliest讓消費者從最早消息開始消費
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

消息生產者

只需要注入Kafka客戶端,調用客服端對象的send方法就可以發送消息,send方法需要指定消息發送到的topic,還有具體的數據。同時我們可以設置key值用于,分區運算,保證消息順序(在同一個分區下消息可以保證順序性)

消息消費者

通過注解的方式綁定監聽器,監聽器可以接收指定的topic用來消費消息。

@KafkaListener(topics = {"alphaess_"})
//ConsumerRecord<String, String> 是Kafka中消息記錄對象,第一個String指的是Key 第二個String指的是Value
public void onMessage1(ConsumerRecord<String, String> record){// 消費的哪個topic、partition的消息,打印出消息內容System.out.println("簡單消費:"+record.topic()+"-"+record.partition()+"-"+record.value());
}

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

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

相關文章

windows10的vs2019編譯openssl靜態庫備忘

1、下載安裝openssl源碼2、官網下載安裝activeperl或Strawberry Perl。官網下載慢&#xff0c;網盤找找。使用中activeperl有些異常提示、缺模塊&#xff0c;最后使用了Strawberry Perl。3、安裝nasm。powershell使用choco install nasm -y 即可。powershell使用cd命令打開當前…

學習筆記與效率提升指南:編程、記憶與面試備考

在學習與工作中&#xff0c;高效的記錄習慣、針對性的記憶方法和實用的技能儲備&#xff0c;是提升效率的關鍵。本文結合編程學習、面試備考和英語單詞積累&#xff0c;整理一套可落地的學習思路&#xff0c;尤其適合編程初學者。 一、學習核心原則&#xff1a;高效優先&#x…

順豐面試題

1. 你擅長處理哪類問題推薦回答&#xff1a; "我比較擅長處理以下幾類前端問題&#xff1a;性能優化&#xff1a;包括加載優化&#xff08;代碼分割、懶加載&#xff09;、運行時優化&#xff08;減少重排重繪&#xff09;等復雜組件開發&#xff1a;如表單聯動、可視化圖…

Warmup_steps 設置經驗

文章目錄什么是 Warmup&#xff1f;實現示例科學設置 Warmup 的黃金法則直觀例子什么是 Warmup&#xff1f; Warmup 是一種學習率調度策略&#xff0c;在訓練初期逐步增加學習率&#xff08;LR&#xff09;&#xff0c;而不是直接使用目標學習率。它解決了兩個關鍵問題&#x…

vue一個超簡單的菜單欄伸縮示例

代碼<template><div class"container"><!-- 左側區域 --><div class"left-side" :style"{ width: leftWidth px }">左側內容</div><!-- 右側區域 --><div class"right-side" :style"{ l…

Spark學習(Pyspark)

&#xff08;1&#xff09;Spark基礎入門 ①什么是Spark Spark是一款分布式內存計算的統一分析引擎。其特點就是對任意類型的數據進行自定義計算。Spark可以計算&#xff1a;結構化、半結構化、非結構化等各種類型的數據結構&#xff0c;同時也支持使用Python、Java、Scala、R以…

PDF壓縮原理詳解:如何在不失真的前提下減小文件體積?

與直接刪除內容不同&#xff0c;良好的PDF壓縮能在大幅減小體積的同時&#xff0c;較好地保留原有文字清晰度和圖像質量&#xff0c;兼顧實用性與視覺效果。軟件操作十分直觀&#xff0c;僅需設置輸入文件與輸出路徑&#xff0c;點擊【開始壓縮】按鈕即可啟動處理。畫質壓縮等級…

從應用場景看國產化FPGA潛力,紫光同創研討會武漢·北京站回顧

八月&#xff0c;紫光同創 FPGA 技術研討會先后在武漢、北京舉行。作為紫光同創官方合作伙伴&#xff0c;ALINX 攜紫光同創 FPGA 開發板及行業解決方案亮相&#xff0c;與來自通信、工業控制、醫療、圖像視頻、消費電子等領域的近 200 位行業專家齊聚一堂&#xff0c;通過主題演…

安卓APK包體優化全攻略

目錄 正常默認打包流程&#xff08;以Android平臺為例&#xff09; 查看編輯器打包日志 壓縮圖片 壓縮網格模型 壓縮貼圖 壓縮音頻文件 只打64位包 最終大小 正常默認打包流程&#xff08;以Android平臺為例&#xff09; 準備工作&#xff1a; 確保已安裝最新版Unity H…

嵌入式學習日記(28)進程、線程

回收資源空間子進程回收策略1、wait阻塞回收&#xff1a;一般情況下父進程專門負責回收2、waitpid非阻塞回收&#xff1a;搭配輪詢方式回收3、不回收&#xff1a;子進程任務一致執行4、異步回收&#xff1a;子進程結束后通知父進程進行回收exec 函數族三種調用外部程序的方式#i…

測試用例的一些事項

為什么要寫測試用例&#xff1f;寫測試用例的原因是為了避免遺漏測試&#xff0c;我們要根據給的文檔將邏輯都表達出來&#xff0c;不能因為簡單而不寫&#xff0c;日后版本更新就知道自己哪些測了哪些沒測。在沒有文檔的時候測試用例該怎么寫&#xff1f;大家可以考慮安全測試…

當Java遇見AI:飛算驅動的個人博客介紹智能生成風暴

一、飛算JavaAI&#xff1a;重新定義個人開發的"智能魔法棒" 1.1 開發者需求變革&#xff1a;從"技術門檻"到"創意優先"的時代 在數字化浪潮席卷全球的今天&#xff0c;個人品牌建設已成為技術從業者、創業者乃至學生的剛需——無論是程序員分享…

小程序排名優化:用戶行為數據背后的提升密碼

用戶在小程序中的每一次點擊、每一次停留、每一次分享&#xff0c;都在產生著有價值的數據。這些看似零散的用戶行為數據&#xff0c;其實隱藏著提升小程序排名的密碼。平臺在判定小程序排名時&#xff0c;用戶行為數據是重要的參考依據&#xff0c;因為它直接反映了小程序對用…

【DSP28335 入門教程】深度解析中斷系統:三級架構與響應機制

大家好&#xff0c;歡迎來到我們的 DSP28335 深度解析系列。在之前的實戰中&#xff0c;我們通過 while(1) 循環和延時函數實現了各種控制&#xff0c;這種方式被稱為輪詢。但輪詢就像一個焦急的門衛&#xff0c;需要不停地去檢查每個門口是否有人&#xff0c;既浪費精力又效率…

代碼隨想錄二刷之“字符串”~GO

1.344. 反轉字符串 - 力扣&#xff08;LeetCode&#xff09; func reverseString(s []byte) {left : 0right : len(s)-1for left < right{s[left],s[right] s[right],s[left]leftright--}return } 感悟&#xff1a;還是go語法熟練程度的問題&#xff0c;需要注意的是&am…

(!萬字血書!)文本預處理:NLP 版 “給數據洗澡” 指南

好吧&#xff0c;我承認我是個標題黨&#xff01;(不這樣你會點進來享受這篇 通俗易懂 的好文章嗎&#xff1f;) 正經標題&#xff1a;文本預處理全流程:從基礎到實踐 &#xff08;屏幕前的你&#xff0c;帥氣低調有內涵&#xff0c;美麗大方很優雅… 所以&#xff0c;求…

最新chrome瀏覽器elasticsearch-head無法安裝使用問題

chrome瀏覽器網址欄復制粘貼以下內容輸入回車 chrome://flags/#allow-legacy-mv2-extensions 找到Allow legacy extension manifest versions項右側選擇Enabled啟用&#xff0c;重啟瀏覽器即可。

CSS aspect-ratio 屬性

aspect-ratio 是 CSS 中用于控制元素寬高比的屬性&#xff0c;通過一行代碼即可實現響應式比例布局&#xff0c;無需復雜計算。它確保元素在不同屏幕尺寸下保持固定比例&#xff0c;提升響應式設計效率。一、基本語法與取值selector {aspect-ratio: <width> / <height…

FreeRTOS多核支持

個人博客&#xff1a;blogs.wurp.top 簡介 1. 多核支持概述 在傳統的單核系統中&#xff0c;FreeRTOS 通常運行在一個 CPU 核心上&#xff0c;負責任務調度、中斷處理和資源管理。然而&#xff0c;在多核系統中&#xff0c;多個核心可以并行執行不同的任務或線程&#xff0c…

CUDA中的基本概念

要學習cuda的同學相信已經對其有一定的了解了&#xff0c;至少直到它是干什么的了。這篇文章主要是對cuda編程中的主要概念進行總結&#xff0c;有了一個大致的輪廓后就好入手了。 異構架構 異構架構即使用CPU和GPU共同進行計算。GPU不能作為一個獨立的運行平臺&#xff08;程序…