kafka之基础知识

架构

  1. kafka集群架构图

    img

  2. Broker: 一个kafka服务实例, 一个或者多个Broker组成一个kafka集群

  3. Producer: 生产者,即消息发送方,负责创建并发送消息到Broker中

  4. Consumer:消费者,即消息接收方,负责接收消息并做业务逻辑处理

主题与分区

  1. kafka中消息以topic(主题)为单位进行归类,Producer负责将消息发送到特定的Topic,Consumer订阅topic并进行消费。
  2. topic是一个逻辑概念,一个topic可以分为多个分区,一个分区只属于一个topic。分区在物理上是一个可追加的日志文件,消息在被追加到分区日志文件时都会分配一个特定的offset(偏移量),offset时消息在分区中的唯一标识,offset不能跨域分区,即kafka只保证分区有序而不保证主题有序,除非topic只有一个分区
  3. 分区可以分布在不同的broker上,即一个topic可以横跨多个broker。kafka通过增加分区的数量可以实现水平扩展。

kafka概要设计

  1. kafka在设计之初就考虑4个方面的问题

    • 吞吐量/延时

    • 消息持久化:主要就是实现灵活的消息处理,比如重新消费消息(message replay)

    • 负载均衡和故障转移

    • 伸缩性

吞吐量和延迟

  1. 对于kafka而言,吞吐量就是每秒处理的消息或者每秒能够处理的字节数。延时表示客户端发起请求到服务端处理请求并响应给客户端的时间。
  2. 如果kafka处理一条消息需要2ms,则吞吐量每秒不会超过500条消息/秒(所有消息延迟2ms,吞吐量500条/s),但是如果采用批处理的方式,一次发送一批消息,即所有消息都延迟假设10ms,那么延迟就增加了4倍,假设8ms内总共累积1000条消息,那么系统的吞吐量就是100000条消息/秒(所有消息延迟8ms,吞吐量100000条/s)。
  3. kafka如何实现高吞吐低延时?
    • kafka写入操作采用追加写入(顺序写),避免磁盘随机写操作(磁盘顺序读写操作非常快)
    • kafka写入操作是写入到操作系统的Page Cache中,由操作系统定时刷新到磁盘中
    • kafka读取消息首先尝试从Page Cache中读取,如果命中则直接从Page Cache发送到Socket Buffer,不需要经过应用程序Buffer(Zero Copy)。

版本

  1. 版本格式,major表示主版本号,minor是次版本号,patch表示对次版本的修订次数或补丁包数

    0.major.minor.patch
    
    例如0.10.2.1 主版本号是0.10,次版本号是2,次版本的patch数是1
    
  2. 发行编译版本,前面的2.10表示的是scala版本

    kafka_2.10-0.10.2.1.tgz (asc, md5)
    kafka_2.11-0.10.2.1.tgz (asc, md5)
    kafka_2.12-0.10.2.1.tgz (asc, md5)
    
  3. Confluent Kafka与Apache Kafka

    • 在 2014年 JayKreps、 JunRao和 NehaNarkhede离开 Linkedln公司创办了Confluent.io
    • Confluent基于 Apache Kafka提供了Confluent Platform,提供了一些 Apache Kafka 没有的组件和功能,比如完善的跨数据中心数据备份以及集群监控解决方案等。
    • Confluent 分为开源版本和企业版本。在企业版本中它提供了对于底层 Kafka 集群完整的可视化监控解决方案,以及一些辅助系统帮助管理集群。 Confluent 的开源版本与Apache Kafka 并无太大的区别,

合适的版本

  1. 如果需要使用流处理组建(Kafka Stream),必须使用1.10.0.0或者之后的版本,最好使用最新的版。
  2. 如果需要启用Kafka Security,至少使用0.9.0.0或者之后的版本,最好使用0.10.0.1之后的版本
  3. 如果仅仅将kafka用于消息引擎或者存储服务,只需要使用0.8.x之后的版本即可
  4. 如果是与第三方开源组件集成,需要注意第三方开源组件自身集成的kafka客户端版本
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值