Kafka01——kafka的基础架构和安装

Kafka01——kafka的基础架构和安装一 消息队列 1 使用消息队列的好处 解耦 允许你独立的扩展或修改两边的处理过程 只要确保它们遵守同样的接口约束 可恢复性 系统的一部分组件失效时 不会影响到整个系统 消息队列降低了进程间的耦合度 所以即使一个处理消息的进程挂掉 加入队列中的消息仍然可以在系统恢复后被处理

大家好,我是讯享网,很高兴认识大家。

一、消息队列
 
讯享网
 1、使用消息队列的好处
  ①解耦:允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
  ②可恢复性:系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
  ③缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
  ④削峰:在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
  ⑤异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
 2、消息队列的两种模式
  ①点对点模式(一对一,消费者主动拉取数据,收到消息后消息清除)
   消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者,但是对一个消息而言,只会被其中的一个消费者消费一次。
在这里插入图片描述
  ②发布/订阅模式(一对多,消费者消费数据之后不会清除消息)
   消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。
在这里插入图片描述
二、kafka的基础架构
 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
在这里插入图片描述
 如图所示:kafka的基础架构中包含生产者、kafka集群、消费者和zk,这其中有很多概念:
Producer-生产者:消息生产者,就是向 kafka broker 发消息的客户端。
Consumer-消费者:消息消费者,从 kafka broker 取消息的客户端。kafka的消费者(consumer)被组织在一个个的消费者组(consumer group)中,消费者组中的每一个消费者可以消费一个topic的一或多个分区的消息,但是topic的一个分区的消息不能被同一个消费者组中的多个消费者消费。其实可以比拟为现实生活中的买东西,消费者买topic中的消息,但topic的消息是以分区为单位出售的,因此消费者可以买一个或多个分区的消息,但是一个分区的消息是不能卖给多个消费者的。有所不同的是,topic中的一个分区的消息可以同时被不同消费者组的不同消费者消费。
Consumer Group-消费者组:消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
Broker:一台 kafka 服务器就是一个 broker,一个集群由多个 broker 组成,一个 broker 可以容纳多个 topic。
Topic:可以理解为一个队列,生产者和消费者面向的都是 topic。
Partition:为了实现扩展性,一个数据量非常大的 topic 可以分布到多个 broker(即服务器)上,为此可以将一个 topic 分为多个 partition,每个 partition 都是一个有序的队列,分布到不同的 broker 上独立提供服务。
Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且 kafka 仍然能够继续工作,kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,即一个 leader 和若干个 follower,也就是说 topic 的每个 partition 通过 replica 都变成了一个个的小集群。
Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是 leader。
Follower:每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据的同步。leader 发生故障时,某个 follower 会成为新的 leader。
kafka集群一个kafka集群中有多个kafka服务器(broker),这些broker通过zk形成一个集群。每个broker可以容纳多个topic,为了使消息分散在不同的broker上以提升性能或者说提升吞吐能力,kafka将每个topic分成多个分区(partition)存储在不同的broker上,分区间存储的消息是互不相同的,但这样还有一个问题就是一旦某一个broker宕机或者磁盘损坏了就可能导致一部分数据不可读,因此kafka还可以给每一个分区设置副本(replication),这些分区的副本会保存在和分区不同的broker上。有了副本就需要有主从复制,因此副本之间会存在一个leader,负责消息的存储和消费,即生产者和消费者都是和副本中的leader交互。
Zookeeper:zk在这里主要有两个作用
  ①管理kafka集群
  ②记录消费者消费的分区的偏移量,但0.9及之后的版本中每个消费者消费的每一个分区的偏移量转而存储在了kafka中的一个topic中,由kafka自己存储,默认存储7天

三、安装kafka
 1、安装zookeeper
  参考:linux安装zookeeper及使用
 2、安装kafka
  主要是配置config/server.properties:

#broker 的全局唯一编号,集群内不能重复 broker.id=0 #是否启用删除 topic 功能 delete.topic.enable=true #处理网络请求的线程数量 num.network.threads=3 #用来处理磁盘 IO 的线程数量 num.io.threads=8 #发送套接字的缓冲区大小 socket.send.buffer.bytes= #接收套接字的缓冲区大小 socket.receive.buffer.bytes= #请求套接字的缓冲区大小 socket.request.max.bytes= #kafka 运行日志存放的路径 log.dirs=/opt/module/kafka/logs #topic 在当前 broker 上的分区个数 num.partitions=1 #用来恢复和清理 data 下数据的线程数量 num.recovery.threads.per.data.dir=1 #segment 文件保留的最长时间,超时将被删除 log.retention.hours=168 #配置连接 Zookeeper 集群地址 zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181 

讯享网

  配置环境变量:

讯享网export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin 

  启动和停止:

./bin/kafka-server-start.sh -daemon config/server.properties ./bin/kafka-server-stop.sh stop 

 参考:Linux下安装kafka

小讯
上一篇 2025-02-24 07:41
下一篇 2025-04-07 09:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42555.html