关于kafka

1、broker的概念

    kafka中的broker类似于k8s中pod的概念,是kafka server的最小单位,这种分布式集群架构的应用中往往会忽略物理主机的概念,取而代之的就是集群的逻辑主机,在逻辑上可以把他们视作一台机器。

2、topic的概念

    kafka消息处理以topic为单位,即消息的生产者和消费者原则上只需要协调一个消息主题,kafka就会负责将消息传达到对方。topic是一个逻辑上的概念,用户可以指定topic的副本数,以满足并发访问的需求。一般来说同一个topic的副本会被调度到不同的broker上,以满足负载均衡和容灾的需求。

3、partition的概念

    partition是kafka中一个重要的概念,在一个topic中,又分为多个分区即partition。在逻辑上一个partition对应一个时序保证队列,保证消费者从一个partition中读取的消息是有序的,而不同的partition的消息kafka不保证消费的顺序,这进一步增加了消费者读取消息的并发能力,同时,生产者可以在push消息的时候可以指定push到那个partition,也就是说,消息的时序关系由生产者这边保证;在物理上,一个partition对应一个文件夹。

topic的副本使得不同的消费者消费同一个topic并发进行,partition的副本使得同一个消费者消费时序无关的消息时可以并发进行。

    同时在多个partition副本中,会选举出一个leader,leader负责写入生产者产生的消息,然后将消息副本发送给followers。并且不同partition的leader通常会被均匀分布到多个broker上,生产者写数据的负载均衡。

4、segment的概念

    segment的作用是将一个partition切分,以适应硬盘存储的特点,如果一个文件过大可能会跨越磁盘扇区进行存储,二两个扇区存储一个segment这可能会导致多次的磁盘IO增大开销,不利于kafka利用磁盘连续读取的特点。故一个segment大小最好适应一个磁盘扇区的大小。segment除了数据文件还维护了一个索引文件,记录了每个消息的偏移量。

磁盘连续读取的速度高于内存的随机读取,这是kafka高效的原理之一。

5、consumer的group概念

    同一个group的消费者监听同一个topic的消息,一个group的消费者数量与一个topic下partition的数量是对应的,一个topic中的消息只会被同group中的一个消费者消费,这种应用场景与微服务的弹缩不谋而合,微服务弹缩作为同一个group的消费者只会消费一个消息一次,这在消费者层面上进一步实现了消息处理的并发性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值