K8S部署ELK(二):部署Kafka消息隊列

目錄

1. Kafka 簡介

1.1 Kafka 核心概念

(1)消息系統 vs. 流處理平臺

(2)核心組件

1.2 Kafka 核心特性

(1)高吞吐 & 低延遲

(2)持久化存儲

(3)分布式 & 高可用

(4)水平擴展

(5)流處理能力

1.3 Kafka 典型應用場景

1.4 Kafka 架構示例

數據流示例(訂單處理)

1.5 Kafka vs 其他消息隊列

2. kafka部署

2.1 創建Namespace

2.2 創建ConfigMap

2.3 創建Headless Service

2.4 創建Statefulset

2.5 部署所有資源

2.6 檢查kafka Pod狀態


1. Kafka 簡介

Apache Kafka 是一個 分布式流處理平臺,主要用于構建 高吞吐量、低延遲、可擴展 的實時數據管道和流式應用程序。它最初由 LinkedIn 開發,后成為 Apache 頂級開源項目,廣泛應用于大數據、日志聚合、事件驅動架構等領域。


1.1 Kafka 核心概念

(1)消息系統 vs. 流處理平臺

  • 傳統消息隊列(如 RabbitMQ):主要用于解耦生產者和消費者,保證消息可靠傳遞。

  • Kafka

    • 不僅是一個消息隊列,還是一個 分布式流存儲系統,支持持久化存儲和流式計算。

    • 適用于 高吞吐、大規模數據流 場景(如日志、指標、事件數據)。

(2)核心組件

組件說明
Producer(生產者)向 Kafka 發送消息(如日志、交易數據)。
Consumer(消費者)從 Kafka 讀取并處理消息。
Broker(代理)Kafka 服務器,負責存儲和轉發消息。
Topic(主題)消息的分類(類似數據庫表),如 orderslogs
Partition(分區)每個 Topic 可分成多個 Partition,提高并行處理能力。
Offset(偏移量)每條消息在 Partition 中的唯一 ID(類似數據庫主鍵)。
Consumer Group(消費者組)多個消費者共同消費一個 Topic,實現負載均衡。
ZooKeeper管理 Kafka 集群元數據(新版本 Kafka 已逐步移除依賴)。

1.2 Kafka 核心特性

(1)高吞吐 & 低延遲

  • 支持每秒百萬級消息處理(取決于硬件配置)。

  • 采用 順序 I/O(相比隨機 I/O 更快)和 零拷貝 技術優化性能。

(2)持久化存儲

  • 消息默認持久化到磁盤(可配置保留時間),支持 重放(replay) 數據。

  • 適用于 事件溯源(Event Sourcing)審計日志

(3)分布式 & 高可用

  • 支持 多副本(Replication),防止數據丟失。

  • 自動故障轉移(Leader/Follower 機制)。

(4)水平擴展

  • 可動態增加 Broker 和 Partition,提升吞吐量。

(5)流處理能力

  • 配合 Kafka StreamsksqlDB 可實現實時流計算(如聚合、窗口計算)。


1.3 Kafka 典型應用場景

場景說明
日志聚合收集應用日志(替代 ELK 中的 Logstash)。
消息隊列解耦微服務,如訂單系統 → 庫存系統。
實時數據處理結合 Flink/Spark Streaming 做實時分析。
事件驅動架構如用戶行為追蹤、IoT 設備數據采集。
Commit Log(提交日志)數據庫變更捕獲(CDC),如 Debezium + Kafka。

1.4 Kafka 架構示例

生產者(Producer) → Kafka Cluster(Broker1, Broker2...)↓
消費者(Consumer Group)→ 實時處理(Flink/Spark)↓存儲(HDFS/DB)

數據流示例(訂單處理)

  1. 訂單服務(Producer)發送消息到 orders Topic。

  2. 庫存服務(Consumer)讀取 orders 消息,扣減庫存。

  3. 分析服務(Consumer)統計實時銷售額。


1.5 Kafka vs 其他消息隊列

特性KafkaRabbitMQPulsar
吞吐量???????????
延遲??????????
持久化支持(磁盤)可選(內存/磁盤)支持
流處理原生支持(Kafka Streams)不支持支持(Pulsar Functions)
適用場景大數據、日志任務隊列、RPC多租戶、云原生

