Kafka学习教程(一)

Kafka介绍

kafka是一个分布式,分区,多副本,基于zookeeper协调的分布式日志心态,常见的可以用于web/nginx日志,访问日志,消息服务等等。

主要应用场景是:日志收集系统和消息系统

kafka的设计目标

  1. 以时间复杂度O(1)的方式提供消息持久化能力
  2. 高吞吐率
  3. 支持kafka server间的消息分区,及分布消费,保证每一个parttion内的消息顺序传输
  4. 支持离线数据处理
  5. 支持在线扩展

消息传递模式有:点多点传递,发布-订阅模式,kafka是发布订阅模式

对于现行中间件,消息分推拉两种模式,kafka只有现行的拉取,没有推送,可以通过轮询实现销售的推送

  1. kafka在一个或多个跨越多个数据中心的服务器上作为集群运行。
  2. kafka集群将记录流存储在成为主题的分类中
  3. 每一个记录由一个键,一个值和一个时间戳组成

kafka具有是个核心API

  1. ProducerAPI 允许应用程序将记录发布到一个会多个主题

         生成者创建消息

         该角色将消息发布到kafka的topic中,broker接收生产者发送的消息后,broker将消息追加到当前用于追加数据的segment文件中。一个消息会发布到一个特定的主题上,默认情况下,轮询把消息分布到主题所有分区上,在某些情况下,生成者把消息直接写到指定分区中,通常需要消息键和分区器来实现。分区器为键生成一个散列值。

      2.Consumer API 应用程序订阅主题并处理记录流

          消费者读取消息

          消费者订阅一个或多个主题,并按照消息生成的顺序读取它们。

         消息者通过检查的偏移量来分区已经读取过的消息,偏移量是一个暑假,它是一个不断递增的整数值。在创建消息时,kafka会把它添加到消息里,在给定的分区里,每一个消息的偏移量都是唯一的。消费者把每个分区最后读取的消息偏移量保存在zookeeper上,如果消费者关闭或重启,它的读取状态不会丢失。

      3.Streams API 允许应用程序充当流处理器,使用一个或多个主题的输入流,并生成一个多个主题输出流

 

      4.Connector API 构建和允许将kafka主题连接到现有应用程序或数据系统的柯重阳生产者或使用者

Kafka优势

  1. 高吞吐量,单机每秒处理几十上百万的消息量
  2. 高性能,单节点支持上千个客户端,并保持零停机,和零数据丢失。
  3. 持久化数据存储 零拷贝,顺序读,顺序写 利用linux的页缓存
  4. 分布式系统,易于向外扩展
  5. 可靠性
  6. 客户端维护状态
  7. 支持online 和offline场景
  8. 支持多种客户端语言 

kafka应用场景

  • 日志收集
  • 消息系统
  • 用户活动追踪
  • 运营指标
  • 流式处理

kafka架构基本架构

kafka安装

 

kafka开发

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值