kafka

本文介绍了Apache Kafka,一个高吞吐量、低延迟的消息系统,最初由LinkedIn开发,现为Apache软件基金会项目。Kafka提供了消息队列功能,通过解耦、异步和并行处理提高系统效率。文章还详细描述了Kafka的架构、组件及如何在本地环境中搭建Kafka。

Kafka是什么

在这里插入图片描述
Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。
Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。
Kafka是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。
Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。
无论是kafka集群,还是producer和consumer都依赖于
zookeeper**集群保存一些meta信息,来保证系统可用性

消息队列内部的实现原理

为什么需要消息队列

消息系统的核心作用就是三点:解耦,异步和并行
以用户注册的案列来说明消息系统的作用

用户注册的一般流程

在这里插入图片描述

问题:随着后端流程越来越多,每步流程都需要额外的耗费很多时间,从而会导致用户更长的等待延迟。

用户注册的并行执行

在这里插入图片描述

问题**:系统并行的发起了4个请求,4个请求中,如果某一个环节执行1分钟,其他环节再快,用户也需要等待1分钟。如果其中一个环节异常之后,整个服务挂掉了。在这里插入图片描述

用户注册的最终一致

在这里插入图片描述

Kafka架构,分布式模型

Topic :消息根据Topic进行归类
Producer:发送消息者,生产者
Consumer:消息接受者,消费者
broker:每个kafka实例(server)
Zookeeper:依赖集群保存meta信息。

在这里插入图片描述

Kafka的环境搭建

基础环境准备

安装前的准备工作(zk已经部署完毕)

l 关闭防火墙

chkconfig iptables off && setenforce 0

kafka单机版安装采用自带的zookeeper处理

1.校验一下java是否安装

​ [root@localhost Desktop]# java -version
​ java version “1.8.0_171”
​ Java™ SE Runtime Environment (build 1.8.0_171-b11)
​ Java HotSpot™ 64-Bit Server VM (build 25.171-b11, mixed mode)

如果没有安装,请先安装java环境 参考JDK安装方法 〜/ .bashrc文件(环境变量配置文件方式二)

2.上传kafka文件到虚拟机中kafka_2.12-2.2.0

3.解压安装kafka到/usr/local中
[root@localhost Desktop]# tar -zxvf kafka_2.11-1.0.0.tgz -C /opt/
3.1 重命名kafka的文件 :mv kafka_2.11-1.0.0 /opt/kafka

4.切换到kafka的配置文件目录
[root@localhost config]# pwd

       /opt/kafka/config

5.kafka安装目录下的config文件夹为其配置文件,我们需要修改的有 server.properties和zookeeper.properties。

​ [root@localhost kafka]# mkdir kafka-logs-0

​ server.properties: kafka的配置文件
​ log.dirs=/tmp/kafka-logs
​ 修改为
​ log.dirs=/opt/kafka1/kafka-logs-0

​ zookeeper.properties kafka自带的zookeeper的配置
​ dataDir=/tmp/zookeeper
​ 修改为
​ dataDir=/opt/kafka1/my_zookeeper

6.启动zookeeper
[root@localhost ~]# /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties

7.启动kafka
[root@localhost Desktop]# /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

8.创建主题 (让我们创建一个名为“test”的主题,它只包含一个分区,只有一个副本)
/opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic 1704D

            备注: 或者,您可以将代理配置为在发布不存在的主题时自动创建主题,而不是手动创建主题。

9.查看主题: 如果我们运行list topic命令,我们现在可以看到该主题
/opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181

10.发送一些消息
Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。运行生产者,然后在控制台中键入一些消息以发送到服务器。

​ /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic 1704D

​ >等待输入发送的消息

11.启动消费者
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.25.133:9092 --topic 1704D --from-beginning 从第一条开始接受
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.25.133:9092 --topic 1704D从现在生产者发送开始接受。]

### Kafka入门教程及使用场景 #### 一、Kafka简介 Apache Kafka 是一种分布式流处理平台,能够实现高吞吐量的消息传递系统。它最初由 LinkedIn 开发并开源,现已成为 Apache 软件基金会的一部分[^1]。 #### 二、Kafka的安装与配置 以下是基于 Docker 的 Kafka 安装方法: ```yaml version: "1" services: kafka: image: 'bitnami/kafka:latest' hostname: kafka ports: - 9092:9092 - 9093:9093 volumes: - 'D:\Docker\Kafka\data:/bitnami/kafka' networks: - kafka_net environment: # KRaft settings - KAFKA_CFG_NODE_ID=0 - KAFKA_CFG_PROCESS_ROLES=controller,broker - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093 # Listeners - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.51:9092 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT networks: kafka_net: driver: bridge ``` 运行命令如下: ```bash docker-compose -f .\docker-compose.yml up -d ``` 上述 YAML 文件定义了一个简单的 Kafka 集群环境,并通过 `docker-compose` 启动服务[^1]。 #### 三、Kafka的基础概念 在 Kafka 中,消息被存储在主题(Topic)中,而每个 Topic 又分为若干分区(Partition)。每个分区有一个 Leader 和零个或多个 Follower。Leader 负责读写操作,Follower 则同步数据以提供冗余支持。当创建一个新的 Topic 时,Kafka 自动将 Partition 的 Leader 均匀分布到各个 Broker 上,从而提高系统的可靠性和性能[^2]。 #### 四、可视化管理工具 Offset Explorer 是一款常用的 Kafka 数据管理和监控工具,可以帮助开发者更直观地查看和分析 Kafka 主题中的偏移量和其他元数据信息[^1]。 #### 五、Kafka的主要使用场景 1. **日志收集**:Kafka 可用于集中式日志采集方案,实时捕获来自不同服务器的日志文件。 2. **消息队列**:作为传统 MQ 替代品,Kafka 提供高性能异步通信机制。 3. **活动跟踪**:记录用户的在线行为轨迹,便于后续数据分析挖掘价值。 4. **指标监测**:构建企业级运营状态仪表盘,展示关键业务指标变化趋势。 5. **ETL流程优化**:连接多种数据库之间复杂的数据转换过程,提升效率减少延迟。 #### 六、总结 通过对 Kafka 的基本原理理解及其实际应用场景探讨,可以更好地掌握如何利用这一强大技术解决现实世界中的挑战性问题。 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl God

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值