kafka学习

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消息确认的内容可以查看这篇文章

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

推荐阅读更多精彩内容

  • consumer只能读取到被commmit的数据isr的常见配置如下Server配置:replica.lag.ti...
    有章阅读 3,240评论 0 0
  • Kafka 官网: Kafka 主要设计目标如下: 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 T...
    灯火gg阅读 4,153评论 0 2
  • 1.什么是kafka kafka的目标是实现一个为处理实时数据提供一个统一、高吞吐、低延迟的平台。是分布式发布-订...
    酱油和醋阅读 30,107评论 2 9
  • 原文:https://blog.csdn.net/tangdong3415/article/details/534...
    凯睿看世界阅读 7,799评论 0 2
  • kafka概述 基于2.0 kafka架构图: 整个生成消费里分四块Producer、Borker,Consume...
    知而乐者阅读 3,034评论 0 0