kafka 问题

文章介绍了分布式消息中间件的概念,强调了其在系统中减少耦合度的作用。Kafka作为一款消息中间件,采用Push-Pull模式,保证分区内的消息有序性,并通过副本实现数据高可用。Zookeeper在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“

分区数是否可以减少?
不可以,会丢失数据

参考资料和推荐阅读

  1. 暂无

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值