第一章 认识Apache Kafka

第一章 认识Apache Kafka

1 消息引擎系统

kafka支持以下两种消息模型

1.1 消息队列

特点如下:

  • 基于队列提供消息传输服务
  • 该模型定义了queue,sender,receiver
  • 提供了一种点对点的消息传递方式,即发送者发送每条消息到队列的指定位置,接受者从指定位置获取消息
    一旦消息被consumed,就会从队列中移除该消息,每条消息由一个发送者生产出来,只能被一个消费者处理
  • 发送者和消费者是一对一的关系

1.2 发布/订阅

  • 有主题(topic)的概念
  • 发布者将消息放到指定的topic中,所有订阅了该topic的订阅者都能接收到消息
  • 发布者(publisher)/订阅者(subscriber)多对多关系

2 Kafka如果做到高吞吐,低延时

2.1生产端

Kafka每次写操作是把数据写入到操作系统的页缓存(page cache),然后由操作系统自行决定什么时候把
页缓存中的数据写回到磁盘上。
这样写的优势如下:

  • 操作系统的页缓存是在内存中分配的,所以消息写入的速度非常快。
  • Kafka不必直接与底层文件系统打交道,所有的I/O操作都交给操作系统来处理。
  • Kafka写入操作采用追加(append)的方式,避免了磁盘随机写操作。

2.2消费端

  • Kafka读取消息的时候会首先尝试从OS的页缓存中读取,如果命中,直接把页缓存发送到网络的Socket上。
    这个过程是利用Linux平台上的sendfile系统调用做到的,这种技术就是零拷贝技术。
  • Kafka 由于大量使用页缓存,故读取消息时大部分消息都很有可能还在页缓存中,可以直接命中缓存。
    (命中率高)

3.Kafka基本概念与术语

  • topic(主题) :代表了一类消息,也可以认为是消息被发送到的地方

  • partition(分区):每个topic由多个partition组成。每个topic都有一个专属的partition号。通常是从0开始的,用户对partition唯一能做的就是在消息序列的尾部追加写入消息。partiton上的每条消息都会被分配唯一一个的序列号,partition没有太多的实际业务含义,引入为了分散负载,提高整体性能的最大化。

  • oddest : partition下的每条消息都会被分配一个位移值。(消息写入的位移值)

在这里插入图片描述

  • leader/follower 只有leader对提供服务,follower只是被动的追随leader的状态,保持与leader的同步。follwer存在的位移价值就是充当leader的候补,一旦leader挂掉就会又一个follower被选举成为一个新的leader。

  • replica(副本) : kafka的备份日志, 它们的存在的目的是防止数据丢失,replica分为两类:
    leader relica 和 follwer replica,follower replica只是被动的向leader replica获取数据。

  • broker : kafka服务器

  • ISR : in-sync replica 与leader保持同步 的replica集合 。kafka为partition动态维护一个replica集合,只有在这个集合中的replica才能被选举为leade,只有这个集合中的所有replica都收到了同一条消息Kafka才会将这个消息置于“已提交”状态,即认为这条消息发送成功,为什么要由ISR:部分foller跟不上leader的节奏。当滞后一定的程度,kafka会把这些replica踢出ISR。当这些replica重新跟上leader进度又回加入到ISR中。

参考
《Apache Kafka 实战》胡夕

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值