1. 消息队列的基本介绍
1.1 消息队列产生背景
什么是消息队列呢?
消息: 数据 只不过这个数据具有一种流动状态
队列: 存储数据的容器 只不过这个容器具有FIFO(先进先出)特性
消息队列: 数据在队列中, 从队列的一端传递到另一端的过程, 数据在整个队列中产生一种流动状态
1.2 常见的消息队列的产品
常见的消息队列的产品:
- 1- ActiveMQ: 出现时间比较早的一款消息队列的组件, 目前整个社区活跃度非常低, 此软件使用人群也在不断的减少, 此软件在前几年中被Java工程师主要使用
- 2- RabbitMQ: 目前在Java领域中使用非常频繁的一款消息队列的产品, 其社区活跃度相对不错, 支持多种语言开发
- 3- RocketMQ: 是由阿里推出一款的消息队列的中间件产品, 目前主要是在阿里系范围内使用, 目前支持的开发语言相对较少一些, 比如成熟的客户端还是JAVA
- 4- Kafka: 是一款大数据领域下的消息队列的产品, 主要应用在大数据领域在, 在业务领域中使用较少
- 5- Pulsar: 最近一两年新起的一款消息队列的组件, 也是Aapache顶级开源项目, 目前主要由StreamNative公司进行商业运营中
1.3 消息队列的作用是什么
- 1- 同步转异步
- 2- 应用解耦合
- 3- 流量削峰 : 在秒杀场景中, 突然会有庞大的并发量, 但是过后就没有了
- 4- 消息驱动系统
1.4 消息队列的两种消费模型
- 点对点: 数据被生产到容器后, 最终这个数据只能被一个消费方来消费数据
- 发布订阅: 数据被生产到容器后, 可以被多个消费方同时接收到
2. Kafka的基本介绍
Kafka是Apache旗下的一款开源免费的消息队列的中间件产品,最早是由领英公司开发的, 后期共享给Apache, 目前已经是Apache旗下的顶级开源的项目, 采用语言为Scala
官方网站: http://www.kafka.apache.org
适用场景: 数据传递工作, 需要将数据从一端传递到另一端, 此时可以通过Kafka来实现, 不局限两端的程序
在实时领域中, 主要是用于流式的数据处理工作
3. Kafka的架构
Kafka Cluster: kafka集群
broker: kafka的节点
producer: 生产者
consumer: 消费者
Topic: 主题/话题 理解就是一个大的逻辑容器(管道)
shard: 分片. 一个Topic可以被分为N多个分片, 分片的数量与节点数据没有关系
replicas: 副本, 可以对每一个分片构建多个副本, 副本数量最多和节点数量一致(包含本身) 保证数据不丢失
zookeeper: 存储管理集群的元数据信息
4. Kafka的安装操作
参考Kafka的集群安装文档 完成整个安装工作即可
如果安装后, 无法启动, 可能遇到的问题:
1) 配置文件中忘记修改broker id
2) 忘记修改监听的地址, 或者修改了但是前面的注释没有打开
如何启动Kafka集群:
启动zookeeper集群: 每个节点都要执行
cd /export/server/zookeeper/bin
./zkServer.sh start
启动完成后 需要通过 jps -m 查看是否启动 , 并且还需要通过:
./zkServer.sh status 查看状态, 必须看到一个leader 两个follower才认为启动成功了
启动Kafka集群:
单节点: 每个节点都需要执行
cd /export/server/kafka_2.12-2.4.1/bin
前台启动:
./kafka-server-start.sh ../config/server.properties
后台启动:
nohup ./kafka-server-start.sh ../config/server.properties 2>&1 &
注意: 第一次启动, 建议先前台启动, 观察是否可以正常启动, 如果OK, ctrl +C 退出, 然后挂载到后台
如何停止:
单节点: 每个节点都需要执行
cd /export/server/kafka_2.12-2.4.1/bin
操作:
jps 然后通过 kill -9
或者:
./kafka-server-stop.sh