热门标签 | 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源码环境搭建

目录


推荐阅读
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • window下kafka的安装以及测试
    目录一、安装JDK(需要安装依赖javaJDK)二、安装Kafka三、测试参考在Windows系统上安装消息队列kafka一、安装JDKÿ ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 本文提供了一套实用的方法论,旨在帮助开发者构建能够应对高并发请求且易于扩展的Web服务。内容涵盖了服务器架构、数据库管理、缓存策略以及异步处理等多个方面。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • MySQL InnoDB Double Write机制详解
    本文深入探讨了MySQL InnoDB存储引擎的Double Write技术,该技术通过在内存和磁盘上创建数据页的副本,确保了部分写失效(Partial Page Write)情况下的数据完整性和可靠性。同时,文章介绍了InnoDB以页为单位进行读取和更新的机制,并详细解析了Double Write的工作原理。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
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社区 版权所有