kafka 3.x 学习笔记

kafka 3.x 学习笔记

在 kafka 2.8.0 版本之前,安装使用 kafka 需要配套安装 zookeeper,但在 2.8.0 版本之后,不再需要安装 zookeeper,本次学习笔记采用的 kafka 版本为 3.0.0。

文章目录

    • [kafka 3.x 学习笔记](#kafka 3.x 学习笔记)
      • [一、kafka 定义](#一、kafka 定义)
        • [1 什么是 kafka?](#1 什么是 kafka?)
        • [2 消息队列](#2 消息队列)
        • [3 消息队列应用场景](#3 消息队列应用场景)
        • [4 消息队列的两种模式](#4 消息队列的两种模式)
        • [5 kafka 基础架构](#5 kafka 基础架构)
      • [二、Centos 7 安装 kafka](#二、Centos 7 安装 kafka)
      • [三、kafka 命令操作](#三、kafka 命令操作)

一、kafka 定义

1 什么是 kafka?
  • 传统定义:kafka 是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。

    • 发布/订阅:消息的发布者不会将消息发给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。
  • kafka 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。

2 消息队列

市面上常见的消息队列产品主要有 kafka、ActiveMQ、RabbitMQ、RocketMQ 等。在大数据领域主要采用 kafka 作为消息队列,在 java web开发中主要采用 ActiveMQ、RabbitMQ、RoketMQ。

3 消息队列应用场景
  • 缓冲/消峰:尤其是特定环境下大量的并发请求,后端接口不能在短时间承受这些大量的接口,因此采用消息队列做缓冲处理。

  • 异步解耦:举例一个通俗易懂的案例:现在的很多平台都提供了借钱的入口,比如美团,我猜测美团后台的逻辑大致应该是这样的:

    • 1、首先用户提交个人信息;

    • 2、美团后端接收到用户信息后,进行借款额度判断:

      比如调用法院官网,查看此人是不是老赖;

      调用银行的征信系统,查看此人征信是否良好等等;

      调用政府相关部门官网,查看此人是否有房产车产等等。

      调用完毕后,得出一个初始的可款额度。

    • 3、将用户存入借款用户表;

    • 4、调用第三方短信服务,向用户发送借款额度的通知短信;

    • 5、美团 app 向用户展示可借款金额,然后向用户确认是否借款,如借款则向用户银行卡转账。

举例的这个小案例,只是本人的猜测,如果这些步骤采用同步的方式设计的话,显然很不友好,采用异步不仅能解耦,也能加快后端服务的响应速度。

4 消息队列的两种模式
  • 点对点模式:消费者主动拉取数据,消息收到后清楚消息。
  • 发布/订阅模式:可以有多个 topic 主题,消费者获取自己对应的 topic,消费者消费数据之后,不删除数据,并且消费者之间相互独立。
5 kafka 基础架构

但是对于每个 topic,数据量太大的时候为提高吞吐量,可以将 topic 进行分而治之:

二、Centos 7 安装 kafka

kafka 官方地址:http://kafka.apache.org/downloads.html

1 在官网下载安装包后上传至服务器,进行解压安装:

java 复制代码
tar -zxvf kafka_2.12-3.0.0.tgz

2 把 kafka_2.12-3.0.0 重命名:kafka

java 复制代码
mv kafka_2.12-3.0.0 kafka

3 启动 kafka

java 复制代码
bin/kafka-server-start.sh -daemon config/server.properties
// 查看是否启动成功
jps 

三、kafka 命令操作

  • 操作 topic 相关命令

1 查看 topic 相关命令

java 复制代码
bin/kafka-topics.sh

2 常用命令

参数 描述
--bootstrap-server <String:ser toconnece to> 连接的 Kafka Broker 主机名称和端口号
--topic <String: topic> 操作的 topic 名称
--create 创建主题
--delete 删除主题
--alter 修改主题
--list 查看所有主题
--describe 查看主题详细描述
--partitions <Integer: # of partitions> 设置分区数
--replication-factor<Integer: replication factor> 设置分区副本
--config String:name=value 更新系统默认的配置
相关推荐
何以解忧,唯有..7 分钟前
高并发下超卖问题解决方案:从数据库到分布式锁的完整实践
java
行者全栈架构师19 分钟前
Spring Boot 接入 MaxKey 单点登录:6 个内部系统,一次登录全通行
java·vue.js·后端
木白CPP37 分钟前
Linux DMA驱动详解(二)-----DMA的使用者
java·linux·运维
caoerzhong41 分钟前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
Sam_Deep_Thinking1 小时前
单一职责原则:JAVA LocalDate的设计取舍
java·后端·程序员·单一职责原则
杨杨杨大侠1 小时前
Java 不再需要 JVM?一文看懂 GraalVM Native Image、Substrate VM 与 JDK
java·jvm·java ee
Sylvia33.1 小时前
火星数据体育API|一站式接入足球篮球电竞等18+项目实时数据
java·开发语言·python·websocket·游戏
李少兄1 小时前
解决 MySQL Lock wait timeout exceeded 报错
java
va学弟1 小时前
Java 语言特性:泛型(Generics)
java·泛型
SL_staff2 小时前
插单风险的数据闭环治理:JVS-BI 在制造业实时预警中的技术实践
java·数据分析·数据可视化