1 Kafka简介
Apache Kafka是分布式发布-订阅消息系统,一个分布式发布-订阅消息传递系统。
Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
1.1 Kafka基本架构
1、话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名;
2、生产者(Producer):是能够发布消息到话题的任何对象;
3、服务代理(Broker):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群;
4、消费者(Consumer):可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息;
1.2 基本原理
生产者将数据生产出来,交给 broker 进行存储,消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理操作。
1.3 Zookeeper在kafka的作用
保证系统可用性集群保存一些meta信息。
zookeeper作为其分布式协调框架
建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。
1.4 执行流程
系统运行的顺序:
(1)启动zookeeper 的 server
(2)启动kafka 的 server
(3)Producer 如果生产了数据,会先通过 zookeeper 找到 broker,然后将数据存放到 broker
(4)Consumer 如果要消费数据,会先通过 zookeeper 找对应的 broker,然后消费。
1.5 Kafka的使用场景
日志收集,消息系统,用户活动跟踪,运营指标,流式处理,事件源
2 安装kafka
# 通过解压文件安装,scala的版本应与kafka版本对应
tar -xzf kafka_2.12-2.3.0.tgz
2.1 启动与操作
# 进入kafka_2.12-2.3.0.tgz目录下,启动服务器
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
# 创建主题
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
# 查看主题
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
# 发送一些消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
# 启动消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning