栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

不一样的Kafka系列#kafka初识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

不一样的Kafka系列#kafka初识

Kafka核心的API:

  • The Producer API 允许一个应用程序发布一串流式的数据到一个或者多个Kafka topic。
  • The Consumer API 允许一个应用程序订阅一个或多个 topic ,并且对发布给他们的流式数据进行处理。
  • The Streams API 允许一个应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。
  • The Connector API 允许构建并运行可重用的生产者或者消费者,将Kafka topics连接到已存在的应用程序或者数据系统。比如,连接到一个关系型数据库,捕捉表(table)的所有变更内容。

        每一条消息被发送到broker 之前,会根据分区规则选择存储到哪个具体的分区。如果分区 规则设定得合理,所有的消息都可以均匀地分配到不同的分区中。如果一个主题只对应一个文 件,那么这个文件所在的机器I/O 将会成为这个主题的性能瓶颈,而分区解决了这个问题。在 创建主题的时候可以通过指定的参数来设置分区的个数,当然也可以在主题创建完成之后去修 改分区的数量,通过增加分区的数量可以实现水平扩展。

         Kafka 为分区引入了多副本( Replica ) 机制, 通过增加副本数量可以提升容灾能力。同一 分区的不同副本中保存的是相同的消息(在同一时刻,副本之间并非完全一样),自1J 本之间是 “ 一主多从”的关系,其中leader 副本负责处理读写请求, follower 副本只负责与leader 副本的 消息同步。副本处于不同的broker 中,当leader 副本出现故障时,从fo llower 副本中重新选举 新的leader 副本对外提供服务。Kafka 通过多副本机制实现了故障的自动转移,当Kafka 集群中 某个broker 失效时仍然能保证服务可用。

        分区中的所有副本统称为AR ( Assigned Replicas ) 。所有与leader 副本保持一定程度同步 的副本(包括leader 副本在内〕组成ISR On-Sync Replicas ) , ISR 集合是AR 集合中的一个子 集。消息会先发送到lead巳r 副本,然后follower 副本才能从leader 副本中拉取消息进行同步, 同步期间内follower 副本相对于leader 副本而言会有一定程度的滞后。前面所说的“ 一定程度 的同步”是指可忍受的滞后范围,这个范围可以通过参数进行配置。与leader 副本同步滞后过 多的副本(不包括leader 副本)组成OSR ( Out-of-Sync Replicas ),由此可见, AR=ISR+OSR 。 在正常情况下, 所有的follower 副本都应该与leader 副本保持一定程度的同步,即AR=ISR, OSR 集合为空。        

         leader 副本负责维护和跟踪ISR 集合中所有follower 副本的滞后状态, 当follower 副本落后 太多或失效时, leader 副本会把它从ISR 集合中剔除。如果OSR 集合中有follower 副本“追上’p 了leader 副本,那么leader 副本会把它从OSR 集合转移至ISR 集合。默认情况下, 当leader 副 本发生故障时,只有在ISR 集合中的副本才有资格被选举为新的leader, 而在OSR 集合中的副 本则没有任何机会(不过这个原则也可以通过修改相应的参数配置来改变) 。 ISR 与HW 和LEO 也有紧密的关系。HW 是High Watermark 的缩写,俗称高水位,它标识 了一个特定的消息偏移量( offset ),消费者只能拉取到这个offset 之前的消息。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/270664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号