Kafka
2022-12-05 23:06:00
30
0
0
Apache Kafka 概述
在大数据中,使用了大量的数据。 关于数据,我们有两个主要挑战。第一个挑战是如何收集大量的数据,第二个挑战是分析收集的数据。 为了克服这些挑战,您必须需要一个消息系统。
Kafka 专为分布式高吞吐量系统而设计。 Kafka 往往工作得很好,作为一个更传统的消息代理的替代品。 与其他消息传递系统相比,Kafka 具有更好的吞吐量,内置分区,复制和固有的容错能力,这使得它非常适合大规模消息处理应用程序。
什么是消息系统?
消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,但不担心如何共享它。 分布式消息传递基于可靠消息队
Kafka
2022-12-05 23:06:00
15
0
0
组件和说明
Broker(代理)
Kafka 集群通常由多个代理组成以保持负载平衡。 Kafka 代理是无状态的,所以他们使用 ZooKeeper 来维护它们的集群状态。 一个 Kafka 代理实例可以每秒处理数十万次读取和写入,每个 Broker 可以处理 TB 的消息,而没有性能影响。 Kafka 经纪人领导选举可以由 ZooKeeper 完成。
ZooKeeper
ZooKeeper 用于管理和协调 Kafka 代理。 ZooKeeper 服务主要用于通知生产者和消费者 Kafka 系统中存在任何新代理或 Kafka 系统中代理失败。 根据 Zookeeper 接收到关
Kafka
2022-12-05 23:06:00
20
0
0
单节点多代理配置
在进入多个代理集群设置之前,首先启动 ZooKeeper 服务器。
创建多个Kafka Brokers 在配置/ server.properties 中已有一个 Kafka 代理实例。 现在我们需要多个代理实例,因此将现有的 server.properties 文件复制到两个新的配置文件中,并将其重命名为 server-one.properties 和 server-two.properties。 然后编辑这两个新文件并分配以下更改
config/server-one.properties
# The id of the broker. This
Java 客户端创建一个用于发布和使用消息的应用程序。 Kafka 生产者客户端包括以下 API。
KafkaProducer API
让我们了解本节中最重要的一组 Kafka 生产者 API。 KafkaProducer API 的中心部分是 KafkaProducer 类。 KafkaProducer 类提供了一个选项,用于将其构造函数中的 Kafka 代理连接到以下方法。
KafkaProducer 类提供 send 方法以异步方式将消息发送到主题。 send() 的签名如下
producer.send(new ProducerRecord<byte
消费群是多线程或多机器的 Apache Kafka 主题。
消费者群体
消费者可以使用相同的 group.id 加入群组
一个组的最大并行度是组中的消费者数量←不是分区。
Kafka 将主题的分区分配给组中的使用者,以便每个分区仅由组中的一个使用者使用。
Kafka 保证消息只能被组中的一个消费者读取。
消费者可以按照消息存储在日志中的顺序查看消息。
重新平衡消费者
添加更多进程 / 线程将导致 Kafka 重新平衡。 如果任何消费者或代理无法向 ZooKeeper 发送心跳,则可以通过 Kafka 集群重新配置。 在此重新平衡期间,Kafka 将分配可用分区到可用线
kafka-python 文档:KafkaConsumer - kafka-python 2.0.2-dev documentation
基本概念
Topic:一组消息数据的标记符;
Producer:生产者,用于生产数据,可将生产后的消息送入指定的 Topic;
Consumer:消费者,获取数据,可消费指定的 Topic;
Group:消费者组,同一个 group 可以有多个消费者,一条消息在一个 group 中,只会被一个消费者获取;
Partition:分区,为了保证 kafka 的吞吐量,一个 Topic 可以设置多个分区。同一分区只能被一个消费者订阅。