? 適用 Kafka 的場景

  • 需要高吞吐、持久化存儲的實時數據流(如日志、事件)。

  • 流處理(如實時分析、監控)。

? 不適用 Kafka 的場景

  • 需要復雜路由(RabbitMQ 更合適)。

  • 低延遲任務隊列(Redis Streams/RabbitMQ 更好)。

Kafka 已成為現代數據架構的核心組件,廣泛應用于大數據、微服務、實時計算等領域。

2. kafka部署

2.1 創建Namespace

kubectl create namespace elk

2.2 創建ConfigMap

vim kafka-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: ldc-kafka-scriptsnamespace: elk
data:setup.sh: |-  #啟動腳本#!/bin/bashexport KAFKA_CFG_NODE_ID=${MY_POD_NAME##*-} exec /opt/bitnami/scripts/kafka/entrypoint.sh /opt/bitnami/scripts/kafka/run.sh

2.3 創建Headless Service

vim kafka-headless.yaml
apiVersion: v1
kind: Service
metadata:name: kafka-headlessnamespace: elk
spec:clusterIP: Noneselector:app: kafkaports:- name: brokerport: 9092- name: controllerport: 9093

2.4 創建Statefulset

vim kafka-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: kafkanamespace: elklabels:app: kafka
spec:selector:matchLabels:app: kafkaserviceName: kafka-headlesspodManagementPolicy: Parallelreplicas: 1  #根據資源情況設置實例數,推薦3個副本updateStrategy:type: RollingUpdatetemplate:metadata:labels:app: kafkaspec:affinity:nodeAffinity:  #這里做了節點親和性調度到master節點requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: node-role.kubernetes.io/control-planeoperator: Exists#values:#- mastertolerations:- key: "node-role.kubernetes.io/control-plane"operator: "Exists"effect: "NoSchedule"containers:- name: kafkaimage: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kafka:3.4.0imagePullPolicy: "IfNotPresent"command:- /opt/leaderchain/setup.shenv:- name: BITNAMI_DEBUGvalue: "true" #詳細日志# KRaft settings - name: MY_POD_NAME # 用于生成KAFKA_CFG_NODE_IDvalueFrom:fieldRef:fieldPath: metadata.name ? ? ? ? ? ?- name: KAFKA_CFG_PROCESS_ROLESvalue: "controller,broker"- name: KAFKA_CFG_CONTROLLER_QUORUM_VOTERSvalue: "0@kafka-0.kafka-headless:9093"  #修改實例數時要更新- name: KAFKA_KRAFT_CLUSTER_IDvalue: "Jc7hwCMorEyPprSI1Iw4sW" ?# Listeners ? ? ? ? ? ?- name: KAFKA_CFG_LISTENERSvalue: "PLAINTEXT://:9092,CONTROLLER://:9093"- name: KAFKA_CFG_ADVERTISED_LISTENERSvalue: "PLAINTEXT://:9092"- name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAPvalue: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT"- name: KAFKA_CFG_CONTROLLER_LISTENER_NAMESvalue: "CONTROLLER"- name: KAFKA_CFG_INTER_BROKER_LISTENER_NAMEvalue: "PLAINTEXT"- name: ALLOW_PLAINTEXT_LISTENERvalue: "yes"ports:- containerPort: 9092name: broker- containerPort: 9093name: controllerprotocol: TCP ? ? ? ? ? ? ? ? ? ? volumeMounts:- mountPath: /bitnami/kafkaname: kafka-data- mountPath: /opt/leaderchain/setup.shname: scriptssubPath: setup.shreadOnly: true ? ? ?securityContext:fsGroup: 1001runAsUser: 1001volumes: ? ?- configMap:defaultMode: 493name: ldc-kafka-scripts  #ConfigMap的名字name: scripts ? ? ? ? ? ? ? ? ? volumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: kafka-dataspec:accessModes: [ "ReadWriteOnce" ] storageClassName: nfs-client  #存儲類的名稱resources:requests:storage: 1Gi

2.5 部署所有資源

