目录

初识

  • Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。

  • 是一种高吞吐量的分布式发布订阅消息系统,它可以收集并处理用户在网站中的所有动作流数据以及物联网设备的采样信息。

  • 随着单体实例的使用 必然会出现 单点故障问题 和 性能问题。

  • 单机到分布式的演变 必然涉及到 AKF拆分原则

  • 分布式的出现必然又出现一致性问题

随着以上问题的出现 kafka中应如何解决呢

  1. 单体故障 的问题, 我们一般会针对 分区 做副本
  2. 一致性与性能问题 在大数据处理中 必然有 分治的概念:
    1. 无关的数据就分散到不同的分区里,以追求并发并行
    2. 有关的数据,一定要按原有顺序发送的同一个分区里
  3. 在kafka中 分区外部是无序的, 分区内部是有序的 (内部维护自己的offset)

安装

快速开始

kafka的配置文件: 
broker.id=0  每台不一样
listeners=PLAINTEXT://node01:9092 
log.dirs=/var/kafka_data
zookeeper.connect=node01:2181,node02:2181,node03:2181/kafka

环境变量
export	KAFKA_HOME=

命令

创建  ./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --create  --topic topic02 --partitions 3  --replication-factor 3

查看  ./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list

详情  ./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --topic topic01

修改  ./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092  --alter --topic topic03 --partitions 2

删除  ./bin/kafka-topics.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092  --delete --topic topic03

消费者  ./bin/kafka-console-consumer.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01 --group g1 --property print.key=true --property print.value=true  --property key.separator=,

生产者 ./bin/kafka-console-producer.sh --broker-list CentOSA:9092,CentOSB:9092,CentOSC:9092 --topic topic01

消费组 ./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --list
			./bin/kafka-consumer-groups.sh --bootstrap-server CentOSA:9092,CentOSB:9092,CentOSC:9092 --describe --group g1
		

认识集群

  • 在主从集群中 必然依赖分布式协调 , 所以引入了 zookeeper。
  • 分布式协调中 不要当做存储用

kafka集群架构图