Kafka是什么?
Kafka是一个分布式消息系统中间件,主要在分布式环境下为各个系统提供消息传递服务。其主要优点是高吞吐、超强的消息堆积、持久化能力强、快速的消息get、put。
Kafka核心组件以及相关概念
consumer,producer,broker
Broker:Kafka集群的每一个节点称为broker,使用broker来接收Producer和Consumer的请求,并把Message持久化到本地磁盘。每个Cluster当中会选举出一个Broker来担任Controller,负责处理Partition的leader选举,协调Partition迁移等工作。
Consumer:用于从Broker中取出/消费Message。
Producer:用于往Broker中发送/产生Message。
注意:以上组件在分布式环境下均可以是多个,支持故障转移。同时ZK仅和broker和consumer相关。值得注意的是broker的设计是无状态的,消费的状态信息依靠消费者自己维护,通过一个offset偏移量。client和server之间通信采用TCP协议。
topic和partition
Topic:用于划分Message的逻辑概念,一个topic可以分布在多个broker上
Partition:是kafka中横向扩展和一切并行化的基础,每个topic都至少被切分为1个partition。Kafka中采用分区的设计有几个目的。一是可以处理更多的消息,不受单台服务器的限制。Topic拥有多个分区意味着它可以不受限的处理更多的数据。第二,分区可以作为并行处理的单元。
Offset:消息在partition中的编号,编号顺序不能跨partition。由消费者控制offset,因此分区本身所在broker是无状态的。消费者可以自由控制offset,很灵活。
同个分区内有序消费:每一个分区都是一个顺序的、不可变的消息队列, 并且可以持续的添加。分区中的消息都被分配了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。
Replication:(Partition副本数)每个分区都有自己的镜像分区,来保证分区的高可用。其中一个称为leader。如果leader挂掉了,也会有相应的选举算法来选新的leader。Kafka支持以Partition为单位对Message进行冗余备份,每个Partition都可以配置至少1个Replication(当仅1个Replication时即仅该Partition本身)。
Leader:每个Replication集合中的Partition都会选出一个唯一的Leader,所有的读写请求都由Leader处理。其他Replicas从Leader处把数据更新同步到本地,过程类似大家熟悉的MySQL中的Binlog同步。
ISR(In-Sync Replica):是Replicas的一个子集,表示目前Alive且与Leader能够Catch-up的Replicas集合。由于读写都是首先落到Leader上,所以一般来说通过同步机制从Leader上拉取数据的Replica都会和Leader有一些延迟(包括了延迟时间和延迟条数两个维度),任意一个超过阈值都会把该Replica踢出ISR。每个Partition都有它自己独立的ISR。
消费者组--同组每个消费者消费不同分区的数据,最好是消费者数=分区数
消费者组提供两种消费TOPIC的方式:
1)只有一个消费者组:保证消费者组内负载均衡的读取消息
2)多个消费者组:每个组读取全部的消息
以上内容均为作者个人笔记,如有错误欢迎指正...
关注CSDN博客 Zonzereal,更多大数据笔记等你...
领取专属 10元无门槛券
私享最新 技术干货