Kafka

一个kafka实例就是一个Broker,多个Broker可以在一台机器上,也可以分布于多个机器。一个topic类似一个信箱,一个topic可以设置多个partition ,多个partition可以位于一个Broker,也可以分布于多个Broker中。每个topic的每个partition 中的消息都是递增有序的,递增有序跟其他的partition 没有关系,序号称之为Offset。Producers生产消息时会指定topic和partition。Consumers消费消息时也会指定topic和partition。

 

订阅消息通常有两种模式:队列模式(queuing)和发布-订阅模式(publish-subscribe)。队列模式中,consumers可以同时从服务端读取消息,每个消息只被其中一个consumer读到;发布-订阅模式中消息被广播到所有的consumer中。Consumers可以加入一个consumer 组,共同竞争一个topic,topic中的消息将被分发到组中的一个成员中。同一组中的consumer可以在不同的程序中,也可以在不同的机器上。如果所有的consumer都在一个组中,这就成为了传统的队列模式,在各consumer中实现负载均衡。如果所有的consumer都不在不同的组中,这就成为了发布-订阅模式,所有的消息都被分发到所有的consumer中。更常见的是,每个topic都有若干数量的consumer组,每个组都是一个逻辑上的“订阅者”,为了容错和更好的稳定性,每个组由若干consumer组成。这其实就是一个发布-订阅模式,只不过订阅者是个组而不是单个consumer。

 

kafka的可靠性是基于分区的,同一个topic的某一个分区可以分别处于多个Broker中,同一个分区会有多份,多份中会有主从概念,主从分配使用Zookeeper

posted @ 2019-09-24 07:21  chen-hehe  阅读(97)  评论(0编辑  收藏  举报