热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

前言Kafka起初是由LinkedIn公司采用Scala语言开发的-一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。
前言

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源码环境搭建

目录


推荐阅读
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 字节Java高级岗:java开发cpu吃多线程吗
    前言抱着侥幸心理投了字节跳动后台JAVA开发岗,居然收到通知去面试,一面下整个人来都是懵逼的,不知道我对着面试官都说了些啥(捂脸~~)。侥幸一面居然过了,三天后接到二面通知,结果这 ... [详细]
  • 以Flink为例,消除流处理常见的六大谬见
    以Flink为例,消除流处理常见的六大谬见 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 探究大数据环境下Kafka实现高性能的几个关键因素
    在大数据环境下,Kafka能够实现高性能的关键因素在于其独特的设计和优化策略。尽管Kafka的消息存储在磁盘上,这通常被认为会降低性能,但通过高效的文件管理和批量处理机制,Kafka能够在高吞吐量和低延迟之间取得平衡。此外,Kafka还利用了零拷贝技术、压缩算法和异步IO等手段,进一步提升了系统的整体性能。这些技术不仅保证了数据的可靠性和持久性,还使得Kafka成为处理大规模实时数据流的理想选择。 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 如何实现canal数据同步
    Canal简介与安装Canal简介Canal是阿里巴巴开发的MySQLbinlog增量订阅&消费组件。Canal是基于MySQL二进制日志的高性能数据同步系统。Canal在阿 ... [详细]
  • Java实现Kafka的生产者、消费者,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
杨斜2602934873
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有