[root@master1 Kafka]# ls
kafka-configmap.yaml  kafka-headless.yaml  kafka-statefulset.yaml
[root@master1 Kafka]# kubectl apply -f ./
configmap/ldc-kafka-scripts created
service/kafka-headless created
statefulset.apps/kafka created

2.6 檢查kafka Pod狀態

[root@master1 Kafka]# kubectl get pod -n elk 
NAME ? ? ? ? ? ? READY ? STATUS ?  RESTARTS ? AGE
filebeat-6db9l ? 1/1 ? ? Running ? 0 ? ? ? ?  62m
filebeat-qllxg ? 1/1 ? ? Running ? 0 ? ? ? ?  62m
filebeat-r5hw7 ? 1/1 ? ? Running ? 0 ? ? ? ?  62m
kafka-0 ? ? ? ?  1/1 ? ? Running ? 0 ? ? ? ?  2m2s

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

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

相關文章

Rust進階-part1-智能指針概述-box指針

Rust進階[part1]_智能指針概述&box指針 智能指針概述 在Rust中,智能指針是一類特殊的數據結構,它們不僅像普通指針一樣可以引用數據,還帶有額外的元數據和功能。與普通指針不同,智能指針通常使用結構體實現,并且會實現 Deref 和 Drop 等特定的trait,以提供更強大的…

C++擴展 --- 并發支持庫(補充1)

C擴展 --- 并發支持庫(下)https://blog.csdn.net/Small_entreprene/article/details/149606406?fromshareblogdetail&sharetypeblogdetail&sharerId149606406&sharereferPC&sharesourceSmall_entreprene&sharefromfrom_link atom…

在Three.js中導入和添加自定義網格的最佳實踐 - 綜合指南

探索在Three.js中導入和添加自定義網格的最佳實踐。本指南涵蓋增強 3D 項目的技術、技巧和實際示例。 添加圖片注釋,不超過 140 字(可選) 強烈建議使用 GLTF 格式來集成 3D 幾何體,提供簡化的流程,并固有地支持動畫、…

Redis知識點(1)

目錄 Redis Redis和MySQL的區別 Redis的高可用方案 Redis可以用來做什么 Redis的數據類型 字符串 列表 哈希 集合 有序集合 Bitmap Redis為什么快呢? I/O多路復用 說說select,poll,epoll,kqueue,IOCP的區別 Redis為什么早期選擇單線程? …

使用iptables封禁惡意ip異常請求

查看后端日志發現一IP(103.76.250.29)頻繁請求不存在的資源路徑??(如 /api/v1/guest/comm/config、/theme/default/assets/compoments.js 等),并伴隨對根路徑 / 的正常訪問。這種行為的可能性包括惡意掃描、自動化工…

BehaviorTree.Ros2 編譯教程

1. 源碼下載 git clone https://github.com/BehaviorTree/BehaviorTree.ROS2.git2. 編譯過程 源碼中有3個項目: btcpp_ros2_interfacesbtcpp_ros2_interfacesbtcpp_ros2_samples 2.1 編譯btcpp_ros2_interfaces: colcon --packages-select btcpp_ros2_interfaces2.2 編譯 …

AR智能巡檢系統:制造業設備管理的效率革新

