kafka 问题
Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.
目录

概述
需求:
设计思路
实现思路分析
1.讲一讲分布式消息中间件
分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中间件采用分布式中间代理的方式进行通信。
如图所示,采用了消息中间件之后,上游业务系统发送消息,先存储在消息中间件,然后由消息中间件将消息分发到对应的业务模块应用(分布式生产者 - 消费者模式)。这种异步的方式,减少了服务之间的耦合程度。
2.定义消息中间件:
利用高效可靠的消息传递机制进行平台无关的数据交流
基于数据通信,来进行分布式系统的集成
通过提供消息传递和消息排队模型,可以在分布式环境下扩展进程间的通信
3.在系统中使用分布式消息中间件有什么优势呢?消息中间件在系统中起的作用又是什么呢?
爬虫调度器就是可以利用多线程机制,进行调度似的更快的进行网页爬取。
4.消息中间件:
解耦
冗余(存储)
扩展性
削峰
可恢复性
顺序保证
缓冲
异步通信
5.简单讲下 Kafka 的架构?
Kafka 是推模式还是拉模式,推拉的区别是什么?
Kafka 如何广播消息?
Kafka 的消息是否是有序的?
Kafka 是否支持读写分离?
Kafka 如何保证数据高可用?
Kafka 中 zookeeper 的作用?
是否支持事务?
分区数是否可以减少?
Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然后将其发送到 Kafka。
消费者,也就是接受消息的一方。消费者连接到 Kafka 上并接收消息,进而进行相应的业务逻辑处理。
一个消费者组可以包含一个或多个消费者。使用多分区 + 多消费者方式可以极大提高数据下游的处理速度,同一消费组中的消费者不会重复消费消息,同样的,不同消费组中的消费者消息消息时互不影响。Kafka 就是通过消费组的方式来实现消息 P2P 模式和广播模式。
Broker:服务代理节点。Broker 是 Kafka 的服务节点,即 Kafka 的服务器。
Kafka 中的消息以 Topic 为单位进行划分,生产者将消息发送到特定的 Topic,而消费者负责订阅 Topic 的消息并进行消费。
Topic 是一个逻辑的概念,它可以细分为多个分区,每个分区只属于单个主题。同一个主题下不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。
offset 是消息在分区中的唯一标识,Kafka 通过它来保证消息在分区内的顺序性,不过 offset 并不跨越分区,也就是说,Kafka 保证的是分区有序性而不是主题有序性。
副本,是 Kafka 保证数据高可用的方式,Kafka 同一 Partition 的数据可以在多 Broker 上存在多个副本,通常只有主副本对外提供读写服务,当主副本所在 broker 崩溃或发生网络一场,Kafka 会在 Controller 的管理下会重新选择新的 Leader 副本对外提供读写服务。
Record:实际写入 Kafka 中并可以被读取的消息记录。每个 record 包含了 key、value 和 timestamp。
Kafka 将 Topic 进行分区,分区可以并发读写。

Broker 注册:Broker 是分布式部署并且之间相互独立,Zookeeper 用来管理注册到集群的所有 Broker 节点。
在 Kafka 中,同一个 Topic 的消息会被分成多个分区并将其分布在多个 Broker 上,这些分区信息及与 Broker 的对应关系也都是由 Zookeeper 在维护
生产者负载均衡:由于同一个 Topic 消息会被分区并将其分布在多个 Broker 上,因此,生产者需要将消息合理地发送到这些分布式的 Broker 上。
答案关键字
简单讲下 Kafka 的架构?
Producer、Consumer、Consumer Group、Topic、Partition
Kafka 是推模式还是拉模式,推拉的区别是什么?
Kafka Producer 向 Broker 发送消息使用 Push 模式,Consumer 消费采用的 Pull 模式。拉取模式,让 consumer 自己管理 offset,可以提供读取性能
Kafka 如何广播消息?
Consumer group
Kafka 的消息是否是有序的?
Topic 级别无序,Partition 有序
Kafka 是否支持读写分离?
不支持,只有 Leader 对外提供读写服务
Kafka 如何保证数据高可用?
副本,ack,HW
Kafka 中 zookeeper 的作用?
集群管理,元数据管理
是否支持事务?
0.11 后支持事务,可以实现”exactly once“
分区数是否可以减少?
不可以,会丢失数据
参考资料和推荐阅读
- 暂无
欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~
文章介绍了分布式消息中间件的概念,强调了其在系统中减少耦合度的作用。Kafka作为一款消息中间件,采用Push-Pull模式,保证分区内的消息有序性,并通过副本实现数据高可用。Zookeeper在Kafka中负责集群管理和元数据管理。
1045

被折叠的 条评论
为什么被折叠?



