kafka的基本概念和基础架构

1.kafka的概念

kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。

2.kafka消息队列的两种模式

1.点对点模式(一对一,消费者主动拉取数据,消息接到后消息清除)

2.发布/订阅模式(一对多又叫观察者模式,消费者消费数据之后不会清除消息但有一个过期时间,到了时间就删除,但ActiviMQ的话 只要消费完然后没有删除的话就一直在,像对数据处理有一定的严格要求就可以使用)

但发布/订阅模式有两个消费模式:

1.一种是消费者主动去队列里面进行消费,有一个缺点就是:每次都要轮询的去访问队列,但队列中没有消息。这就很浪费资源

2.还有就是队列给消费者主动推送的形式  这就解决了消费者不需要每次轮询的去访问队列,减少资源损耗。

3.kafka的好处

(1)高吞吐量、低延迟
        Kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒。每个 topic (主题)可以分多个 Partition(分区),Consumer Group(消费者) 对 Partition 进行消费操作,提高负载均衡能力和消费能力。

(2)可扩展性
        kafka 集群支持热扩展。

(3)持久性、可靠性
        消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。

(4)容错性
        允许集群中节点失败(多副本情况下,若副本数量为 n,则允许 n-1 个节点失败)。

(5)高并发
        支持数千个客户端同时读写。

4.kafka的架构理解

1.Producer(生产者)

生产者就是往同一个topic(主题)里面去发送消息的

2.Topic(主题)

Topic,是一个逻辑概念,不是一个具体的事物,例如数据库表,在10个数据库中,我们都可以把这张表存放在不同的数据库中,同理,topic就是把消息分给不同的分区

3.Partition

一个Topic可以有多个分区,例如我们的Topic主题,然后每个分区会根据topic的副本数量创建分区副本,

像我们topicA 有两个分区,每个分区就有2个副本,分别为主本(learder)和副本(follower)

主本(learder):主要负责读写操作

从本(follower):负责主副本的备份,当learder出现宕机的时候参与投票选举为新的learder

当learder出现问题的时候,我们需要处理的数据就还是在,实现了高可用

4.Consumer(消费者)

  1. 一个消费者consumer都从属于一个(消费组)consumer group,消费者组可以有多个消费者,也可以单个
  2. 某一个分区只能被同一个消费者组里面的消费者进行消费,但Partition 1可以被Consumer 1Consumer 4进行消费,因为不在一个消费者组中
  3. 消费者组里面的消费者的个数跟分区数是相等的最好,节约资源,例如consumer2就是多余的
  4. 消费者只需要维护一个offset值,这个值是记录消费的偏移量的,就算这个消费者消费完,这条数据也不会消失,不会影响其他消费者消费。如果消费者出现宕机,恢复之后可根据偏移量继续消费

5.Zookeeper

1.关于分区(broker)注册

Broker数据是分散在不同的服务器,需要进行集中管理

每个分区进行启动时,都会在zookeeper中注册

2.维护分区和分区副本直接的关系,消费者去读取的时候,去zk查询对应的节点,就知道从那个broker读数据了。

3.生产者负载均衡

每个分区启动时,就会将分区注册到zk中,生产者通过该节点的变化来动态地感知到分区服务器列表的变更,这样实现了动态的负载均衡

4.消费者

问题:如果consumer消费过程中出现宕机等故障,consumer 恢复后,需要从故障前的位置的继续消费

在0.9之前,consumer 默认将 offset 保存在 Zookeeper 中在0.9版本之后,consumer 默认将 offset 保存在 Kafka 一个内置的 topic 中,该 topic 为__consumer_offsets

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值