Kafka简介

作者:陆金龙    发表时间:2024-02-25 02:23   

关键词:  

介绍

Kafka是一个分布式的、可分区的、可复制的消息系统。

术语:
Kafka将消息以topic为单位进行归纳。
将向Kafka topic发布消息的程序成为producers.
将预订topics并消费消息的程序成为consumer.
Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息,如下图所示:



客户端和服务端通过TCP协议通信。

每个consumer唯一需要维护的数据是消息在日志中的位置,也就是offset.这个offset有consumer来维护:一般情况下随着consumer不断的读取消息,这offset的值不断增加,但其实consumer可以以任意的顺序读取消息,比如它可以将offset设置成为一个旧的值来重读之前的消息。

使Kafka consumers可以在不对集群和其他consumer造成影响的情况下读取消息。可以使用命令行来"tail"消息而不会对其他正在消费消息的consumer造成影响。

 

分布式

每个分区在Kafka集群的若干服务中都有副本,这些持有副本的服务可以共同处理数据和请求,副本数量是可以配置的。副本使Kafka具备了容错能力。
每个分区都由一个服务器作为“leader”,零或若干服务器作为“followers”,leader负责处理消息的读和写,followers则去复制leader.如果leader down了,followers中的一台则会自动成为leader。

集群中的每个服务都会同时扮演两个角色:作为它所持有的一部分分区的leader,同时作为其他分区的followers,这样集群就会据有较好的负载均衡。

Producers

Producer将消息发布到它指定的topic中,并负责决定发布到哪个分区。

发布消息通常有两种模式:队列模式(queuing)和发布-订阅模式(publish-subscribe)。


Consumers

队列模式中,consumers可以同时从服务端读取消息,每个消息只被其中一个consumer读到;发布-订阅模式中消息被广播到所有的consumer中。