kafka 从入门到放弃(一)kafka的设计和结构

一.基本概念

1.Producer:消费和数据的生产者,向kafka  的topic  发布消息的进程/代码/服务
2.Consumer:消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息进程的进程/代码/服务
3.Comsumer Group : 逻辑概念,对于同一个topic,会广播给不同的group,一个group中,只有一个consumer可以消费改消息
4.Broker:物理概念,kafka集群中的每个kafka  节点
5.Topic:逻辑概念,kafka消息的类别,对数据的区分,隔离
6.Partition:物理概念,kafka  下数据存储的基本单元。一个Topic  数据,会被分散存储到多个partition,每一个partition是有循序的
7.Replication:同一个Partition 可能会有多个Replica,多个Replica之间数据是一样的。
8.Replication leader :  一个partition  的多个Replica 上,需要一个leader  负责改partition上与Producer和Consumer交互.
9:ReplicationManager  负责管理 当前broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换,添加/读取消息等等

二.概念延伸

1.Partition
	1.1每一个topic被切分为多个partitions
	1.2消费者数目小于或者等于partition的数据
	1.3Broker Group 中的每一个Broker保存Topic的一个或者多个Partitions
	1.4Consumer Group 中的仅有一个Consumer读取topic的一个或者多个Partitions,并且是唯一的Consumer.
2.Replication
	2.1当集群中有Broker挂掉的情况,系统可以主动的使Replicas提供服务
	2.2系统默认设置每一个topic的replication 系数为1 ,可以在创建topic  时单独设置
	2.3基本单位是Topic 的Partition
	2.4所有的读和写都是从leader  进,followers  只是作为备份
	2.5 follower 必须及时复制leader的数据
	2.6增加容错和可扩展性

三.基本结构

1.简介
在kafka 官网给出图解是这样的(http://kafka.apache.org/intro.html)
在这里插入图片描述

1.Kafka has four core APIs:

1.1 The Producer API allows an application to publish a stream of records to one or more Kafka topics.
1.2 The Consumer API allows an application to subscribe to one or more topics and process the stream of records produced to them.
1.3 The Streams API allows an application to act as a stream processor, consuming an input stream from one or more topics and producing an output stream to one or more output topics, effectively transforming the input streams to output streams.
1.4 The Connector API allows building and running reusable producers or consumers that connect Kafka topics to existing applications or data systems. For example, a connector to a relational database might capture every change to a table.

下面这张图更好的展示了kafka 作为消息队列模式的运作
在这里插入图片描述
2.kafka 的消息结构
在这里插入图片描述

	2.1 Offset  记录当前消息的偏移量
	2.2 Length  记录整个消息有多长
	2.3 CRC32  kafka  的一个校验字段来检验当前信息的完整性,避免数据不完整导致异常
	2.4 Magic 一个固定的字段 kafka  可以非常快速的判断这个消息是不是kafka  的消息。如果不一致直接舍弃。
	2.5 attributes 放当前消息的一些属性,会有一个枚举值
	2.6 Timestamp  当前消息的一个时间戳	
	2.7 Key Length->  key  的长度
	2.8  Key ->key 的内容
	2.9 Value Length->  value    的长度
	2.8  value ->value  的内容

四.特点

1.分布式

1.1 多分区
1.2 多副本
1.3 多订阅者
1.4基于zookeeper  调度

2.高性能

2.1 高吞吐量
2.2 低延时
2.3 高并发
2.4 时间复杂度 O(1)

3.持久性和扩展性

3.1 数据可持久化
3.2 容错性
3.3 支持在线水平扩展
3.4 消息自动平衡

猜你喜欢

转载自blog.csdn.net/u012957549/article/details/82975098