Kafka(2)kafka的概念及安装、副本与分区

1.Kafka的特点

1.解耦:
  允许你独.立的扩展或修改两边的处理理过程,只要确保它们遵守同样的接.口约束。
2.冗余:
  消息队列列把数据进.行行持久化直到它们已经被完全处理理,通过这.一.方式规避了了数据丢失.风险。许多消息队
列列所采.用的"插.入-获取-删除"范式中,在把.一个消息从队列列中删除之前,需要你的处理理系统明确的指出该消
息已经被处理理完毕,从.而确保你的数据被安全的保存直到你使.用完毕。
3.扩展性:
  因为消息队列列解耦了了你的处理理过程,所以增.大消息.入队和处理理的频率是很容易易的,只要另外增加处理理过
程即可。
4.灵活性 & 峰值处理理能.力力:
  在访问量量剧增的情况下,应.用仍然需要继续发挥作.用,但是这样的突发流量量并不不常.见。如果为以能处理理
这类峰值访问为标准来投.入资源随时待命.无疑是巨.大的浪费。使.用消息队列列能够使关键组件顶住突发的访问
压.力力,.而不不会因为突发的超负荷的请求.而完全崩溃。
5.可恢复性:
  系统的.一部分组件失效时,不不会影响到整个系统。消息队列列降低了了进程间的耦合度,所以即使.一个处理理
消息的进程挂掉,加.入队列列中的消息仍然可以在系统恢复后被处理理。
6.顺序保证:
  在.大多使.用场景下,数据处理理的顺序都很重要。.大部分消息队列列本来就是排序的,并且能保证数据会按
照特定的顺序来处理理。(Kafka 保证.一个 Partition 内的消息的有序性)
7.缓冲:
  有助于控制和优化数据流经过系统的速度,解决.生产消息和消费消息的处理理速度不不.一致的情况。
8.异步通信:
  很多时候,.用户不不想也不不需要.立即处理理消息。消息队列列提供了了异步处理理机制,允许.用户把.一个消息放.入
队列列,但并不不.立即处理理它。想向队列列中放.入多少消息就放多少,然后在需要的时候再去处理理它们。

在这里插入图片描述

2.Kafka架构图

在这里插入图片描述
在这里插入图片描述
(注意:老版本的kafka中的consumer需要连接zookeeper再消费数据,新版的kafka中consumer直接与broker进行连接,提高了效率)

3.Kafka相关概念

1.producer:
  消息⽣生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
  kafka 集群中安装Kafka的服务器器。
3.topic:
  每条发布到 kafka 集群的消息属于的类别,即 kafka 是⾯面向 topic 的(相当于数据库中的表)
4.partition:
  partition 是物理理上的概念,每个 topic 包含⼀一个或多个 partition。kafka 分配的单位是
partition。
5.consumer:
  从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
  high-level consumer API 中,每个 consumer 都属于⼀一个 consumer group,每条消息只能被
consumer group 中的⼀一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
  partition 的副本,保障 partition 的⾼高可⽤用。
8.leader:
  replica 中的⼀一个⻆角⾊色, producer 和 consumer 只跟 leader 交互。
9.follower:
  replica 中的⼀一个⻆角⾊色,从 leader 中复制数据。
10.zookeeper:
  kafka 通过 zookeeper 来存储集群的 meta 信息

总结:
1.producer:
  消息⽣生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
  kafka 集群中安装Kafka的服务器器。
3.topic:
  每条发布到 kafka 集群的消息属于的类别,即 kafka 是⾯面向 topic 的(相当于数据库中的表)
4.partition:
  partition 是物理理上的概念,每个 topic 包含⼀一个或多个 partition。kafka 分配的单位是
partition。
5.consumer:
  从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
  high-level consumer API 中,每个 consumer 都属于⼀一个 consumer group,每条消息只能被
consumer group 中的⼀一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
  partition 的副本,保障 partition 的⾼高可⽤用。
8.leader:
  replica 中的⼀一个⻆角⾊色, producer 和 consumer 只跟 leader 交互。
9.follower:
  replica 中的⼀一个⻆角⾊色,从 leader 中复制数据。
10.zookeeper:
  kafka 通过 zookeeper 来存储集群的 meta 信息

一个broker上可能存在多个topic,而一个topic会有多个partition分区,一个topic的一个分区会有多个副本存在不同的broker上,同一个分区的多个副本分为leader和follower,leader是活跃分区,follower分区从leader活跃分区中复制数据。

在这里插入图片描述

副本的数量不能超过现有Broker的数量,分区的数量是可以超过broker的数量,一个broker上也可以有多个leader分区,但肯定不是同一个分区。

总结:

1.Kafka的⽣生成者直接向Broker的Leader分区写⼊入数据,不不需要连接ZK
2.Kafka的消费者(⽼老老的API需要先连接ZK,获取Broker信息和topic、分区偏移量量信息),新的API不不需要
连接ZK(直连⽅方式,效率更更⾼高)

4安装Kafka集群及操作命令

安装zookeeper集群和kafka集群,因为kafka要依赖于zookeeper

启动zookeeper

/bigdata/zookeeper-3.4.13/bin/zkServer.sh start
/bigdata/zookeeper-3.4.13/bin/zkServer.sh status

在所有节点启动kafka

/bigdata/kafka_2.12-2.4.1/bin/kafka-server-start.sh -daemon /bigdata/kafka_2.12-
2.4.1/config/server.properties

查看Kafka进程信息

jps

查看Kafka的topic

/bigdata/kafka_2.12-2.4.1/bin/kafka-topics.sh --list --zookeeper localhost:2181

创建topic

/bigdata/kafka_2.12-2.4.1/bin/kafka-topics.sh --zookeeper localhost:2181 --create –
topic wordcount --replication-factor 3 --partitions 3

启动命令⾏行行⼀一个⽣生产者

/bigdata/kafka_2.12-2.4.1/bin/kafka-console-producer.sh --broker-list node-
1.51doit.cn:9092,node-2.51doit.cn:9092,node-3.51doit.cn:9092 --topic wordcount

启动⼀一个命令⾏行行消费者

/bigdata/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server node-
1.51doit.cn:9092,node-2.51doit.cn:9092,node-3.51doit.cn:9092 --topic wordcount --from beginning

–from-beginning 消费以前产⽣生的所有数据,如果不不加,就是消费消费者启动后产⽣生的数据

删除topic

/bigdata/kafka_2.12-2.4.1/bin/kafka-topics.sh --delete --topic wordcount --zookeeper
localhost:2181

查看topic详细信息

/bigdata/kafka_2.12-2.4.1/bin/kafka-topics.sh --zookeeper localhost:2181 --describe –
topic wordcount

查看某个topic的偏移量量

/bigdata/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --topic __consumer_offsets –
bootstrap-server node-1.51doit.cn:9092,node-2.51doit.cn:9092,node-3.51doit.cn:9092 –
formatter “kafka.coordinator.group.GroupMetadataManager$OffsetsMessageFormatter” –
consumer.config /bigdata/kafka_2.12-2.4.1/config/consumer.properties --from-beginning

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值