kafka基础介绍

kafka呢,大名鼎鼎,声名远播,老少皆宜。

前世今生

kafka最初由领英开发,没错,就是那个在中国压根没见过的,后来被微软收购的社交平台。于2011年初开源,并于2012年10月23日由Apache Incubator孵化出站。便成为了我们熟知的Apache Kafka。

kafka的开发语言是Scala,那自然是需要JVM了。此外还需要zookeeper。

Apache Kafka® is a distributed streaming platform.

一个分布式的流处理平台。说白了,就是大型的可靠的处理消息流的集群。

使用层面有几个概念必须知道

1.broker

物理层面的机器节点。一台机器上部署了kafka,那么这台机器就是kafka集群的一个节点。一般情况下,一台机器只会部署一台kafka。

2.topic

用于消息分组的最基础的抽象概念。一个集群或某一个broker都可以容纳有多个topic。

3.partition

基于topic的分组,每一个topic又可以分为多个partition。partition之间没有关联,各自有各自的顺序和消息内容。俗称topic分区。

4.producer

生产者。发送消息到kafka的角色。需要指定topic。也可以指定partition。当不指定partition的时候,也可以根据自己的需求实现partition的“负载均衡”。

producer-topic-partition

5.consumer

消费者。从kafka消费消息的角色。必须隶属于一个consumer group。

6.offset

记录consumer消费消息进度。consumer-topic-partition-offset。

7.consumer group

消费组。用于区分消费者们。

* 一个consumer group可以有多个consumer,但是一个consumer只能属于一个consumer group。

* 组与组之间无任何关联,可以消费相同的消息,offset也互相都不关联。

* 一个consumer group可以订阅多个topic。

* 每一个topic下的partition只能被一个consumer消费,不过可以被不同consumer group下的多个consumer消费。

* 一个consumer group里的一个consumer都能消费多个partition,但是同组的其他consumer不能同时消费一个partition。

* 如果一个consumer group订阅了一个topic,那么此topic下的所有partition都必须被此组消费?

* 一个consumer group里consumer数量最好小于等于topic下的partition数量,否则会有consumer被闲置。

consumer group-consumer-partition

未完待续。

你可能感兴趣的:(kafka基础介绍)