美文网首页
kafka学习

kafka学习

作者: 裂开的汤圆 | 来源:发表于2020-12-13 02:01 被阅读0次
    image.png

    Producer:消息生产者

    Consumer:消息消费者

    Topic:在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。为了使得Kafka的吞吐率可以线性提高,物理上把Topic分成一个或多个Partition,每个Partition在物理上对应一个文件夹,该文件夹下存储这个Partition的所有消息和索引文件。

    Consumer Group(CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG,但每个partion只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic;

    Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic

    Partition(分区):为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic又可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(在kafka中称为offset,偏移量)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。
    为了更好的理解Partition,举一个的例子,例如当有一条新消息到来时,先找到该消息的topic值,然后通过计算该消息的hash值,通过hash值确定该消息要存放到哪个Partition中去。Partition可以看成将原本完整的一个topic队列切分成好几个小的队列,这几个小的队列组合起来才是一个完整的topic。

    Offset:Offset(偏移量),可以理解为ID,每个Partition中的offset是唯一的。kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2049.kafka的文件即可。当然the first offset就是0000000.kafka。

    springboot+kafka的集成可以参考这篇文章,讲的相对详细

    上述文章没有提到消息确认,有关kafka消息确认的内容可以查看这篇文章

    相关文章

      网友评论

          本文标题:kafka学习

          本文链接:https://www.haomeiwen.com/subject/hpdcgktx.html