kafka

文章介绍了消息队列的基本概念,如其作为临时存储的作用、消息队列中间件如Kafka、ActiveMQ等,以及在应用解耦、流量削峰等方面的应用。Kafka作为一个分布式流平台,具备发布订阅模式和点对点模式。文中还详细阐述了Kafka的架构,包括生产者、消费者、副本、分区等核心概念,并讨论了Kafka的配置、使用场景和数据清理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

消息队列用于存放消息的组件

程序员可以将消息放入到队列中,也可以从消息队列中获取消息

很多时候消息队列不是一个永久性的存储,是作为临时存储存在的(设定一个期限:设置消息中MQ中保存10天)

消息队列中间件:消息队列的组件,例如:Kafka,ActiveMQ,RabbitMQ,rocketMQ,ZeroMQ

应用场景:

应用解耦、数据管道、消息系统、流处理日志收集与分发

好处:

异步处理

可以将一些比较耗时的操作放在其他系统中,通过消息队列将需要处理的消息进行存储,其他系统可以消费消息队列中的数据

系统解偶

原先一个微服务生死勇敢接口http调用另一个微服务,这时候耦合很严重,只要接口发生变化就会导致系统不可用

使用消息队列呀将系统进行解偶,现在第一个微服务可以将消息放入到消息队列中,另一个微服务可以从消息队列中把消息取出来进行处理,进行系统解偶

流量削峰

因为消息队列是低延迟,高可靠,高吞吐的(Kafka吞吐量10W),可以应对大量并发

日志处理

可以使用消息队列作为临时存储,或者一种通信管道

mysql吞吐量8000,kafka响应快低延迟,mysql延迟比kafka高,先放到kafka中让用户等待

消息队列的两种模型

生产者和消费者模型

生产者负责将消息生产到MQ中

消费者负责从MQ中获取消息

生产者和消费者是解偶的,可能是生产者一个程序、消费者是另外一个程序

消息队列的两种模式:

点对点模式 :一个消费者消费一个消息

特点:

        每个消息只有一个接收者(即一旦被消费,消息就不再消息队列中)

        发送者和接收者间没有依赖性,发送者发送消息之后,不关有没有接收者在运行,都不影响到发送者下次发送消息

        接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息

发布订阅模式: 多个消费者可以消费一个消息

特点:

        每个消息可以多个订阅者

        发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,

Kafaka是一个分布式的流平台

特点:发布和订阅流数据流,类似于消息队列或者是企业消息传递系统

            以容错的持久化方式存储数据流

            处理数据流

Kafka集群搭建

Kafka3.0之前依赖Zookeeper的

注意:每一个kafka的节点都需要修改broker.id(每个节点的标识,不能重复)

log.dir数据存储目录需要配置

Kafka的生产者/消费者/工具

安装kafka集群,可以测试以下

创建一个topic主题(消息都是存放在topic中,类似mysql建表的过程)

基于kafka的内置测试生产者脚本来读取标准输入(键盘输入)的数据,并放入到topic中

基于kafka的内置测试消费者脚本来消费topic中的数据

推荐大家开发的使用 kafka tool

浏览kafka集群节点,多个topic,多个分区

创建topic/删除topic

浏览zookeeper中的数据

kafka介绍

Producer:发布消息的对象称之为主题生产者(kafka topic producer)

Partition:分区,每个主题可以创建多个分区,每个分区都由一系列有序和不可变的消息组成

Topic:kafka将消息分门别类,每一类的消息称之为一个主题(Topic)

Consumer:订阅消息并处理发布的消息的对象称之为主题消费者(consumers)

Broker:已发布的消息保存中一组服务器中,称之为kafka集群。集群中的每一个服务器都是一个代理(broker)。消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息

Record:消息,消息队列基础通信单位

Replica:副本,每个分区都由一个至多个副本存在,它的主要作用是存储保存数据,以日志对象的形式体现。副本又分为leader副本和follower副本

Offset:偏移量,每一个消息在日志文件中的位置都对应

06-07
### Kafka 使用教程和核心技术详解 Kafka 是一个分布式流处理平台,最初由 LinkedIn 开发,并于 2011 年开源。它被设计为高吞吐量、低延迟的消息系统,广泛用于日志收集、监控数据聚合、流式数据处理等领域[^1]。 #### Kafka 的核心概念 Kafka 的架构围绕几个关键概念展开: - **主题(Topic)**:Kafka 中消息的类别或提要名称。生产者将消息发布到特定主题,消费者从主题中订阅消息。 - **分区(Partition)**:每个主题可以划分为多个分区,分区是 Kafka 中并行处理的基础单位。 - **副本(Replica)**:为了提高可靠性,Kafka 会为每个分区创建多个副本,分布在不同的 Broker 上。 - **消费者组(Consumer Group)**:消费者可以组成一个组来共同消费一个主题的消息,组内的每个消费者负责处理一部分分区的消息[^2]。 #### Kafka 的使用方法 Kafka 提供了多种客户端库以支持不同编程语言的开发。以下是一个简单的 Python 示例,展示如何使用 Kafka 生产者和消费者: ```python from kafka import KafkaProducer, KafkaConsumer # 创建 Kafka 生产者 producer = KafkaProducer(bootstrap_servers='localhost:9092') # 发送消息到指定主题 producer.send('my-topic', b'Hello, Kafka!') producer.flush() producer.close() # 创建 Kafka 消费者 consumer = KafkaConsumer( 'my-topic', bootstrap_servers='localhost:9092', auto_offset_reset='earliest', enable_auto_commit=True, group_id='my-group' ) # 消费消息 for message in consumer: print(f"Received message: {message.value.decode('utf-8')}") ``` #### Kafka 的核心技术详解 Kafka 的核心技术主要包括以下几个方面: - **持久化日志**:Kafka 将消息存储在磁盘上,并通过顺序写入操作优化性能。这种设计使得 Kafka 能够提供高吞吐量和持久性保证。 - **分区与并行性**:通过将主题划分为多个分区,Kafka 实现了水平扩展的能力。每个分区可以独立地被多个消费者消费。 - **复制机制**:Kafka 的复制机制确保了即使某些 Broker 出现故障,数据仍然可用。领导者分区负责读写操作,而跟随者分区则同步数据[^3]。 - **消费者偏移量管理**:Kafka 允许消费者自行管理偏移量,这为灵活的消费模式提供了支持,例如重新消费旧消息或跳过某些消息。 #### Kafka 的学习资料 对于初学者,可以从官方文档入手,了解 Kafka 的基本概念和配置选项。此外,还有许多在线课程和书籍可以帮助深入理解 Kafka 的原理和实践[^4]。 ```markdown - 官方文档: https://kafka.apache.org/documentation/ - 在线课程: Coursera、Udemy 等平台提供的 Kafka 课程 - 推荐书籍: "Kafka: The Definitive Guide" by Neha Narkhede, Gwen Shapira, and Todd Palino ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值