文章目录
- Kafka
-
- 为什么要用消息队列
- 为什么选择了kafka
- kafka的组件与作用(架构)
- kafka为什么要分区
- Kafka生产者分区策略
- kafka的数据可靠性怎么保证
- ack应答机制(可问:造成数据重复和丢失的相关问题)
- 副本数据同步策略
- ISR
- kafka的副本机制
- kafka的消费分区分配策略
-
- Range分区分配策略
- RoundRobinAssignor分区分配策略
- StickyAssignor分区分配策略
- kafka的offset怎么维护
- kafka为什么这么快
- Kafka消费能力不足怎么处理
- kafka事务是怎么实现的
- Kafka中的数据是有序的吗
- Kafka可以按照时间消费数据吗
- Kafka单条日志传输大小
- Kafka参数优化
- Kafka适合以下应用场景
- Exactly Once语义
- Zookerper
-
- 特点
- 选举机制
-
- 新集群选举
- 非全新集群选举
- Kafka依赖Zookeeper的选举
- Kafka依赖ZK做了哪些事
-
- Kafka选举
- Kafka为什么要放弃ZK
- 基于ZooKeeper的Hadoop高可用
- Yarn高可用
- Flink
-
- 运行时架构
- Flink 应用
- 处理数据API
- 核心抽象
- Flink 异步IO
- 窗口
- Watermark (水印)
- 内存管理
- 内存模型
- 资源管理
- 调度
- 作业调度失败
- 容错
- 保存点恢复
- 端到端严格一次
- Flink SQL
- FLINK API
Kafka
为什么要用消息队列
- 解耦
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 - 可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理
消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 - 缓冲
有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。 - 灵活性与峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理
这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的
访问压力,而不会因为突发的超负荷的请求而完全崩溃。 - 异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入
队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
为什么选择了kafka
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。
- 可扩展性:kafka集群支持热扩展。
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。
- 容错性:允许集群中