kafka介绍

  • kafka简介

    kafka是一个流平台,在这个平台上可以发布和订阅数据流,并将它们保存起来进行处理。它有点像消息中间件,但是它和传统的消息中间件有着很大得差异,消息系统只会传递数据,而ka'f'ka的流处理能力可以让我们高效的处理数据。它可以存储和持续处理大型的数据流。

 

  • 基本概念

  • 消息和批次

    消息就不用多说。

    批次是一组消息,这些消息属于同一主题和分区。为了提高效率,消息会分批写入kafka,但是同一批次里包含的消息越多,单个消息传输的时间就越久,这个需要根据实际的业务去权衡。

  • 主题和分区

    kafka里的消息用主题进行分类,主题下有若干个分区,有新消息,消息会追加的形式写入分区。

    由于主题会有多个分区,所以在整个主题范围内,是无法保证消息顺序的。分区可以分布在不同的服务器上,实现数据冗余和伸缩。

  • 偏移量、消费者群组

    消费者可以订阅一个或多个主题。通过检查偏移量来区分读取哪个消息。偏移量是一个递增的数据值,消费者每读取一条数据,偏移量就会加1。

    订阅同一主题的消费者可以形成一个群组,群组保证了每个分区只能被一个消费者订阅,同一群组下一个分区只能有一个消费者,一个消费者可以使用多个分区。

  • broker和集群

    一台独立的服务器就是一个broker,多个Broker组成一个集群。

    在集群里,一个分区属于一个broker,这个broker属于首领,分区可以被分配给多个broker,这时候就会分区复制。分区复制提供了消息的冗余,一旦首领分区宕机,那个其他的broker可以接管领导权供消费者和胜出者使用。

    集群可以负载均衡和高可用性。

 

  • 优点

  • 天生消息持久化,不需要额外配置
  • 高伸缩性。对于集群的搭建以及伸缩非常方便。
  • 高性能。可以轻松处理巨大的数据流。性能高的原因有批量发送、压缩数据、复制拷贝等方面。

 

  • 常见使用场景

  • 追踪用户使用详情,例如页面访问次数、点击次数、时间等消息。
  • 作为消息中间件传递消息
  • 保存日志。例如保存数据库的更新日志,实现数据库的容灾备份等。
  • 流处理

kafka性能高体现

  • 零拷贝
  • 分区

    每个主题都包含一个或多个分区,首领分区会尽量均衡的分布在不同的broker中,从而利用集群优势

  • 批量发送
  • 数据压缩
  • 顺序读写
  • 高效的序列化方式
  • ISR实现可用性与数据一致性的动态平衡

  • 支持多Disk Drive。Broker的log.dirs配置项,允许配置多个文件夹。如果机器上有多个Disk Drive,可将不同的Disk挂载到不同的目录,然后将这些目录都配置到log.dirs里。Kafka会尽可能将不同的Partition分配到不同的目录,也即不同的Disk上,从而充分利用了多Disk的优势。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值