Kafka学习
学习链接:Kafka学习
Kafka学习第二弹
一、概念
Kafka依赖于zookeeper
定义: Kafka是一个分布式的基于发布/订阅模式(同一个消息可以被多个消费者消费) 的消息队列(Message Queue) ,主要应用于大数据实时处理领域。
- 消费者主动拉取(Kafka选择的模式) 消费者主动去问,比较浪费资源,维护一个长轮询查看队列中是否有新的数据。
- 队列主动推送
同一个分区的数据:Partition里面的数据只能被同一个组里面的某一个人,别的组的某一个消费者也可以消费,我们可以把一个组看成一个消费整体。
- Topic 主题
- Partition 分区
- 副本 每一个主题有一个副本与leader不在同一个机器上。
二、Kafka术语
消息由producer产生,消息按照topic归类,并发送到broker中,broker中保存了一个或多个topic的消息,consumer通过订阅一组topic的消息,通过持续的poll操作从broker获取消息,并进行后续的消息处理。
Producer:消息生产者,就是向broker发指定topic消息的客户端。
Consumer:消息消费者,通过订阅一组topic的消息,从broker读取消息的
三、具体的使用(具体的安装过程见收藏夹)
具体内容收藏于csdn kafka文件夹
# 新起一个终端启动zookeeper
cd /usr/local/Cellar/kafka/2.8.0
./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
# 启动kafka
cd /usr/local/Cellar/kafka/2.8.0
./bin/kafka-server-start /usr/local/etc/kafka/server.properties
#创建topic
kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic iris2
#查看已有主题
cd /usr/local/Cellar/kafka/2.8.0
./bin/kafka-topics --list --zookeeper localhost:2181
# 新起一个终端,作为生产者,用于发送消息,每一行算一条消息,将消息发送到kafka服务器
cd /usr/local/Cellar/kafka/2.8.0
./bin/kafka-console-producer --broker-list localhost:9092 --topic test
# 新起一个终端作为消费者,接收消息
cd /usr/local/Cellar/kafka/2.8.0
./bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning
# 发送消息
> ./bin/kafka-console-producer --broker-list localhost:9092 --topic iris
This is a message
This is another message
四、 Kafka优势及应用场景
转自:Kafka优势及应用场景
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。简单地说,Kafka就相比是一个邮箱,生产者是发送邮件的人,消费者是接收邮件的人,Kafka就是用来存东西的,只不过它提供了一些处理邮件的机制。
一、Kafka的优势如下:
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
可扩展性:kafka集群支持热扩展;
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
容错性:允许集群中节点故障(若副本数量为n,则允许n-1个节点故障);
高并发:支持数千个客户端同时读写。
二、Kafka适合以下应用场景:
日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer;
消息系统:解耦生产者和消费者、缓存消息等;
用户活动跟踪:kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后消费者通过订阅这些topic来做实时的监控分析,亦可保存到数据库;
运营指标:kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告;