当前位置: 首页 > news >正文

神仙级别Kafka架构笔记,阿里架构师看到都感慨怎么没早看到

前言

Kafka是由LinkedIn开发的一个分布式基于发布/订阅的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。

自上次遭受了面试官 「Kafka」 的暴击追问后,回来发奋图强,企图“「吊打面试官」”,奈何还是面试官套路深啊,公司内部大佬给小编准备了一份大佬的Kafka内部使用指南,我看了一下,确实是很强

关于这份Kafka限量笔记,我只能在文章中展示部分的章节内容和核心截图

一、对Kafka的认识

1.Kafka的基本概念

2.安装与配置

3.生产与消费

4.服务端参数配置

二、生产者

1.客户端开发

  • 必要的参数配置
  • 消息的发送
  • 序列化
  • 分区器
  • 生产者拦截器

     

2.原理分析

  • 整体架构
  • 元数据的更新

     

3.重要的生产者参数

三、消费者

1.消费者与****消费组

2.客户端开发

  • 必要的参数配置
  • 订阅主题与分区
  • 反序列化
  • 消息消费
  • 位移提交
  • 控制或关闭消费
  • 指定位移消费
  • 再均衡
  • 消费者拦截器
  • 多线程实现
  • 重要的消费者参数

     

四、主题与分区

1.主题的管理

  • 创建主题
  • 分区副本的分配
  • 查看主题
  • 修改主题
  • 配置管理
  • 主题端参数
  • 删除主题

     

2.初识KafkaAdminCilent

  • 基本使用
  • 主题合法性验证

     

3.分区的管理

  • 优先副本的选举
  • 分区重分配
  • 复制限流
  • 修改副本因子

     

4.如何选择合适的分区数

  • 性能测试工具
  • 分区数越多吞吐量就越高吗
  • 分区数的上限
  • 考量因素

     

五、日志存储

1.文件目录布局
2.日志格式的演变

  • v0版本

  • v1版本

  • 消息压缩

  • 变长字段

  • v2版本
    3.日志索引

  • 偏移量索引

  • 时间戳索引

4.日志清理

  • 日志删除

  • 日志压缩
    5.磁盘存储

  • 页缓存

  • 磁盘I/O流程

  • 零拷贝

     

六、深入服务端

1.协议设计
2.时间轮
3.延时操作
4.控制器
5.参数解密

七、深入客户端

1.分区分配策略
2.消费者协调器和组协调器

3._consumer_offsets剖析

4.事务

八、可靠性探究

1.副本剖析
2.日志同步机制

3.可靠性分析

九、Kafka应用

1.命令行工具
2.Kafka Connect
3.Kafka Mirror Maker

4.Kafka Streams

十、Kafka监控

1.监控数据的来源

2.消费滞后

3.同步失效分区

4.监控指标说明

5.监控模块

十一、高级应用

1.过期时间(TTL)

2.延时队列

3.死信队列和重试队列

4.消息路由

5.消息轨迹

6.消息审计

7.消息代理

8.消息中间件选型

十二、Kafka与Spark的集成

1.Spark的安装及简单应用

2.Spark编程模型

3.Spark的运行结构

4.Spark Streaming简介

5.Kafka与Spark Streaming的整合

6.Spark SQL

[图片上传失败...(image-cab1ce-1664085096091)]

7.Structured Streaming

8.Kafka与Structured Streaming的整合

总结

毋庸置疑,目前 Apache Kafka 是整个消息引擎领域的执牛耳者,也是大数据生态圈中颇为重量级的一员。从最早诞生于 LinkedIn 的“分布式消息系统”,到现在集成了分发、存储和计算的“流式数据平台”,Kafka 广泛应用于国内外大厂,比如 BAT、字节跳动、美团、Netflix、Airbnb、Twitter 等等。

我身边也有越来越多的工程师们,把 Kafka 加入到自己的学习列表。的确,我们仅需要学习一套框架,就能在实际业务系统中实现消息队列应用、应用程序集成、分布式存储构建,甚至是流处理应用的开发与部署,可谓相当超值了。

相关文章:

  • Django 使用VScode 创建工程
  • mysql进阶:canal实现跨机房数据同步|主从数据同步
  • 交换机与路由技术-31-扩展ACL
  • 【JAVA数据结构】二叉树的常用方法(你想要的这里都有)
  • vue实战-轮播图的最佳方案/swiper的使用
  • spring-cloud-netflix 组件概述
  • 【MICCAI 2022】PHTrans:并行聚合全局和局部表示以进行医学图像分割
  • 渗透学习-靶场篇-XSS-labs(持续更新中)
  • 【SpringCloud】三、 分布式系统的延迟和容错
  • Ultra Fast Deep Lane Detection with HybridAnchor Driven Ordinal Classification
  • CodeChef 补题
  • k8s 污点和容忍
  • Rust(6):高阶函数和发散函数
  • 交换机与路由技术-30-标准ACL
  • 软件测试——基础篇
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Android开源项目规范总结
  • C++类中的特殊成员函数
  • Github访问慢解决办法
  • Java反射-动态类加载和重新加载
  • Js基础知识(一) - 变量
  • leetcode98. Validate Binary Search Tree
  • Node 版本管理
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python - 闭包Closure
  • react 代码优化(一) ——事件处理
  • sessionStorage和localStorage
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • windows下如何用phpstorm同步测试服务器
  • 前端_面试
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 深入浏览器事件循环的本质
  • 使用docker-compose进行多节点部署
  • 算法-插入排序
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用Python写一份独特的元宵节祝福
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $(function(){})与(function($){....})(jQuery)的区别
  • (09)Hive——CTE 公共表达式
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (C语言)fread与fwrite详解
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (六) ES6 新特性 —— 迭代器(iterator)
  • *p++,*(p++),*++p,(*p)++区别?
  • .equals()到底是什么意思?
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件