1、简介
Kakfa是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域
2、消息队列的模式
- 点对点模式
消息生产者发送消息到消息队列中,然后消息消费者从队列中取出并且消费消息,消息被消费后,队列中不在存储。所以消息消费者不可能消费到已经被消费的消息;队列支持存在多个消费者,但是对于一个消息而言,只会 有一个消费者可以消费;如果想发给多个消费者,则需要多次发送该条消息
- 发布/订阅模式(一对多,消费者消费数据之后不会清除消息)
消息生产者将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息,和点对点的方式不同,发布到topic的消息会被所有的订阅者消费;但是数据保留是期限的,默认是7天,因为他不是存储系统;kafka就是这种模式的;有两种方式,一种是是消费者去主动去消费(拉取)消息,而不是生产者推送消息给消费者;另外一种就是生产者主动推送消息给消费者,类似公众号。
3、系统结构
broker负责缓冲消息,broker中可以创建topic,每个topic又有partition和replication的概念消费者组负责处理消息,同一个消费者组的中消费者不能消费同一个partition中的数据,消费者组主要是提高消费能力,比如之前是一个消费者消费100条数据,现在是2个消费者消费100条数据,可以提高消费能力;所以消费者组的消费者的个数要小于partition的个数,不然就会有消费者没有partition可以消费,造成资源的浪费
注:但是不同的消费者组的消费者是可以消费相同的partition数据
4、kafka安装配置
- Kafka的安装只需要解压安装包就可以完成安装
tar -zxvf kafka_2.11 -2.1.1.tgz -C /usr/local/
- 修改配置文件server.properties
设置broker.id 这个是kafka集群区分每个节点的唯一标志符
- 设置kafka的数据存储路径
log.dirs= /usr/local/kafka/data
- 设置是否可以删除topic,默认情况先kafka的topic是不允许删除的
- Kafka的数据保留的时间,默认是7天
- Log文件最大的大小,如果log文件超过1g会创建一个新的文件
- Kafka连接的zk的地址和连接kafka的超时时间
- 默认的partition的个数
- kafka自带一个生产者和消费者的客户端