Kafka的基本概念

目录

什么是Kafka

Kafka的流特性

Kafka的架构与组成

Kafka的四个核心API

Kafka的应用场景


什么是Kafka

 

Kafka是一个使用Scala语言编写的高扩展,高吞吐,高并发的分布式消息系统。Scala语言开发的中间件自带高并发属性。Kafka的使用非常依赖zk,zookeeper用来保证系统的可用性

Kafka基于发布/订阅模式,主要应用于大数据领域,同时它也是一个“流处理平台

Kafka的基本概念

 

 

Kafka的流特性

 

1.Kafka把对象序列化,最终是以文件的形式对数据流进行存储并提供容错机制

2.Kafka可发布和订阅流数据,类似消息队列或企业级消息系统

3.Kafka可以在流数据产生时即对其进行处理

 

 

Kafka的架构与组成

 

Kafka的基本概念 

  •  Producer

消息生产者,就是向kafka broker发送消息的客户端

  • Consumer

消息消费者,从kafka broker获取消息的客户端

  • Consumer Group

消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者进行消费;消费者组之间互相不影响。所有的消费者都属于某个消费者组,即消费者组逻辑上是一个订阅者。

  • Broker

一台kafka服务器就是一个broker。一个集群由多个broker组成,一个broker可以容纳多个topic

  • Topic

可以理解为一个队列,位于Broker中,生产者和消费者面向的都是一个个的topic

  • Partition

分片。一个topic可以分布到多个broker(服务器)上,一个topic可以分为多个partition,每个partition都是一个有序队列

  • Replica

副本,为保证集群中某个节点发生故障时,该节点上的partition数据不丢失,而进行的备份。一个topic的每个分区都有若干副本,一个leader和若干follower

  • Leader

副本中的Leader,只有一个。leader是生产者发送数据的对象,也是消费者消费数据的对象

  • Follower

副本中的Follower,有多个。实时的从leader中同步数据,保持和leader数据的同步。当leader发送故障时,某个follower会成为新的leader

 

 

Kafka的四个核心API

 

  • Producer API

允许一个应用程序发布一串流式的数据到一个或多个topic

  • Consumer API

允许一个应用程序订阅一个或多个topic,并且对发布给它的数据进行处理

  • Streams API

允许一个应用程序作为一个流处理器,消费一个或多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效切换

  • Connector API

允许构建并运行可重用的生产者或消费者,将Kafka topics连接到已存在的应用程序或数据系统。比如连接到一个关系型数据库,捕捉表的所有变更内容

Kafka的基本概念

 

 

Kafka的应用场景

 

 一、消息系统

用来解耦生产者数据,缓存未处理的消息。Kafka相比其他消息队列,有更好的吞吐量、更好的可用性,有利于处理大规模消息。

kafka在某种程度上对消息的顺序处理的更好,一个分片不能被多个线程消费,消费者不能比分片多。

二、存储系统

写入到kafka中的数据持久化到了磁盘中,并且有冗余备份。kafka以流的形式存储数据,允许client自行控制读取位置,根据需求可以将数据进行回放。

三、日志聚合

日志系统对日志的处理一般分为收集、清洗、聚合、存储、展示

kafka可实现日志清洗、聚合、存储。常和ELK搭配使用,在消息进入ELK之前,通过Kafka这个消息队列起到缓冲的作用。

四、跟踪网站活动

kafka可以将网站活动(浏览网页、搜索或其他用户操作)发布到中心topics中, 每种活动类型对应一个topic。基于这些订阅源,能够实现一系列用例,如实时处理、实时监视、批量地将Kafka的数据加载到Hadoop或离线数据仓库系统,进行离线数据处理并生成报告。

五、流处理

流处理用来处理无序的数据,进行流式计算。流处理包含多个阶段:从input topics消费数据,做各种处理,将结果写入到目标topic。相比Flink、Spark、Storm等正统流处理框架,Kafka在流处理中更多扮演流存储的角色。

为什么要用流处理代替批处理?批处理存在一天的延时(一般晚上处理),流处理可以实时处理