Kafka 需要更新

先看下kafka的整体

黑色箭头的通信采用的是TCP协议.

kafka

Topic

kafka允许我们把一类消息归类在一起, 这就是Topic, kafka还对每个Topic进行了分区. 如下就是三个分区. 012345678这些叫做offset, 是partition(分区)用来记录每个offset所对应的消息的. 如图, 在分区中, 消息是有序的.

topic剖析

生产者

生产者发布消息

  1. 发给Topic, 在Topic内部采用复杂均衡的模式将消息分发给各个分区.
  2. 发给Topic, 并且指定发送给哪个分区.

消费者

消费者所需要维护的数据, 只有其所消费的那个分区的offset. 按offset读取数据的时候, 一般来说都是按照顺序读取的, 但是消费者也可以指定offset的值, 即使这个数据已经被读取过了, 只要这个分区消息还在有效期中, 都可以被读到.

队列模式和发布/订阅模式

  1. 队列模式: 一组消费者消费一个Topic的消息, 每个消息只会被一个消费者给消费掉.
  2. 发布/订阅模式: 同一条消息会同时被多消费者消费. 每组内可能会有一个或多个消费者, 在组内其实可以看做"队列模式", 进入组内的一条只会被一个消费者消费. 这里需要注意的是, 订阅的是组而不是个体消费者.
集群和消费者

有序性

  • 以分区顺序: 上面有说道, 每个分区内部的消息是有顺序的. 如果只有一个/组消费这个分区, 那么这个/组的消费者消费的消息就是顺序的. 这种相对下面的方式提高了并发量的上限, 但是不能保证Topic是顺序的.
  • 以Topic顺序: 那么就让这个Topic只有一个分区, 并且只有一个(组)消费者去消费他. 但是随之而来的问题就是并发性能上限不高的问题.

集群

zookeeper

leader和follower

pull模式?

重复消费问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Kafka入门经典教程-Kafka-about云开发 http://www.aboutyun.com/threa...
    葡萄喃喃呓语阅读 10,890评论 4 54
  • kafka的定义:是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Act...
    时待吾阅读 5,373评论 1 15
  • 一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独...
    ITsupuerlady阅读 1,662评论 0 9
  • Kafka官网:http://kafka.apache.org/入门1.1 介绍Kafka™ 是一个分布式流处理系...
    it_zzy阅读 3,917评论 3 53
  • 一、入门1、简介Kafka is a distributed,partitioned,replicated com...
    HxLiang阅读 3,461评论 0 9