1.kafka所采用的设计方式,盘子就是partition,每个人就是一个consumer,每个苹果就是一条message。办法三每个盘子中苹果的消费是有序的,而办法二的消费是完全无序的
第二种方法:
第三种方法:
2.Partition的读和写
我们知道topic下划分了多个partition,消息的生产和消费最终都是发生在partition之上。下图是一个三个partition的topic的读写示意
我们先看右边的producer,可以看到写的时候,采用round-robin算法,轮询往每个partition写入。
而在消费者端,每个consumer都维护一个offset值,指向的是它所消费到的消息坐标。
我们先看group A的三个consumer,他们分别独立消费不同的三个partition。每个consumer维护了自己的offset。
我们再看group B,可以看到两个group是并行消费整个topic,同一条消息会被不同group消费到。
https://blog.csdn.net/liyiming2017/article/details/82805479
https://zhuanlan.zhihu.com/p/60110741
此处有如下知识点:
1、每个partition都是有序的不可变的。
2、Kafka可以保证partition的消费顺序,但不能保证topic消费顺序。
3、无论消费与否,保留周期默认两天(可配置)。
4、每个consumer维护的唯一元数据是offset,代表消费的位置,一般线性向后移动。
5、consumer也可以重置offset到之前的位置,可以以任何顺序消费,不一定线性后移。
————————————————
原文链接:https://blog.csdn.net/liyiming2017/java/article/details/82805479