Kafka

简介

Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息

手动消费

这里的路径为八合一服务的docker-compose.yml 文件路径,实际执行时需要根据服务器情况进行替换,其次八合一服务名以前叫 hispital-service 如果找不到可能就改了名字就叫 hospital-service,具体看docker-compose.yml 的配置)

1
2
3
4
5
6
7
8
9
10
# 停掉消息发送方
docker-compose -f /home/data/docker/hosptial-service/docker-compose.yml stop hispital-service
# 进入 kafka 容器
docker exec -it kafka容器id /bin/bash
# 通过默认的 9092 Kafka Broker 端口消费
kafka-consumer-groups.sh --bootstrap-server=localhost:9092 --to-latest --reset-offsets --all-groups --all-topics --execute
# 退出容器
exit
# 重启停掉的服务
docker-compose -f /home/data/docker/hosptial-service/docker-compose.yml up -d hispital-service

总结:1️⃣ 需要先停掉消息发送方的服务,然后进入Kafka 容器内部执行命令停掉所有消费 2️⃣ 这个9092 是 Kafka Broker 的默认端口,用于接收和生产者和消费者的消息 3️⃣ 上面的操作实现原理应该就是通过接口把待消费的数据,修改其是否被消费的标识位“欺骗”系统

Kafka命令消费

取消消费

  1. 在某些极端情况下,手动消费已经不能满足了,比如 kafka 一直报错,无法使用了
  2. 以下默认 kafka 和 zookeeper 在同一个文件 docker-compose.yml 文件中管理的
1
2
3
4
5
6
7
8
9
10
# 进入 kafka 的 docker-compose.yml 路径并down 掉服务
docker-compose -f /home/data/docker/pub/kafka/docker-compose.yml down # 同时 down 掉 kafka 和 zookeeper(我们的环境是放在一起的,如果不是在一起需要分别执行)
# cd /home/data/docker/pub/kafka && docker-compose down # 正式环境
# cd /home/data/docker/kafka && docker-compose down # 测试 8807 环境
# 删除 kafka 文件
rm -rf /home/data/pub/kafka # 正式环境
rm -rf /home/data/kafka # 测试 8807 环境

# 重启 zookeeper、kafka
docker-compose -f /home/data/docker/pub/kafka/docker-compose.yml up -d # 同时重启kafka 和 zookeeper(我们的环境是放在一起的,如果不是在一起需要分别执行)