举个栗子,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋;
kafka
;producer
:生产者,就是它来生产“鸡蛋”的;consumer
:消费者,消费生产的“鸡蛋”;topic
:可以将之理解为标签,生产者每产出一个鸡蛋就贴上一个标签(topic),消费者可不是谁生产的“鸡蛋”都吃的,这样不同的生产者生产出来的“鸡蛋”,消费者就可以选择性的“吃”了。broker
:就是篮子了。官网给出了答案:
官网又给出了答案:
Producer API
发布消息到 kafka 集群中的一个或多个 topic 中;Consumer API
来订阅一个或多个 topic,并处理产生的消息;Streams API
充当一个流处理器,从一个或多个 topic 消费输入流,并生产一个输出流到一个或多个输出 topic,有效的将输入流转换到输出流。Connector API
:可构建或运行可重用的生产者或消费者,将 topic 连接到现有的应用程序或数据系统。例如,连接到关系数据库的连接器可以捕获表的每个变更。就是前边的四个名词,这一次是准也得术语;
topic
:将消息分门别类,每一类的消息称为一个主题(Topic);producer
:发布消息的对象称之为 topic 生产者(kafka topic producer);consumer
:订阅消息的对象称之为 topic 消费者(kafka topic consumer);broker
:已发布的消息保存在一组服务器中,称之为 kafka 集群,集群中的每一个服务器都是一个代理(broker)。消费者可以订阅一个或多个 topic,并从 broker 中拉取数据,从而消费这些已发布的消息。geo-replication
支持;MirrorMaker
,消息可以跨多个数据中心或云区域进行复制;通常来讲,消息模型可以分为两种:
队列模型的处理方式是一组消费者从服务器读取消息,一条消息只有其中的一个消费者来处理;
发布-订阅模型中,消息被广播给所有的消费者,接收到消息的消费者都可以处理此消息;
Kafka 为这两种模型提供了单一的消费者抽象模型:消费者组(consumer group);
传统的队列模型保持消息,并且保证消息的先后顺序不变;
*
并行消费不能保证消息的先后顺序;
*
kafka 采用分区策略,是因为 topic 分区中消息只能由消费者组中的唯一一个消费者来处理,所以消息肯定是按照先后顺序进行处理的;但是它也仅仅只能保证一个分区的顺序处理,不能保证跨分区的消息先后处理顺序;
生产者发送到一个特定的 topic 分区上,消息将会按照它们发送的顺序依次假如;
也就是说,如果一个消息 M1 和消息 M2 使用相同的 Producer 发送,M1 先发送,name M1 将比 M2 的 offset 低,并且优先的出现在日志中;
消费者收到的消息也是此顺序;
如果一个 topic 配置了复制银因子(replication factor)为 N,那么可以允许 N-1 服务器宕机而不丢失任何已经提交(committed)的消息。
Kafka 的目标是实时的流处理。
在 Kafka 中,流处理持续获取 输入 topic
的数据,进行处理加工,然后写入 输出 topic
;
可以直接使用 producer API 和 consumer API 进行简单的处理;
对于复杂的转换,可以使用 Streams API 处理。
Streams API 在 Kafka 中的核心:使用 producer API 和 consumer API 作为输入,利用 Kafka 做状态存储,使用相同的组机制在 stream 处理器实例之间进行容错保障。
消息处理:
Kafka 更好的替换传统的消息系统,具有更好的吞吐量,内置分区,副本和故障转移,有利于处理大规模的消息;
网站活动追踪:
对于用户和网站的活动发布到不同的 topic 中心,这些消息可以实时处理,实时检测,也可加载奥 Hadoop 或离线处理数据仓库。
指标:
用于监测数据,分布式应用程序生成的统计数据集合聚合。
日志聚合:
日志聚合通常从服务器中收集物理日志文件,并将它们放在中央位置(可能是文件服务器或HDFS)进行处理。
Kafka 抽象出文件的细节,并将日志或事件数据更清晰地抽象为消息流。
流处理;
事件采集;
提交日志;
解压:
tar -xzf kafka_2.13-2.8.0.tgz
之后的几步了解下就行,最终会以系统服务方式启动,避免这种繁琐的方式。
cd kafka_2.13-2.8.0
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic kafkaTest
bin/kafka-topics.sh --describe --topic kafkaTest --bootstrap-server localhost:9092
Topic: kafkaTest TopicId: o0NwNuMKTuORqpEAZ7hBsg PartitionCount: 1 ReplicationFaes=1073741824
Topic: kafkaTest Partition: 0 Leader: 0 Replicas: 0 Isr: 0
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic kafkaTest
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafkaTest --from-beginning
/usr/local/kafka
;/usr/lib/systemd/system/zookeeper.service
并写入:[Unit]
Requires=network.target
After=network.target
[Service]
Type=simple
LimitNOFILE=1048576
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=Always
[Install]
WantedBy=multi-user.target
/usr/lib/systemd/system/kafka.service
并写入:[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
LimitNOFILE=1048576
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=Always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable zookeeper && systemctl enable kafka
systemctl start zookeeper && systemctl start kafka
systemctl status zookeeper && systemctl status kafka
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/S_numb/article/details/120363172
内容来源于网络,如有侵权,请联系作者删除!