Kafka 简介
- Kafka
- 2020-08-01
- 18热度
- 0评论
一、kafka拓扑结构:
二、Kafka架构图:
三、Kafka的特点
1、同时为分布和订阅提供高吞吐量。
2、可进行持久化操作,将消息持久化到到磁盘,以日志的形式存储,因此可用于批量消费,例如ETL,以及实时应用程序。 通过将数据持久化到硬盘以及replication防止数据丢失。
3、分布式系统,易于向外拓展。所有的Producer、broker和consumer都会有多个,均为分布式。无需停机即可拓展机器。
4、消息被处理的状态是在consumer端维护,而不是由server端维护,当失败时能自动平衡。
5、支持Online和offline的场景。
四、Kafka中的术语
1、Broker:
缓存代理,Kafka集群中的一台或多台服务器统称Broker。
a、Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。
b、Broker不保存订阅者的状态,由订阅者自己保存。
c、无状态导致消息的删除成为难题(可能删除的消息正在被订阅),Kafka采用基于时间的SLA(服务保证),消息保存一定时间(通常7天)后会删除。
d、消费订阅者可以rewind back到任意位置重新进行消费,当订阅者故障时,可以选择最小的offset(id)进行重新读取消费消息。
2、Topic:Kafka处理资源的消息源(feeds of messages)的不同分类。通俗来讲的话,就是放置“消息”的地方,也就是说消息投递的一个容器。假如把消息看作是信封的话,那么 Topic 就是一个邮箱。它与NoSQL数据库中的表非常相似。与NoSQL数据库中的表一样,该主题被拆分为分区,使主题能够分布在各个节点上。与表中的主键一样,主题具有每个分区的偏移量。您可以使用其主题,分区和偏移量唯一标识消息。

3、Producer:消息的生成者,往Broker中某个topic里面生产数据。
4、Producers:
消息和数据生成者,向Kafka的一个topic发布消息的过程叫做producers。
a、Producer将消息发布到指定的Topic中,同时Producer也能决定将此消息归属于哪个partition;比如基于round-robin方式或者通过其他的一些算法等;
b、异步发送批量发送可以很有效的提高发送效率。kafka producer的异步发送模式允许进行批量发送,先将消息缓存到内存中,然后一次请求批量发送出去。
5、Consumer:消息的消费者,从Broker中某个topic获取数据。
一般消息队列有两种模式的消费方式,分别是 队列模式 和 订阅模式:
队列模式:一对一,就是一个消息只能被一个消费者消费,不能重复消费。一般情况队列支持存在多个消费者,但是对于一个消息,只会有一个消费者可以消费它。
订阅模式:一对多,一个消息可能被多次消费,消息生产者将消息发布到Topic中,只要是订阅该Topic的消费者都可以消费。
6、Consumers:
消息和数据的消费者,订阅topic并处理其发布的消费过程叫做consumers。
在kafka中,我们可以认为一个group是一个“订阅者”,一个topic中的每个partions只会被一个“订阅者”中的一个consumer消费,不过一个consumer可以消费多个partitions中的消息。
注:Kafka的设计原理决定,对于一个topic,同一个group不能多于partition个数的consumer同时消费,否则将意味着某些consumer无法得到消息。
7、ConsumerGroup:消费者组,可以并行消费Topic中的partition的消息。
8、Message:
消息,就是要发送的内容,一般包装成一个消息对象。是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。
a、Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的,每个topic又可以分成不同的partition每个partition储存一部分。
b、partion中的每条Message包含三个属性:offset(long)、MessageSize(int32)、data(messages的具体内容)。
9、Partition:Topic物理上的分组,一个topic可以分为多个partion,每个partion是一个有序的队列。partion中每条消息都会被分配一个有序的Id(offset)。
10、分区:分区使主题可以在群集中分布。分区是水平可伸缩性的并行度单位,一个主题可以跨节点进行多个分区扩展。

消息根据分区键分配给分区; 如果没有分区键,则随机分配该分区。使用正确的密钥来避免热点非常重要。

分区中的每个消息都被分配一个称为偏移量的增量ID。每个分区的偏移量是唯一的,消息只在分区内排序。写入分区的消息是不可变的。



鲁ICP备19063141号
鲁公网安备 37010302000824号