Kafka技术专题之总体原理和分析介绍(上)

背景介绍

发布订阅模式

点对点传递模式

该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。

发布者将消息投递到Topic中,数据在持久化在Topic中,只有订阅了相应Topic的消费者才可以消费这个消息,一个Topic可以允许多个消费者订阅,一个消费者可以订阅多个Topic,所以Topic可以被所有订阅者消费,而被消费掉后不会立即删除,会保留历史消息。

kafka用的就是发布订阅模式:

kafka就是一个流处理平台,是一个高效和实时具有发布订阅模式、分布式的、多副本的消息系统,kafka具有横行扩展,高容错,高性能的特点。

kafka的特性

高容错:多分区多副本增强了容错和可扩展性,多订阅者支持将消息广播到多个订阅者,支持zookeeper调度。

高性能、高吞吐量:kafka吞吐量非常大,每秒可以处理和产生几十万条消息,延迟能控制在毫秒级,超高性能特性,使kafka能够很好的应对高并发的应用场景。

持久性和扩展性数据可持久化的特点使kafka有别于其他的消息队列,多副本和基于组(consumer group)的消费使得kafka拥有不错的容错性,基于组的消费模式使得kafka能很好的支持水平扩展。

topic、partition、offset、comsumer group、replication之间的关系傻傻分不清:

kafka的消息以分门别类的形式,分成了很多个Topic,每个Topic又分成了很多个partition,而topic只是一个逻辑概念消息真正存储在这些物理层面的partition中,partition又可均匀的分布到集群的各个broker(kafka实例)中,生产或者消费的时候会被路由到相应的partition。

partition中的消息会被标识上递增系列号,代表着先后进入partition中存储的顺序,这个序列号就是offset,消费者通过offset指定从哪里开始进行消费,生产者生成消息时,消息会通过应用的路由策略将数据加到partition的末尾,消息被消费后不会马上删除,而是记录在日志中保存一定的期限,默认是7天。

消费者可以通过重置offset来重新消费。

高吞吐性

topic可能会非常大,所以topic可以通过partition将消息分成几个分区,然后将partition均匀放置到不同的broker中,这样是为了实现Kafka的broker端和消费端的负载均衡,同时提高kafka的吞吐量,不同的partition的数据都不相同。

高可用性

partition又被备份为多个replication,同时replication也会被均匀分布到不同的broker中,第一个启动并在zookeeper注册的broker将被选举为kafka controller,所有的Topic中第一个启动的partition将被kafka controller授权为leader

其他的replication都会成为follower,leader负责写和读,消费者和生产者的读写只会找leader,follower只负责从leader pull数据,通过ISR实现数据同步,当leader故障时kafka controller就会选择一个follower当leader,这种多分区多副本的机制让kafka拥有了容错性、横行扩展性和负载性

  • 通常kafka的消费者是以分组comsumer group的形式:一个组的消费者的数量要小于等于topic中的partition的数量(不然就会有消费者是处于空闲状态),不允许一个partition被同一个组的多个comsumer消费;

  • 分组可以订阅多个topic,topic内的partition可以给多个组消费,但是一个组内的只能由一个consumer消费同一个topic的同一个partition,也就是说在一个组内partition只能对应一个consumer,而一个consumer可以对应多个partition;

  • partition可以对应多个组,topic可以对应多个组,partition可以把同一条消息发送到不同的分组去,而consumer可以消费多个partition,一个partition可以被多个小组消费但是只能给各个小组内的一个consumer消费,组内不允许多个consumer消费同一个partition。

<
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值