Kafka起初是由LinkedIn公司采用Scala语言开发的-一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现已被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。
目前越来越多的开源分布式处理系统如Cloudera、Storm、 Spark、 Flink等都支持与Kafka集成。
Kafka之所以受到越来越多的青睐,与它所“扮演”的三大角色是分不开的:
消息系统: Kafka 和传统的消息系统( 也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。
存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。
流式处理平台:Kafka不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。
客户端开发
原理分析
整体架构
元数据的更新
重要的生产者参数
消费者与消费组
客户端开发
主题的管理
初识KafkaAdminClient
分区的管理
如何选择合适的分区数
文件目录布局
日志格式的演变
日志索引
日志清理
磁盘存储
协议设计
时间轮
延时操作
控制器
参数解密
分区分配策略
消费者协调器和组协调器
consumer_ offsets 剖析
事务
副本剖析
日志同步机制
可靠性分析
命令行工具
Kafka Connect
Kafka Mirror Maker
Kafka Streams
监控数据的来源
消费滞后
同步失效分区
监控指标说明
监控模块
过期时间(TTL)
延时队列
死信队列和重试队列
消息路由
消息轨迹
消息审计
消息代理
消息中间件选型
Spark的安装及简单应用
Spark编程模型
Spark的运行结构
Spark Streaming简介
Kafka与Spark Streaming的整合
Spark SQL
Structured Streaming
Kafka与Structured Streaming的整合