Kafka学习笔记(二)—Kafka核心概念及术语

一、JMS协议

JMS:Java对于应用程序之间进行异步交互信息的API.
两种模式:

  1. Point-to-Point(P2P)(点对点)
P2P一对一消息传递,消费者需要主动从队列中获取,消息不会自动推送,且消息被消费后就会从队列中删除,所以不会有重复消费的场景。
  1. Publish/Subscribe(发布订阅)
Pub/Sub消息组播场景。发布订阅模式可以有多种不同的订阅者,临时订阅者只在主动监听才接受消息,而持久订阅者则监听主题的所有消息。

Kafka提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

二、Kafka拓扑结构

三、Kafka核心概念

Broker

Broker是Kafka集群的实例或者说服务单元。Broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。Broker为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。多个Broker构成Kafka集群,其中一个Broker会成为集群控制器(cluster controller)即leader,负责管理集群,包括分配分区到broker、监控broker故障等。leader宕机也会进行选举,保证集群高可用。一般Broker分布在不同机器上。

Producer

生产者,创建消息,默认情况下Kafka会将消息均衡分配到所有的分区。可以根据消息的key,使用路由策略,将相同key值的消息写入同一个分区。

Consumer

消费者,可以订阅一个或多个主题。在读取时,消费者会记录当前已经读取的消息位移(offset),一般将该位移称为消费位移。

Consumer Group

Kafka利用消费组进行并行消费,相同Group的consumer不会重复消费,它们之间互不影响。Kafka保证每个分区只会被同一个Group里面的一个Consumer所消费。

Topic

主题,Kafka的消息以主题来进行分类,主题类似数据库中的表。Producer向主题里面丢消息,Consumer从主题拉取消息,形成发布订阅。

Partiton

分区。消息存在主题的队列中,分区就是将主题队列分成小队列,每个小队列都是一个有序不变的消息序列。每个partition在存储层面是append log文件,任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量)或,offset为一个long型数字,它是唯一标记一条消息。分区的存在大大提升Kafka的吞吐量。

Replication

副本,Kafka的消息存放在副本中,副本分为leader和follower,可以在配置中指定副本数量,副本存放在不同的Broker进程中,每个分区可配置多个副本实现高可用

上图中:

3个Broker服务:Broker0,Broker1,Broker2
3个分区:partition0,partition1,partition2
2个副本:一个leader,一个follwer

同一个分区的不同副本放在不同的Broker上,同时每个分区的主副本均匀分布。

四、Kafka相关知识点:

1. Kafka没有做读写分离,消息的读写都在分区的leader Replica上完成,follower Replica只是作为数据冗余。

没做读写分离的原因:
1)Kafka中使用分区和副本,分区的leader副本均匀分布在不同的Broker上,这本身已经对流量做了负载,没必要再做读写分离。
2)Kafka中保存的是流数据,需要Offset,而数据库中的数据是静态的,如果对follower也进行读的话,可能会让系统变得更复杂。个人感觉后续版本也可以提供这个功能。

2. Kafka只保证分区下的消息有序,不能保证Topic下的消息有序

3. Partition和Consumer Group关系:

  • 一个partition只能被同组的同一个consumer消费
  • 同一组的一个Consumer可以消费不同的Partition
  • 消费效率最高的情况是partition和consumer数量相同
  • Consumer数量大于Partition数量时,会有Consumer闲置

3. Kafka基础概念总结图

注:本文图片均来自网上资料收集

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值