前瞻Kafka(一)

2021-03-09  本文已影响0人  zzj0990

概述

Kafka是一种分布式的,基于发布/订阅的消息系统。使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。

框架

Kafka.png
术语

物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处。
新版本弥补了老版本的坑,offset可以交由Kafka内部的topic来维护,其内部默认的Partition是50个。

为了实现扩展性,一个非常大的topic可以分布到多个 broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。
partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体 (多个partition间)的顺序。

Partition : Consumer
1 : 1
N : 1
1 : N 是绝对不允许的
Partition中的数据是可以重复被利用的
在单一使用场景下,先要保证,即便是追求性能,用多个consumer,应该注意,不能一个分区被多个consumer消费

数据的重复利用在站在Group上的,但是同Group内要遵循上述原则

可为每个Consumer指定group name,若不指定group name则属于默认的group

AKF

AKF.png
分布式:可靠性、可扩展、高性能

总结

1,Topic是逻辑上的,Partition是物理上的,Topic在逻辑上可以被认为是一个QUEUE,PUSH消息时必须指定Topic,可以理解为消息要推送到哪个 QUEUE,为了提高消息队列的高吞吐率,物理上把Topic分割成一个Partition或多个Partition
2,作为一个消息系统,Kafka遵循了传统的方式,选择由Producer向broker push消息并由Consumer从broker pull消息
3,Partition消息至Consumer是push? pull?
push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息,但是这样很容易造成Consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而pull模式则可以根据Consumer的消费能力以适当的速率消费消息。
对于Kafka而言,pull模式更合适。pull模式可简化broker的设计,Consumer可自主控制消费消息的速率,同时Consumer可以自己控制消费方式——即可批量消费也可逐条消费。
4,Partition : Consumer ->>
1 : 1
N : 1
1 : N 是绝对不允许的
Partition中的数据是可以重复被利用的
在单一使用场景下,先要保证,即便是追求性能,用多个consumer,应该注意,不能一个分区被多个consumer消费

———————————————————
坐标帝都,白天上班族,晚上是知识的分享者
如果读完觉得有收获的话,欢迎点赞加关注

上一篇 下一篇

猜你喜欢

热点阅读