隨著工業4.0和數字化轉型的加速,設備管理在制造業、能源、交通等關鍵領域的重要性愈發凸顯。傳統設備巡檢依賴人工記錄和紙質報告,不僅效率低下,還容易因人為疏忽導致數據錯誤或安全隱患。然而,增強現實(AR www.teamhe…

破解海外倉客戶響應難題:自動化系統是關鍵

在跨境電商蓬勃發展的當下,海外倉作為連接賣家與終端消費者的重要樞紐,其服務效率直接影響著賣家的運營成果。其中,即時客戶響應一直是行業痛點,尤其對中小型海外倉而言,單純依靠人力維持全天候服務意味著高昂的成本壓…

PyTorch基礎——張量計算

文章目錄PyTorch基礎——張量計算1 什么是張量計算?2 基本算術運算2.1 加法運算2.1.2 torch.add2.1.3 a.add(b) 與 a.add_(b)a.add(b) 方法a.add_(b) 方法核心區別2.2 減法運算2.2.1 toch.sub()2.2.2 a.sub(b) 和a.sub_(b)a.sub(b) 方法a.sub_(b) 方法核心區別使用建…

云原生聯調利器:Telepresence實戰

Telepresence在云原生聯調中的應用:本地服務直連K8s集群實戰在云原生開發中,調試和測試服務常常需要本地環境與遠程Kubernetes(K8s)集群無縫集成。Telepresence是一個開源工具,它允許開發者將本地服務“注入”到K8s集群…

瀏覽器【詳解】requestIdleCallback(瀏覽器空閑時執行)

簡介requestIdleCallback 是瀏覽器的一個 API,用于在瀏覽器空閑時間執行低優先級任務,避免阻塞主線程,提升頁面性能和響應速度。 當瀏覽器完成了關鍵任務(如渲染、布局、用戶交互處理)且暫時沒有更高優先級的工作時&am…

STP技術

一、環路的危害1.現象鏈路指示燈快速閃爍MAC表震蕩:交換機頻繁修改MAC地址表 → 轉發失效。2.環路危害造成的影響鏈路堵塞主機操作系統響應遲緩二層交換機管理緩慢沖擊網關設備的CPU三、STP的作用1.STP基本原理STP即生成樹協議,它通過阻斷冗余鏈路來消除…

RAGFLOW~knowledge graph

start 為了增強多跳問答,RAGFlow在數據提取和索引之間增加了一個知識圖譜構建步驟,如下面所示。這一步驟會從您指定的分塊方法生成的現有塊中創建額外的塊。 從v0.16.0版本開始,RAGFlow支持在知識庫上構建知識圖譜,允許你在知識庫…

機器學習【二】KNN

KNN算法是一種基于實例的惰性學習算法,其核心思想是通過"多數投票"機制進行分類決策。算法流程包括數據準備(需歸一化處理)、距離計算(常用歐氏距離)、選擇K值(通過交叉驗證確定)和決…

preloader

patch調試串口115200--- a/platform/ac8257/default.makb/platform/ac8257/default.mak-40,7 40,7 CFG_USB_DOWNLOAD :1CFG_FUNCTION_PICACHU_SUPPORT :1CFG_PMT_SUPPORT :0CFG_UART_COMMON :1 -CFG_LOG_BAUDRATE :921600 CFG_LOG_BAUDRATE :115200CFG_EVB_UART_CLOCK :260000…

Linux基礎(三)——Bash基礎

1、Bash基礎1.1 Bash簡介從前邊操作系統的組成介紹中,我們可以知道操作系統為上層用戶提供的與內核進行交互的接口稱為shell,其在系統中的位置如下圖所示,shell作為內核和用戶之間的中介,接收用戶發送的指令,將其解析為…

Python 元編程實戰:動態屬性與數據結構轉換技巧

在處理復雜嵌套的 JSON 數據源時,我們常面臨訪問不便、結構不靈活、字段關聯性差等問題。本文將以 O’Reilly 為 OSCON 2014 提供的 JSON 數據源為例,系統講解如何通過 動態屬性轉換、對象封裝、數據庫映射與特性(property)機制&a…

Android-側邊導航欄的使用

在學習之前,我們先得知道側邊導航欄是什么?它是一個 可以讓內容從屏幕邊緣滑出的布局容器,由安卓官方提供,用于創建側邊菜單,通常搭配 NavigationView 使用;添加依賴:在app下的build.gradle中添…

lesson30:Python迭代三劍客:可迭代對象、迭代器與生成器深度解析

目錄 一、可迭代對象:迭代的起點 可迭代對象的本質特征 可迭代對象的工作原理 自定義可迭代對象 二、迭代器:狀態化的迭代工具 迭代器協議與核心方法 迭代器的狀態管理 內置迭代器的應用 三、生成器:簡潔高效的迭代器 生成器函數&a…

實時語音流分段識別技術解析:基于WebRTC VAD的智能分割策略

引言 在現代語音識別應用中,實時處理音頻流是一項關鍵技術挑戰。不同于傳統的文件式語音識別,流式處理需要面對音頻數據的不確定性、網絡延遲以及實時性要求等問題。本文將深入解析一個基于WebRTC VAD(Voice Activity Detection)…