前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kafka之kafka入门(一)

kafka之kafka入门(一)

原创
作者头像
翰墨飘香
修改2023-10-31 20:25:31
3410
修改2023-10-31 20:25:31
举报
文章被收录于专栏:翰墨飘香翰墨飘香

一、 定义

Apache Kafka是一款开源的消息引擎系统

Apache Kafka是消息引擎系统,也是一个分布式流处理平台(Distributed Streaming Platform)

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

二、 消息队列

2.1 传统消息队列应用场景

异步处理

使用消息队列好处

解耦

可恢复性

缓冲

灵活性&峰值处理能力

2.2 消息队列的两种模式

Kafka同时支持这两种消息引擎模型

参考 https://cloud.tencent.com/developer/article/1558847

1、点对点模式(一对一)

消息生产者发送到Queue中,然后消息消费者从Queue中取出来且消费消息。消费后,消息不再存储。Queue支持多个消费者,但对于一个消息来说,只会有一个消费者可以消费

2、发布/订阅模式(一对多)

生产者将消息发布到topic上,同时会有多个消费着(订阅)消费该消息。发布到topic的消息会被所有订阅者消费

kafka是发布订阅模式中消费者主动拉去(另一种是队列推)

维护一个长轮训,询问是否有新消息

三、 Kafka基础术语

消息 record

Kafka是消息引擎,这里的消息就是指Kafka处理的主要对象。

主题 topic

发布订阅的对象是主题(Topic),主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。可以为每个业务、每个应用甚至是每类数据都创建专属的主题。

主题就好比数据库的表,或者文件系统里的文件夹。

分区 partition

一个有序不变的消息序列。每个主题下可以有多个分区。

主题可以被分为若干个分区,提高主题的负载均衡,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。要注意,一个主体一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。

生产者 producer

创建消息。向主题发布消息的客户端应用程序称为生产者(Producer),生产者程序通常持续不断地向一个或多个主题发送消息

消费者 consumer

读取消息 订阅这些主题消息的客户端应用程序就被称为消费者(Consumer),

和生产者类似,消费者也能够同时订阅多个主题的消息。我们把生产者和消费者统称为客户端(Clients)

消费者是消费群组的一部分,也就是说,会有一个或者多个消费者共同读取一个主题。一个分区只能被一个消费者组里面的消费者消费

消费者组 --提高消费能力

服务器 broker

一个独立的kafka服务器被称为broker。broker接收来自生产者的消息,为消息设置偏移量,并对消息进行持久化(提交消息到磁盘保存)。broker是集群的组成部分。每个集群都有一个broker充当了集群控制器的角色

生产者和消费者统称为客户端(Clients)broker就是服务器端

偏移量/消息位移 offset

表示分区中每条消息的位置信息,是一个单调递增且不变的值。

是一种元数据,它是一个不断递增的整数值,在创建消息是,kafka会把它添加到消息里。在给定的分区里,每个消息的偏移量都是唯一的。消费者把每个分区的最后读取的消息偏移量保存在ZK或者kafka上,如果消费者关闭或重启,它的读取状态不会丢失。

消费者位移 Consumer Offset

表征消费者消费进度,每个消费者都有自己的消费者位移。

消费者组 Consumer Group

多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐

副本:Replica。

Kafka中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。

重平衡 Rebalance

消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance是Kafka消费者端实现高可用的重要手段。

四、kafka消息层级架构

至此我们能够完整地串联起Kafka的三层消息架构:

第一层是主题层,每个主题可以配置M个分区,而每个分区又可以配置N个副本。

第二层是分区层,每个分区的N个副本中只能有一个充当领导者角色,对外提供服务;其他N-1个副本是追随者副本,只是提供数据冗余之用。

第三层是消息层,分区中包含若干条消息,每条消息的位移从0开始,依次递增。

最后,客户端程序只能与分区的领导者副本进行交互

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 定义
  • 二、 消息队列
    • 2.1 传统消息队列应用场景
      • 2.2 消息队列的两种模式
      • 三、 Kafka基础术语
        • 消息 record
          • 主题 topic
            • 分区 partition
              • 生产者 producer
                • 消费者 consumer
                  • 服务器 broker
                    • 偏移量/消息位移 offset
                    • 消费者位移 Consumer Offset
                    • 消费者组 Consumer Group
                    • 副本:Replica。
                    • 重平衡 Rebalance
                • 四、kafka消息层级架构
                相关产品与服务
                消息队列
                腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档