亿万级别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源码环境搭建

目录

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

相关文章
|
JavaScript 前端开发 中间件
在 Pinia 中如何使用中间件进行日志记录?
在 Pinia 中如何使用中间件进行日志记录?
602 162
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
302 0
|
SQL 关系型数据库 MySQL
MySQL事务日志-Undo Log工作原理分析
事务的持久性是交由Redo Log来保证,原子性则是交由Undo Log来保证。如果事务中的SQL执行到一半出现错误,需要把前面已经执行过的SQL撤销以达到原子性的目的,这个过程也叫做"回滚",所以Undo Log也叫回滚日志。
866 7
MySQL事务日志-Undo Log工作原理分析
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
2581 14
MySQL事务日志-Redo Log工作原理分析
|
消息中间件 缓存 监控
go高并发之路——消息中间件kafka
本文介绍了高并发业务中的流量高峰应对措施,重点讲解了Kafka消息中间件的使用,包括常用的Go语言库sarama及其版本问题,以及Kafka的版本选择建议。文中还详细解释了Kafka生产者的四种分区策略:轮询、随机、按Key和指定分区,并提供了相应的代码示例。
515 1
go高并发之路——消息中间件kafka
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
1265 1
|
消息中间件 中间件 Kafka
解锁Kafka等消息队列中间件的测试之道
在这个数字化时代,分布式系统和消息队列中间件(如Kafka、RabbitMQ)已成为日常工作的核心组件。本次公开课由前字节跳动资深专家KK老师主讲,深入解析消息队列的基本原理、架构及测试要点,涵盖功能、性能、可靠性、安全性和兼容性测试,并探讨其主要应用场景,如应用解耦、异步处理和限流削峰。课程最后设有互动答疑环节,助你全面掌握消息队列的测试方法。
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
782 0
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
476 0
|
存储 关系型数据库 MySQL
深入MySQL:事务日志redo log详解与实践
【8月更文挑战第24天】在MySQL的InnoDB存储引擎中,为确保事务的持久性和数据一致性,采用了redo log(重做日志)机制。redo log记录了所有数据修改,在系统崩溃后可通过它恢复未完成的事务。它由内存中的redo log buffer和磁盘上的redo log file组成。事务修改先写入buffer,再异步刷新至磁盘,最后提交事务。若系统崩溃,InnoDB通过redo log重放已提交事务并利用undo log回滚未提交事务,确保数据完整。理解redo log工作流程有助于优化数据库性能和确保数据安全。
1300 0