-e KAFKA_ZOOKEEPER_CONNECT=192.168.11.129:2181/kafka: 这是指定Zookeeper的连接地址和端口的环境变量,本例中连接到192.168.11.129...通过运行这个命令,您将在Docker中启动一个具有配置和映射的Kafka容器,其中包括Broker ID、Zookeeper连接、广告侦听器等设置。...在这个命令中,通过设置KAFKA_ZOOKEEPER_CONNECT环境变量为192.168.11.129:2181/kafka,指定了Kafka连接到的Zookeeper服务的地址和端口。...如果在Windows的宿主机上无法ping通172.17.0.2,但在Docker中的zk能够ping通宿主机的IP,这可能是由于Windows主机上的网络配置导致的。...那如果在docker中启动了kafka镜像。
Consumer(消费者):接收消息方,消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。...ZooKeeper:ZooKeeper 是 Kafka(集群)中使用的分布式协调服务,用于维护 Kafka(集群)的状态和元数据信息,例如主题和分区的分配信息、消费者组和消费者偏移量等信息。...此时,Kafka 可以脱离 Zookeeper 单独运行,但需要配置 KRaft 控制器才行,Kafka 默认服务还是要配合 Zookeeper 运行的。3.不同的消息类型怎么办?...在上述最基础的 Kafka 架构中我们会发现一个问题,那就是如果是不同的消息类型要怎么办?...Zookeeper:用于管理 Broker 集群的元数据,如分区分配、领导者选举、消费者组和消费者偏移量等信息等。
在执行停止命令之前,请确保没有任何重要的操作正在进行中,因为 Kafka 服务器的停止可能会导致正在进行的操作中断。 如果 Kafka 服务器进程无法停止,你可能需要手动查找并杀死该进程。...通过连接到这个 ZooKeeper 实例,kafka-topics.sh 脚本能够获取 Kafka 集群的元数据信息。...但是,如果 Kafka 集群中的某些 broker 不可用或未能成功处理删除请求,那么这些 broker 上可能仍然会保留该主题的残留数据。...如果 Kafka 集群中有多个 broker,可以在这个参数中列出它们,用逗号分隔,但通常只需要提供一个或多个可用于发现集群中其他 broker 的地址即可。...如果 Kafka 集群中有多个分区和多个副本,控制台消费者将只连接到它所能发现的分区领导者(leader),并从那里读取消息。Kafka 的内部机制确保了消息的可靠传递和容错性。
分布式肯定会带来问题:“万一其中一台broker(Kafka服务器)出现网络抖动或者挂了,怎么办?”...如果某个Broker挂了,那就会选举出其他Broker的partition来作为主分区,这就实现了高可用。...在以前版本的Kafka,这个offset是由Zookeeper来管理的,后来Kafka开发者认为Zookeeper不合适大量的删改操作,于是把offset在broker以内部topic(__consumer_offsets...Zookeeper虽然在新版的Kafka中没有用作于保存客户端的offset,但是Zookeeper是Kafka一个重要的依赖。 探测broker和consumer的添加或移除。...Zookeeper发现消费者A挂了,让消费者B去消费原本消费者A的分区,等消费者A重连的时候,发现已经重复消费同一条数据了。
/config/server.properties ##kafka 停止 bin/kafka-server-stop.sh 如果上面命令并未停止掉相应的进程,建议执行kill –s TERM.../bin/kafka-reassign-partitions.sh --zookeeper xxxx --topics-to-move-json-file xx.json --broker-list "...若出现ISR频繁的Expanding和 Shinking表明可能是单个分区的数据量过大导致部分分区的follower无法及时备份,或者follower无法及时同步足够的消息已满足ISR判定条件,从而被Shinking...解决方法: 1、观察集群的其他节点是否有同样报错,多个报错日志中是否都指向固定的kafka节点(连接问题),若指向同一broker,则表明数据同步线程无法读取该节点的消息,该节点存在问题,观察该节点的iostat...但是若出现kafka集群不可用,且无法快速恢复集群状态,你该怎么办。 答案是:换个姿势重启!
Connectors:允许构建和运行可重用的生产者或者消费者,能够把kafka主题连接到现有的应用程序或数据系统。例如:一个连 接到关系数据库的连接器可能会获取每个表的变化。...相关术语说明: Broker:kafka集群中包含一个或者多个服务实例,这种服务实例被称为Broker Topic:每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic Partition...如果对每一个消息都进行压缩,压缩的效率就会大大降低。kafka支持很多种压缩方式,允许使用递归的消息集合。...4.kafka的消息读写过程 1.Producer根据zookeeper连接到或者的broker,从zookeeper节点找到该partition的leader 2.producer把需要发送的消息发给该...kafka在读取数据的时候,会判断数据是否存在于page cache,如果存在的话就会直接从page cache中消费,所以消费实时数据的速度就会快很多。
数据层 CKafka 数据层和原生 Kafka 采用相同的分布式部署方式,即多个数据副本分布在不同 broker 节点,不同节点会部署在不同可用区。...对于客户端来说,当某个可用区出现异常不可用后,如果某个主题分区的 leader 位于不可用区 broker 节点上,则原先建立的相关链接会出现超时或者链接被关闭的情况,当该分区 leader 节点异常之后...控制层 CKafka 的控制层和原生 Kafka 采用相同的技术方案,依赖 zookeeper 对 broker 节点进行服务发现和集群 Controller 选举。...跨可用区部署场景解析 单 AZ 不可用 单个 AZ 不可用后,如前文对原理的解析,客户端会出现断连重连,重连后服务仍能正常提供。...由于管控API服务目前不支持跨可用区部署,所以在单个AZ不可用之后,可能出现无法通过控制台创建Topic,配置ACL策略,查看监控等现象,但不会影响存量业务的生产消费 两个 AZ 网络隔离 如果两个 AZ
服务管理 前台启动broker bin/kafka-server-start.sh /server.properties Ctrl + C 关闭 后台启动broker bin/kafka-server-start.sh...-daemon /server.properties 关闭broker bin/kafka-server-stop.sh 2....:2181 --partitions 6 --topic topicname 相关可选参数 参数 描述 例子 --bootstrap-server指定kafka服务 指定连接到的kafka服务; 如果有这个参数...,则--zookeeper可以不需要 –bootstrap-server localhost:9092 --zookeeper 弃用, 通过zk的连接方式连接到kafka集群; –zookeeper localhost...:2181 或者localhost:2181/kafka --replication-factor 副本数量,注意不能大于broker数量;如果不提供,则会用集群中默认配置 –replication-factor
分析:既然在项目中用了MQ,肯定事先要对业界流行的MQ进行调研,如果连每种MQ的优缺点都没了解清楚,就拍脑袋依据喜好,用了某种MQ,还是给项目挖坑。如果面试官问:"你为什么用这种MQ?。"...,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。...如果无法做到可靠性传输,可能给公司带来千万级别的财产损失。同样的,如果可靠性传输在使用过程中,没有考虑到,这不是给公司挖坑么,你可以拍拍屁股走了,公司损失的钱,谁承担。...有的人会问:那如果为了吞吐量,有多个消费者去消费怎么办? 这个问题,没有固定回答的套路。比如我们有一个微博的操作,发微博、写评论、删除微博,这三个异步操作。如果是这样一个业务场景,那只要重试就行。...如果面试官不问这几个问题怎么办,简单,自己把几个问题讲清楚,突出以下自己考虑的全面性。 最后,希望大家打好基本功,做一个爱思考,懂思考,会思考的程序员。
再比如当一个 Broker 宕机后,其上负责读写请求的主 Partition 无法正常访问,如何让从 Partition 转变成主 Partition 来继续提供正常的读写服务?...试想一下,如果一个集群没有一个“领导者”,那么谁去和“外界”(比如 ZK)沟通呢?谁去协调 Partition 应该如何分布在集群中的不同 Broker 上呢?...谁去处理 Broker 宕机后,在其 Broker 上的主 Partition 无法正常提供读写服务后,将对应的从 Partition 转变成主 Partition 继续正常对外提供服务呢?...Kafka 的设计者很聪明,Zookeeper 既然是分布式应用协调服务,那么干脆就让它来帮 Kafka 集群选举一个“领导者”出来,这个“领导者”对应的 KafkaController 称为 Leader...正常情况下,上面这个流程没有问题,但是如果在 Broker1 离线的情况下,Zookeeper 准备删除 /controller 的临时 node 时,系统 hang 住没办法删除,改怎么办呢?
分析:既然在项目中用了MQ,肯定事先要对业界流行的MQ进行调研,如果连每种MQ的优缺点都没了解清楚,就拍脑袋依据喜好,用了某种MQ,还是给项目挖坑。如果面试官问:"你为什么用这种MQ?。"...其实博主第一眼看到这个图,就觉得和kafka好像,只是NameServer集群,在kafka中是用zookeeper代替,都是用来保存和发现master和slave用的。...如果无法做到可靠性传输,可能给公司带来千万级别的财产损失。同样的,如果可靠性传输在使用过程中,没有考虑到,这不是给公司挖坑么,你可以拍拍屁股走了,公司损失的钱,谁承担。...有的人会问:那如果为了吞吐量,有多个消费者去消费怎么办? 这个问题,没有固定回答的套路。比如我们有一个微博的操作,发微博、写评论、删除微博,这三个异步操作。如果是这样一个业务场景,那只要重试就行。...如果面试官不问这几个问题怎么办,简单,自己把几个问题讲清楚,突出以下自己考虑的全面性。 最后,其实我不太提倡这样突击复习,希望大家打好基本功,做一个爱思考,懂思考,会思考的程序员。
,宕机了怎么办?...问:设置缓存失效时间,那如果前一个线程把这个锁给删除了呢? 问:如果加锁和解锁之间的业务逻辑执行的时间比较长,超过了锁过期的时间,执行完了,又删除了锁,就会把别人的锁给删了。怎么办?...无法直接发送,造成消息滞后,无法发挥效益最大化。 异步发送消息的同时能够对异常情况进行处理,生产者提供了 Callback 回调。 问:Kafka 生产者发送消息,有哪些分区策略?...问:Kafka 是如何在 Broker 间分配分区的? 在 broker 间平均分布分区副本。...(本质上也是秒杀系统) 问:如果让你设计一个消息队列,你会怎么设计? 项目经验及数据量 问:这个项目的亮点、难点在哪里? 问:如果这个模块挂掉了怎么办? 问:你们的项目有多少台机器?
当某个Broker节点出现故障时,ZooKeeper会触发选举过程,从剩余的Broker节点中选举出一个新的Leader节点来继续处理消息。这确保了Kafka集群的高可用性。...消息顺序性: Kafka保证同一个Partition内的消息是有序的,但不同Partition之间的消息顺序性则无法保证。...连接与重连: Producer需要与Kafka集群建立连接,以便发送消息。如果连接断开,需要能够自动重连。 Kafka提供了多种连接和重连策略,Producer可以根据需要进行配置。...版本兼容性: 在升级Kafka集群或消费者应用程序时,需要注意版本兼容性问题。 确保新版本的消费者能够正常连接到旧版本的Kafka集群,并正确处理其中的消息。...版本兼容性: 在升级Kafka集群或消费者应用程序时,需要注意版本兼容性问题。 确保新版本的消费者组能够正常连接到旧版本的Kafka集群,并正确处理其中的消息。
3 --partitions 3 --topic test ---- 相关可选参数 参数 描述 例子 --bootstrap-server 指定kafka服务 指定连接到的kafka服务; 如果有这个参数...,则 --zookeeper可以不需要 –bootstrap-server localhost:9092 --zookeeper 弃用, 通过zk的连接方式连接到kafka集群; –zookeeper...localhost:2181 或者localhost:2181/kafka --replication-factor 副本数量,注意不能大于broker数量;如果不提供,则会用集群中默认配置 –replication-factor...更多的用法请参考正则表达式 3.Topic分区扩容 zk方式(不推荐) >bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topic1...服务 指定连接到的kafka服务; 如果有这个参数,则 --zookeeper可以不需要 –bootstrap-server localhost:9092 --at-min-isr-partitions
分析:一个使用了MQ的项目,如果连这个问题都没有考虑过,就把MQ引进去了,那就给自己的项目带来了风险。我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好预防。要记住,不要给公司挖坑!...分析:既然在项目中用了MQ,肯定事先要对业界流行的MQ进行调研,如果连每种MQ的优缺点都没了解清楚,就拍脑袋依据喜好,用了某种MQ,还是给项目挖坑。如果面试官问:”你为什么用这种MQ?。”...其实博主第一眼看到这个图,就觉得和kafka好像,只是NameServer集群,在kafka中是用zookeeper代替,都是用来保存和发现master和slave用的。...如果无法做到可靠性传输,可能给公司带来千万级别的财产损失。同样的,如果可靠性传输在使用过程中,没有考虑到,这不是给公司挖坑么,你可以拍拍屁股走了,公司损失的钱,谁承担。...有的人会问:那如果为了吞吐量,有多个消费者去消费怎么办? 这个问题,没有固定回答的套路。比如我们有一个微博的操作,发微博、写评论、删除微博,这三个异步操作。如果是这样一个业务场景,那只要重试就行。
服务 指定连接到的kafka服务; 如果有这个参数,则 --zookeeper可以不需要 --bootstrap-server localhost:9092 --zookeeper 弃用, 通过zk的连接方式连接到...kafka集群; --zookeeper localhost:2181 或者localhost:2181/kafka --replication-factor 副本数量,注意不能大于broker数量;如果不提供...更多的用法请参考正则表达式 3.Topic分区扩容 zk方式(不推荐) >bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topic1...--partitions 2 kafka版本 >= 2.2 支持下面方式(推荐) 单个Topic扩容 bin/kafka-topics.sh --bootstrap-server broker_host...服务 指定连接到的kafka服务; 如果有这个参数,则 --zookeeper可以不需要 --bootstrap-server localhost:9092 --at-min-isr-partitions
领取专属 10元无门槛券
手把手带您无忧上云