Apache Kafka
是一个分布式流媒体平台。这到底是什么意思呢?
Apache Kafka
是一款开源的消息系统。可以在系统中起到“削峰填谷”
的作用,也可以用于异构、分布式系统中海量数据的异步化处理。
系统包括四个主要API:
-
Producer API
允许一个应用推送流记录通过一个或多个Kafka topics ; -
Consumer API
允许一个应用订阅一个或多个topics 并且处理这些流记录; -
Streams API
允许一个应用作为一个流处理者,通过topics 输入或输出流数据 ; -
Connector API
绑定并运行 Producer 或 Consumer 连接Kafka topics 到 到已经存在的系统或存储上;
Apache Kafka
的核心概念?
- Kafka是运行在一个集群上,所以它可以拥有一个或多个服务节点;
- Kafka集群将消息存储在特定的文件中,对外表现为Topics;
- 每条消息记录都包含一个key,消息内容以及时间戳;
为什么我们要会用 Apache Kafka ?
-
实现解耦:举个简单例子,快递小哥手上有很多快递需要配送,若一一通知收件人,估计快递小哥要疯掉,有了丰巢快递柜后,快递小哥可以集中将快递放到快递柜子里面,后面只需发送短信给收件人即可,这样以来快递柜子就充当了消息中间件,实现了解耦,两个人互不耽误。
-
实现冗余备份:当快递小哥兴致冲冲的拉来一车快递后,正准备投递到丰巢快递柜子,但不幸的是蜂巢快递柜子坏了,无法投资快递,快递小哥也没招,只能老老实实的去下一个丰巢快递柜子投递快递,若快递柜子又坏了,快递小哥还可以去下一个快递柜子,如此一来,实现了消息队列的冗余备份,保证你的快递不被丢失;
-
异步:如果楼下有你的快递,快递小哥需要一直在楼下等你取走快递后,快递小哥才能进行下一个快递的派单,这样以来快递小哥的效率极其低下,而有了快递柜子后,快递小哥只需要将你的快递放到柜子,然后给你发送取件短信即可,这样以来效率大大提高,这正体现了中间件的好处;
-
削峰:当双十一来临后,快递小哥的业务量倍增,这样快递小哥直接怀疑人生,自从各种丰巢、菜鸟驿站等各种消息中间件后,快递小哥没那么繁忙了,这正是体现了消息中间件的削峰作用。
那么今天我为什么会给大家推荐这份笔记来学习 Apache Kafka ?
从Kafka基本概念与特性开始,详细介绍了Kafka的部署、开发、运营、监控、调试、优化以及重要组件的设计原理,并给出了翔实的案例。
本笔记是涵盖Apache Kafka 各方面的具有实践指导意义的工具书和参考书。作者结合典型的使用场景,对Kafka 整个技术体系进行了较为全面的讲解,以便读者能够举一反三,直接应用于实践。同时,本笔记还对Kafka的设计原理及其流式处理组件进行了较深人的探讨,并给出了翔实的案例。
既然要学习Kafka,那么就要去研读它的源码。但是,Kafka 是用 Scala语言编写的。国内又没有合适的 Scala 中文书籍,所以去学习Kafka源码是一件特别痛苦的事情。但是当你越来越深入研究时就会发现自己走了多大的一个弯路!
来看看大佬们是怎么评价这份“Apache Kafka实战源码笔记” 的!
由于整个笔记比较全面,内容比较多 ,如有需要获取文中提到的 “Apache Kafka实战源码解析笔记”
的朋友 文末有直达获取地址。
第一章 认识Apache Kafka
随着大数据时代的到来,数据中蕴含的价值日益得到展现,仿佛一座待人挖掘的金矿,引来无数的掘金者。但随着数据量越来越大,如何实时准确地收集并分析数据成为摆在所有从业人员面前的难题。
本章作为本笔记的第一章,将带领读者对 Apache Kafka 系统及其生态圈建立一个宏观的概念和认识。 同时,本章将结合消息引擎系统的相关知识与设计理念,循序渐进地对 Kafka 系统的设计架构和相关概念 进行展开,并给出简单示例以快速上手Kafka。
学习本章,你将了解到以下内容。
- 消息引擎系统的定义与特点。
- Apache Kafka系统概要设计及术语。
- Apache Kafka快速入门。
第二章 Kafka发展历史
学习本章,你将了解到以下内容。
- Kafka的历史。
- Apache Kafka版本更迭。
- Apache Kafka新旧版本功能概要。
第三章 Kafka线上环境部署
学习本章,你将了解到以下内容。
- Kafka多节点环境安装部署。
- Kafka参数配置。
-
Kafka环境验证。
第四章 producer开发
不论Kafka 如何演变,万变不离其宗的是,它一定有一些外部的生产者( producer)
应用程序给自己发送消息,然后还有一些外部的消费者(consumer)
应用程序读取 producer
发送的消息。
本章着重讨论Kafka的
producer
设计以及基于Java版本producer
的开发与使用。
学习本章,你将了解到以下内容。
- Kafka producer概要。
- Kafka producer简要设计。
- Java版本producer及API。
第五章 consumer开发
不论Kafka 如何演变,万变不离其宗的是,它一定有一些外部的生产者( producer)
应用程序给自己发送消息,然后还有一些外部的消费者(consumer)
应用程序读取 producer
发送的消息。
本章着重讨论Kafka的
consumer
设计以及基于Java版本consumer
的开发与使用。
学习本章,你将了解到以下内容。
- Kafka consumer概要
- Kafka consumer简要设计。
- Java版本consumer及API。
第六章 Kafka设计原理
前五章涵盖了Apache Kafka在生产环境中使用的方方面面,详细讨论了如何安装部署 Kafka,如何使用Kafka 提供的Java 版本producer API
发送消息,以及如何使用Java 版本 consumer API
消费消息。
本章将介绍Kafka内部设计原理,带领读者深入了解Kafka内部结构。
学习本章,你将了解到以下内容。
- broker端设计架构。
- producer端设计架构。
- consumer端设计架构。
- broker端交付语义保障。
- producer端交付语义保障。
- consumer端交付语义保障。
第七章 管理Kafka集群
本章重点讲解Apache Kafka集群的运维管理、参数配置、工具脚本和常见问题的排查等内容,将基本涵盖Kafka运维相关的各个方面,从实践角度诠释主要脚本工具的使用方法。本章内容也为第八章“监控Kafka集群”内容的展开奠定了基础。
之前所有章节的内容都是围绕Kafka的功能主线展开的,主要从一-般用户的角度出发,本章则以管理员的视角阐述Kafka集群的管理。
学习本章,你将了解到以下内容。
- 集群与topic管理。
- 消费者管理。
- 常用脚本工具。
- 集群管理API。
- MirrorMaker的使用。
- Kafka安全。
- 常见问题。.
第八章 监控Kafka集群
对于运维人员而言,维护生产环境的一个重要内容就是监控集群的运行与状态。当出现问题时,系统管理员能做的只是从海量的日志中尝试定位异常行为发生的根本原因。这种排查问题的方法通常是低效率的,因此需要我们引入完善的监控指标以及框架来帮助管理Kafka集群。
本章将重点讲解Apache Kafka集群监控指标以及如何监控Kafka集群,同时也会讨论如何利用这些指标诊断问题以及目前主流的第三方图形化监控框架的使用方法。值得注意的是,如无显式说明,本章将结合1.0.0 版本的Kafka来讲述如何对Kafka进行监控。
学习本章,你将了解到以下内容。
- 集群健康度检查。
- MBean监控。
- broker端JMX监控。
- clients端JMX监控。
- OS监控。
- 主流监控框架。
第九章 调优Kafka集群
在第八章中,我们学习了监控ApacheKafka集群的方法以及目前各种主流的监控框架。
本章将查看如何调优ApacheKafka集群。
学习本章,你将了解到以下内容。
- 集群调优目标确定。
- 集群调优参数设置。
- 性能调优方法。
第十章 Kafka Connect与Kafka Streams
终于来到最后一章了。在前面的章节中我们系统地学习了实际使用Apache Kafka的各个方面。事实上,到目前为止,读者应该已经能够独立地在生产环境中部署一套完整的 Kafka 集群。
本章我们将关注Apache Kafka 0.10.0.0版本新引入的两个特性
Kafka Connect
和Kafka Streams
。
学习本章,你将了解到以下内容。
- Kafka Connect简介及使用。
- 流式处理与Kafka Streams。
- Kafka Streams使用
写在最后
金三银四,金三即将过去!是否还有很多同学没有在这个黄金时间找到心仪的工作!或者觉得自己技术栈掌握的还不够多,不够熟练?
在今年的银四
中是时候该行动起来了,不然又要后悔自己没有在金三银四中冲刺一下,年龄越来越大,技术却没有很大的提升,最后只能够被后浪拍死在沙滩上!
网友评论