Kafka概述

将生产者和消费者解耦

使用消息队列的好处

  • 解耦:允许你独立的扩展或修改两边的处理过程,只要确保他们遵守同样的接口约束
  • 可恢复性:系统一部分组件失效时,不会影响到整个系统,降低了进程间的耦合度
  • 缓冲:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息处理速度不一致的情况
  • 异步通信

Kafka定义

Kafka是一款基于发布与订阅的消息系统。文件系统或数据库提交日志用来提供所有事务的持久记录,通过重放这些日志可以重建系统的状态。具备数据故障保护和性能伸缩能力。

Kafka基础架构

  1. Producer,消息生产者,向kafka broker发送信息的客户端
  2. Consumer,信息消费者,向kafka broker订阅信息的客户端
  3. Consumer Group,由多个消费者组成。每个消费者负责不同的分区
  4. Broker,一台kafka服务器就是一个broker,一个集群由多个broker组成,一个broker可以容纳多个topic
  5. Topic,生产者和消费者面向的都是一个主题
  6. Partition,一个主题有多个分区,一个分区是一个有序的队列
  7. Replica,副本,确保节点发生故障时,分区数据不丢失,一个主题的每个分区有多个副本
  8. leader,分区多个副本的主,生产者发送数据的对象,已经消费者订阅信息的对象
  9. follower,多个副本的从,实时从leader同步数据,leader发生故障时,folloer替代

消息和批次

Kafka的数据单元被称为消息,可以把消息看作数据库里的一条记录。消息由字节数组组成。
每个消息有一个元数据,键,也是字节数组和值。即固定长度的消息头和可变长度的消息体。

批次就是一组消息,这些消息属于同一个主题和分区。消息分批次传输可以减少网络开销。

主题和分区

消息通过主题分类,主题好比数据库的表,主题可以被分为好几个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,根据先进先出顺序读取。

一个主题的数据看作一个流,流是一组生产者移动到消费者的数据

生产者和消费者

生产者在默认情况下,吧消息均衡地分布到主题的所有分区上,不关心被写到哪个分区。通过消息键和分区器实现分布到具体分区。

消费者读取信息,订阅一个或多个主题。通过检查消息的偏移量来区分已经读取过的消息。偏移量是另一种元数据,它是一个不断递增的整数值。一个分区只能被一个消费者使用。

broker和集群

一个独立的服务器broker,接收来自生产者的信息,为信息设置偏移量,并提交信息到磁盘保护。为消费者提供服务,对读取分区做出相应,返回信息。

每个集群都有一个broker充当集群控制器的角色。控制器负责管理工作,把分区分配给broker和监控broker。一个分区从属于一个broker,一个分区可以分配给多个broker,也就是消息冗余。

kafka安装信息

Kafka需要安装Java和Zookeeper,Kafka使用Zookeeper保存元数据,消费者通过Zookeeper读取元数据分区偏移量,然后在broker读取数据。

  • 安装Java
  • 安装Zookeeper
  • 安装Kafka Broker

配置信息

  • broker.id:每个broker都需要一个标识符,在整个集群中时唯一的。
  • port:端口默认9092
  • zookeeper.connect:指定保存broker元数据的Zookeeper地址
  • log.dirs:kafka把所有消息都保存在磁盘上,存放目录通过log.dirs指定,同一个分区的日志片段保存在同一个路径下
posted @ 2020-03-17 21:42  Tanglement  阅读(195)  评论(0编辑  收藏  举报