1 kafka介绍
官方:
Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies.
翻译:kafka是一个实时数据管道和流水数据处理应用。它是水平可伸缩,可容错,快速强大的。被用于很多公司
Apache Kafka® is a distributed streaming platform. What exactly does that mean?
Kafka 是一个分布式的流式数据处理平台,到底是什么意思呢?
A streaming platform has three key capabilities:
2 流式数据处理平台有三个关键能力:
1》Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
发布和订阅流式数据记录,类似于消息队列或企业级信息传递系统
2》Store streams of records in a fault-tolerant durable way.
以容错的方式持久化数据流
3》Process streams of records as they occur.
进行流式计算(在数据流中进行计算)
结论:Kafka 是一个消息队列,但它不仅仅是一个消息队列。
Kafka的基本概念:
Producer: 消息和数据的生产者。任意一个向Kafka的Topic发送消息的进程、代码、服务
Consumer:消息的消费者。订阅数据(Topic),并且处理其发布的消息的进程、代码、服务
ConsumerGroup(逻辑概念): 对于同一个Topic会广播给不同的Group。每个Group中只有一个Consumer可以消费数据
Broker(物理节点):Kafka集群中的每个节点
Topic(逻辑概念): 消息的类别对数据进行区分,隔离
Partition(物理概念): Kafka下的数据存储单元,一个Topic的数据会被分散到多个Partition中。一个Partition只存储在一个broker上。Partition是有序的
Replication(): 同一个Partition可能有多个Replication.相当于是Partition的备份。多个Replication是一样的
ReplicationLeader : 一个Partition的多个Replication中 有一个ReplicationLeader 。负责Partition与Producer和Consumer交互
ReplicationManager: 负责管理当前Broder上所有分区和副本的信息。处理KafkaControl发起的请求,副本状态的切换和添加。读取消息。leader选举
概念:
1>每一个Topic被切分成多个Partitions
2 >消费者的数量要小于Partitions的数量
3 >BrokerGroup 中的Broker保存Topic中的一个或多个Partition
4> ConsumerGroup 中有且仅有一个Consumer读取Topic中一个或多个Partition并且是唯一的Consumer
Replication:
它是Partition的副本(备胎),当Broker挂掉后 Replication可以提供服务。
系统默认设置是每一个Topic的Replication的系数是1.可以在创建Topic的时候单独设置
特点:
基本单位是Topic的Partition
所有的读和写都走ReplicationLeader. Followers只是备份。
Followers必须能够及时的复制leader上的数据
增加容错性和可扩展性
结构:
官方提供的图:
Kafka强依赖zookeeper, Broker的信息存储在zookeeper,Topic的Partitions分布信息存储在Zookeeper
Kafka的消息结构特点:
Kafka特点
分布式:
多分区,多个Partition
多副本 多个Replication 增加容错性
多个订阅者: 订阅者的数量要小于Partitons
高性能:
高吞吐量
低延迟
高并发
时间复杂度O(1)
持久性和扩展性
数据可持久化
容错性
在线水平扩展
消息自动平衡