《Kafka入门与实践》读书笔记

Kafka简介

  • Kafka是一个高吞吐量、分布式的发布--订阅消息系统。、
  •  
  • Kafka核心模块使用Scala语言开发。
  •  
  • Kafka定位就是一个分布式流出来平台。
  •  
  • 消息系统:基本结构中至少要有产生消息的组件(消费生产者,Producer)以及消费消息的组件(消费者,Consumer)。
  •  
  • 生产者负责生产消息,将消息写入Kafka集群;消费者从Kafka集群中拉取消息。
  •  
  • Kafka将一组消息抽象归纳为一个主题(Topic),也就是说,一个主题就是对消息的一个分类。
  •  
  • 生产者将消息发送到特定主题,消息者订阅主题或主题的某些分区进行消费。
  •  
  • 消息是Kafka通信的基本单位,由一个固定长度的消息头和一个可变长度的消息体构成。
  •  
  • Kafka集群就是由一个或多个Kafka实例构成,我们将每一个Kafka实例称为代理,通常也称代理为Kafka服务器。
  •  
  • 生产者负责将消息发送给代理,也就是向Kafka代理发送消息的客户端。
  •  
  • Kafka的设计初衷是使kafka能够成为统一、实时处理大规模数据的平台。应用场景:

   (1)具有高吞吐量来支持如实时的日志集这样的大规模事件流。
   (2)能够很好地处理积压的数据,以便能够周期性地加载离线数据进行处理。
   (3)能给低延迟地处理传统消息应用场景。
   (4)能够支持分区、分布式,实时地处理消息,同时具有容错保障机制。

  • 消息系统或者消息队列是用来解决应用解耦、异步通信、流量控制等问题。
  • 用处:消息系统、应用监控、网站用户行为追踪。
  • Kafka特性:
  • 消息持久化
  • 高吞吐量
  • 扩展性
  • 多客户端支持
  • Kafka Streams
  • 安全机制
  • 数据备份
  • 轻量级
  • 消息压缩

当前比较流行的消息中间件有Kafka、RocketMQ、Rabbit、ZeroMQ、ActiveMQ、MetaMQ、Redis等,这些消息中间件在性能及功能上各有所长。

2、Kafka安装配置

2.1、基础环境配置

由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK。

2.1.1、JDK安装配置

2.1.2、SSH安装配置

2.1.3   Zookeeper环境

Zookeeper是一个分布式应用程序协调服务框架,分布式应用程序可以基于Zookeeper来实现同步服务、配置维护、命令服务等,Zookeeper能提供基于类似于文件系统的目录节点树方式的数据存储,通过监控各节点数据状态的变化,达到基于数据的集群管理。

Kafka依赖Zookeeper,通过Zookeeper来对代理、消费者上下线管理、集群、分区元数据管理等,因此Zookeeper也是kafka得以运行的基础环境之一。

2.2、Kafka单机环境部署

3、Kafka核心组件

Kafka的核心功能模块,主要包括延迟操作组件、控制器、协调器、网络通信、日志管理器、副本管理器、动态配置管理及心跳检测。

3.1、延迟操作组件

6、Kafka API编程实战

Kafka提供了以下4类核心API。

Producter API。Producter API提供生产者消费相关的接口,通过实现Producer API提供的接口来自定义Producer、自定义分配策略等。

Consumer API。Consumer API提供消费消息相关接口,包括创建消费者、消费偏移量管理等。

Streams API。Stream API 是Kafka提供的一系列用来构建流处理程序的接口,通过Stream API 让流处理相关的应用场景变得更加简单。

Connect API。

6.1 主题管理

由于主题的元数据信息是注册在Zookeeper相应节点之中,所以对主题的操作实质是对Zookeeper中记录主题元数据信息

相关路径的操作。Kafka将对Zookeeper的相关操作封装成一个ZkUtils类,并封装了一个AdminUtilsl类调用ZkClient类的相关方法以实现对Kafka元数据的操作,包括对主题、代理、消费者等相关元数据的操作。对主题操作的相关API调用较简单,相应操作都是通过调用AdminUtils类的相应方法来完成的。

6.1.1 、创建主题

6.1.2 修改的主题级别配置

6.1.3 增加分区

6.1.4 分区副本重分配

6.2  生产者API应用

6.2.1 单线程生产者

6.5 Spring与Kafka整合应用

Spring与Kafka的整合有spring-kafka和spring-integration-kafka两种方式。

猜你喜欢

转载自blog.csdn.net/pbyang_love/article/details/81691484