消息系统
一、分类
- Peer to Peer:点对点模式。消息只能被一个消费者消费,消费者之间是竞争关系
- Publish-Subscribe:发布订阅模式。消息不会被某个消费者取走,而是被所有的消费者共享
二、作用
- 解耦。避免了消费者和生产者之间的耦合
- 消峰限流。能够有效的降低消费者的负载量
- 持久化存储
简介
一、概述
- Kafka是发布订阅模式的消息队列
- Kafka是由LinkedIn(领英)公司开发后来贡献给了Apache的消息队列
- Kafka的特征:
a. 发布和订阅消息流
b. 在存储消息流的时候要提供容错机制
c. 当数据流出现的时候能够及时处理 - Kafka的应用场景:
a. 能够在系统或者应用之间构建可靠的数据传输的实时流管道
b. 能够构建一个转化或者应对数据流的实时流应用 - Kafka是利用了Scala语言构建的,Scala天然支持并发和吞吐,保证Kafka的并发量和吞吐量是比较高的,实际过程中,Kafka的吞吐量是在60~80M/s - Kafka底层采用了零拷贝的技术
二、基本概念
- broker:
a. 就表示Kafka中的节点
b. 每一个broker都需要给一个编号,这个编号只要不相同的就可以 - topic:
a. 作用是用于对数据进行分类的
b. 在Kafka中,每一条数据都要发送到一个指定主题中
c. 每一个主题对应一个到多个partition - partition:
a. 每一个partition对应一个目录
b. 如果有多个Kafka节点,分区会平均分到每一个节点上
特点
- 高吞吐率:在廉价的商用机器上单机可支持100W条/秒消息
- 消息持久化:所有的消息都会存储在磁盘上,不会产生消息的丢失
- 支持完全分布式
- 同时满足适应在线流处理和离线批处理
三、指令
指令 解释
sh kafka-server-start.sh …/config/server.properties 开启Kafka
sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic video 创建主题
命令 作用
sh kafka-topics.sh --create --zookeeper hbase01:2181 --replication-factor 1 --partitions 1 --topic englishbook 创建主题
在创建的时候,副本数量要小于等于节点数量
sh kafka-topics.sh --list --zookeeper hbase01:2181 查看所有的topic
sh kafka-console-producer.sh --broker-list hbase01:9092 --topic englishbook 启动生产者
sh kafka-console-consumer.sh --zookeeper hbase01:2181 --topic englishbook --from-beginning 启动消费者
sh kafka-topics.sh --delete --zookeeper hbase01:2181 --topic englishbook 删除topic
sh kafka-topics.sh --describe --zookeeper hbase01:2181 --topic englishbook 描述topic的信息
kafka基本配置
- 下载Kafka的安装包
- 解压安装包
tar -xvf kafka_2.10-0.10.0.1.tgz - 进入安装目录
cd kafka_2.10-0.10.0.1 - 进入config目录下
cd cofig - 编辑server.properties
vim server.properties
修改
这个值要求唯一
- broker.id=0
指定日志文件的位置
- log.dirs=/home/software/kafka_2.10-0.10.0.1/logs
指定Zookeeper的连接地址
- 启动Zookeeper
- 进入Kafka的bin目录下来启动Kafka
sh kafka-server-start.sh …/config/server.properties