亿万级别Kafka演进之路:可靠性+事务+消息中间件+源码+日志

简介: Kafka起初是由LinkedIn公司采用Scala语言开发的-一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

前言

Kafka起初是由LinkedIn公司采用Scala语言开发的-一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

目前越来越多的开源分布式处理系统如Cloudera、Storm、 Spark、 Flink等都支持与Kafka集成。

Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:

消息系统: Kafka 和传统的消息系统( 也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。

存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。

流式处理平台:Kafka不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。

需要这份(实战讲解核心篇)的朋友可以点击此处来获取就可以了!

初识Kafka

  1. 基本概念
  2. 安装与配置
  3. 生产与消费
  4. 服务端参数配置

生产者

客户端开发

  1. 必要的参数配置
  2. 消息的发送
  3. 序列化
  4. 分区器
  5. 生产者拦截器

原理分析

整体架构

元数据的更新

重要的生产者参数

消费者

消费者与消费组

客户端开发

  1. 要的参数配置
  2. 订阅主题与分区
  3. 反序列化
  4. 消息消费
  5. 位移提交
  6. 控制或关闭消费
  7. 指定位移消费
  8. 再均衡
  9. 消费者拦截器
  10. 多线程实现
  11. 重要的消费者参数

主题与分区

主题的管理

  1. 创建主题
  2. 分区副本的分配
  3. 查看主题
  4. 修改主题
  5. 配置管理
  6. 主题端参数
  7. 删除主题

初识KafkaAdminClient

  1. 基本使用
  2. 主题合法性验证

分区的管理

  1. 优先副本的选举
  2. 分区重分配
  3. 复制限流
  4. 修改副本因子

如何选择合适的分区数

  1. 性能测试工具
  2. 分区数越多吞吐量就越高吗.
  3. 分区数的上限
  4. 考量因素

日志存储

文件目录布局

日志格式的演变

  1. v0版本
  2. v1版本
  3. 消息压缩
  4. 变长字段
  5. v2版本

日志索引

  1. 偏移量索引
  2. 时间戳索引

日志清理

  1. 日志删除
  2. 日志压缩

磁盘存储

  1. 页缓存
  2. 磁盘I/O流程
  3. 零拷贝

深入服务端

协议设计

时间轮

延时操作

控制器

  1. 控制器的选举及异常恢复
  2. 优雅关闭
  3. 分区leader的选举

参数解密

  1. broker.id
  2. bootstrap.servers
  3. 服务端参数列表.

深入客户端

分区分配策略

  1. RangeAssignor分配策略
  2. RoundRobinAssignor分配策略
  3. StickyAssignor分配策略
  4. 自定义分区分配策略

消费者协调器和组协调器

  1. 旧版消费者客户端的问题
  2. 再均衡的原理

consumer_ offsets 剖析

事务

  1. 消息传输保障
  2. 幂等
  3. 事务

可靠性探究

副本剖析

  1. 失效副本
  2. ISR的伸缩
  3. LEO与HW
  4. Leader Epoch的介入
  5. 为什么不支持读写分离

日志同步机制

可靠性分析

Kafka应用

命令行工具

  1. 消费组管理
  2. 消费位移管理
  3. 手动删除消息

Kafka Connect

  1. 独立模式
  2. REST AP
  3. 分布式模式

Kafka Mirror Maker

Kafka Streams

Kafka监控

监控数据的来源

  1. OneMinuteRate
  2. 获取监控指标

消费滞后

同步失效分区

监控指标说明

监控模块

高级应用

过期时间(TTL)

延时队列

死信队列和重试队列

消息路由

消息轨迹

消息审计

消息代理

  1. 快速入门
  2. RESTAPI介绍及示例
  3. 服务端配置及部署
  4. 应用思考

消息中间件选型

  1. 各类消息中间件简述
  2. 选型要点概述
  3. 消息中间件选型误区探讨

Kafka与Spark的集成

Spark的安装及简单应用

Spark编程模型

Spark的运行结构

Spark Streaming简介

Kafka与Spark Streaming的整合

Spark SQL

Structured Streaming

Kafka与Structured Streaming的整合

Kafka源码环境搭建

目录

需要这份(实战讲解核心篇)的朋友可以点击此处来获取就可以了!

相关文章
|
4月前
|
缓存 关系型数据库 MySQL
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
42 0
|
4月前
|
消息中间件 存储 Kafka
阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来
阿里 P7 三面凉凉,kafka Borker 日志持久化没答上来
|
28天前
|
消息中间件 存储 负载均衡
Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
【2月更文挑战第21天】Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
106 4
|
3月前
|
消息中间件 数据可视化 关系型数据库
ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
ELK7.x日志系统搭建 4. 结合kafka集群完成日志系统
46 0
|
14天前
|
消息中间件 存储 Kafka
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿一下RocketMQ和Kafka索引设计原理和方案
40 1
|
21天前
|
消息中间件 Kafka
【Kafka系列】Kafka事务一般在什么场景下使用呢
面试官:听说你精通Kafka,那我就考考你吧面试官:不用慌尽管说,错了也没关系😊。。。❤️。
13 2
【Kafka系列】Kafka事务一般在什么场景下使用呢
|
23天前
|
消息中间件 Kafka
面试官:你说说Kafka是怎么保证消息可靠性的
面试官:那要是Kafka消费堆积了怎么办。每个topic是分为多个分区给不同Broker处理,要合理分配分区数量来提高Broker的消息处理能力。比如3个Broker2个分区,可以改为3个Broker3个分区
35 1
面试官:你说说Kafka是怎么保证消息可靠性的
|
28天前
|
消息中间件 网络协议 Kafka
Kafka【付诸实践 02】消费者和消费者群组+创建消费者实例+提交偏移量(自动、手动)+监听分区再平衡+独立的消费者+消费者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka消费者】
【2月更文挑战第21天】Kafka【付诸实践 02】消费者和消费者群组+创建消费者实例+提交偏移量(自动、手动)+监听分区再平衡+独立的消费者+消费者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka消费者】
46 3
|
28天前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
1月前
|
SQL 缓存 关系型数据库
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
64 0

热门文章

最新文章