第二章 Kafka专题之基础概念介绍(典型集群架构为例)

1、kafka基本介绍

  • Kafka:高吞吐量的分布式发布订阅消息系统

(1)kafka是一个消息中间件(一个对消息进行统一管理的中间件)
(2)kafka分布式集群,每台Kafka服务器内部维护着一个queue,MeaasgeQueue是一个共享资源(producer,consumer)
(3)kafka底层用scala实现的,每秒能够处理百万级的消息生产和消费

2、Kafka基本概念

在这里插入图片描述
(1)Broker

  • 定位:kafka集群的服务端程序,一个MQ节点就是一个1Broker
  • 作用:存储Topic数据

(2)Producer生产者

  • 定位:创建消息Message,然后发布到MQ中
  • 作用:将消息发送到Kafka集群中

(3)Consumer

  • 作用:消费队列中的消息

(4)ConsumerGroup

  • 定位:消费者组
  • 作用:同个Topic,广播发送给不同的group,一个group自由一个Consumer1可以消费此消息

(5)Topic

  • 定位:消息主题
  • 作用:为发送到kafka集群中的消息进行分类

(6)Partition

  • 定位:将每个Topic中的数据分割为一个或多个partition
  • 作用:消息在集群中的物理存储

(7)Replication副本

  • 定位:Partition的备份
  • 作用:当其他broker挂掉之后,系统可以用副本提供服务

(8)ReplicationLeader

  • 定位:partition数据交互
  • 作用:leader负责的Partition和生产者消费者交互

(9)ReplicationFollower

  • 定位:数据备份
  • 作用:从ReplicationLeader进行同步,主从同步采用pull

(10)offset

  • 定位:Consumer对分区的消息消费的定位
  • 作用:kafka把offset保存在消费端的消费者组

3、典型集群架构

(1)集群架构

  • 一个典型的kafka集群中包含
    若干producer(可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等),
    若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),
    若干consumer group
    ④一个Zookeeper集群。

  • 运行方式:Kafka通过Zookeeper管理集群配置,选举leader,
    ①在consumer group发生变化时进行rebalance。
    ②producer使用push模式将消息发布到broker,consumer使用pull模式从broker订阅并消费消息。

在这里插入图片描述

  • Producer - 消息生产者
    ①在发送一条消息时,可以指定这条消息的 key,Producer 根据这个 key 和 Partition 机制来判断应该将这条消息发送到哪个 Parition。
    key 相同的消息会被发送并存储到同一个 partition 里,而且 key 的序号正好和 Partition 序号相同。

  • Broker - 服务器
    Kafka集群包含一个或多个服务器,这种服务器被称为broker

  • Consumer Group
    ①使用 Consumer high level API 时,同一Topic的一条消息只能被同一个 Consumer Group 内的一个 Consumer 消费,但多个 Consumer Group 可同时消费这一消息。
    可以使用 Storm 这种实时流处理系统对消息进行实时在线处理,同时使用 Hadoop 这种批处理系统进行离线处理,还可以同时将数据实时备份到另一个数据中心,只需要保证这三个操作所使用的 Consumer 属于不同的 Consumer Group 即可

在这里插入图片描述

  • Topic - 逻辑分主题,用来区分具体业务
    ①Kafka数据写入操作的基本单元,每条消息属于且仅属于一个Topic
    Producer发布数据时,必须指定将该消息发布到哪个Topic
    Consumer订阅消息时,也必须指定订阅哪个Topic的信息
    一个Topic包含一个或多个Partition,建Topic的时候可以手动指定Partition个数
举例:创建 topic1 和 topic2 两个 topic,且分别有 13 个和 19 个分区,
则整个集群上会相应会生成共 32 个文件夹
(本文所用集群共 8 个节点,此处 topic1 和 topic2 replication-factor 均为 1)。
  • Partition - 包含一一对应的.index文件和.log文件
    每个Partition只会在一个Broker上,物理上每个Partition对应的是一个文件夹,默认采用哈希分区;
    partition目录名是topic的名称加上一个序号
    Partition包含多个Segment,每个Segment对应一个文件,Segment可以手动指定大小,当Segment达到阈值时,将不再写数据,每个Segment都是大小相同的

  • Segment - 本质上为.log文件和.index文件
    ①**.log文件多个不可变的记录组成,记录只会被append到Segment中,不会被单独删除或者修改,每个Segment中的Message数量不一定相等
    .index文件记录了元数据信息**,指向对应的数据文件中Message的物理偏移量

  • Message - 本质上是消息,包含三个属性
    offset对应类型Long,可认为是message在partition中的id
    Messagesize对应类型是int
    data是message的具体内容

  • Offset - 本质上为消息在log文件中的位置
    ①每条消息在log文件中的位置,是一个单调递增且不变的

2.4、Kafka应用用场景

(1)指标分析

kafka 通常用于操作监控数据 , 这设计聚合来自分布式应用程序和统计信息 , 以产生操作的数据集中反馈

(2)日志聚合解决方法

kafka 可用于跨组织从多个服务器收集日志 , 并使他们一标准的合适提供给多个服务器

(3)流式处理

流式的处理框架 (spark, storm , flink) 从主题中读取数据 , 对其进行处理 , 并将处理后的结果数据写入新的主题, 供用户和应用程序使用 , kafka 的强耐久性在流处理的上下文中也非常的有用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随缘清风殇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值