kafka介绍

x33g5p2x  于2021-08-23 转载在 Java  
字(1.4k)|赞(0)|评价(0)|浏览(132)

一 kafka介绍

1.1 kafka 模型介绍

Kafka 是一个开源的,轻量级的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台。

相比于其它消息系统,其有以下优点

  • 支持发布订阅模式的消息引擎系统。
  • 储存数据流时提供容错机制。
  • 对于数据的处理响应及时。

kafka的生产者消费模型如下,生产者生产消息发送至消息引擎,消费者从消息引擎中获取消息;

1.2 kafka 设计理念

  • 高吞吐、低延迟:kafka将消息写入操作系统页缓存而不直接操作磁盘io, 每秒可以处理几十万条消息,最低延迟几毫秒。
  • 高伸缩性: 每个主题(topic) 包含多个分区(partition),主题中的分区可以分布在不同的主机(broker)中。
  • 负载均衡:kafka 使用 leader选举算法实现了负载均衡,极大提高了运行效率;
  • 故障转移:kafka使用zookeeper 作为会话机制,搭建集群后kafka的容错机制极大提高,允许某个节点宕机而不影响其它节点。

1.3 Kafka 的使用场景

  • 行为跟踪:Kafka 可以用来跟踪用户行为,比如我们经常回去京东购物,当你浏览购物的时候,你的浏览信息,你的搜索指数,你的购物爱好都会作为一个个消息传递给 Kafka ,这样就可以生成报告,可以做智能推荐,购买喜好等。
  • 传递消息:Kafka 一个基本用途是传递消息,可以当作消息总线或者消息代理;
  • 日志收集:企业的应用非常多,每个应用都会产生日志,kafka可以当作日志收集汇总方案,方便日志管理!
  • 流式处理:流式处理是kafka Stream,kafka可以将接收的数据流提供给其它框架进行计算处理等!
  • 限流削峰:Kafka 多用于互联网领域某一时刻请求特别多的情况下,可以把请求写入Kafka 中,避免直接请求后端程序导致服务崩溃。

1.4 kafka基本术语

  • 消息:Kafka 中的数据单元被称为消息,也被称为记录;消息中有三要素,key为消息键,用作分区使用;value,消息体用于保存消息;timestamp,时间戳,表示消息发送的时间;
  • 主题:消息的种类称为 主题(Topic),一个主题代表了一类消息,经常使用topic来区分不同的业务,每个业务一个topic;
  • 分区:主题可以被分为若干个分区(partition),kafka 是 一个 topic-partition-message 的三级结构;分区存在的意义就是提高kafka的吞吐量;
  • 副本:副本的目的是实现消息的可靠性,将f分区的数据复制一份到replica, 即防止消息丢失!Kafka 定义了两类副本:领导者副本(Leader Replica) 和 追随者副本(Follower Replica),前者对外提供服务,后者只是被动跟随Leader,相当于候补队员;
  • broker: 一个独立的 Kafka 服务器就被称为 broker
  • ISR: Kafka在Zookeeper上针对每个Topic都维护了一个ISR(in-sync replica---已同步的副本)的集合,集合的增减Kafka都会更新该记录。如果某分区的Leader不可用,Kafka就从ISR集合中选择一个副本作为新的Leader。这样就可以容忍的失败数比较高,假如某Topic有N+1个副本,则可以容忍N个服务器不可用。

本套教程

相关文章

热门文章

更多