Kafka的基本概念和架构

这篇具有很好参考价值的文章主要介绍了Kafka的基本概念和架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Kafka的概述

1.1 定义

Kafka是一个开源的分布式事件流平台 (Event Streaming Platform),被广泛用于高性能数据管道、流分

析、数据集成和关键任务应用。

1.2 各消息队列的比较

目前比 较常见的消息队列产品主要有KafkaRabbitMQRocketMQ 等。

在大数据场景主要采用Kafka作为消息队列。在JavaEE开发中主要采用RabbitMQRocketMQ

几种常见MQ对比:

RabbitMQ RocketMQ Kafka
公司/社区 Rabbit 阿里 Apache
开发语言 Erlang Java Scala&Java
协议支持 AMQP,XMPP,SMTP,STOMP 自定义协议 自定义协议
可用性
单机吞吐量 一般 非常高
消息延迟 微秒级 毫秒级 毫秒以内
消息可靠性 一般

追求可用性:KafkaRocketMQRabbitMQ

追求可靠性:RabbitMQRocketMQ

追求吞吐能力:RocketMQKafka

追求消息低延迟:RabbitMQKafka

1.3 传统消息队列的应用场景

传统的消息队列的主要应用场景包括:缓存/流量消峰、解耦和异步通信。

1)缓存/流量消峰

比如双十一的并发量达到了2亿每秒,但是业务系统的处理速度只有1000万每秒。

请求的数量远远超过了系统的承受能力,此时系统就会宕机,奔溃。

如果使用消息队列去接收这些请求,把它们都缓存在消息队列中,系统只需要按自己的处理速度去消费数据即可。

只是要多花点时间,但是保障了整个业务系统的可用性。
Kafka的基本概念和架构

有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

2)解耦

不管提供者端和消费者端如何变动,都不需要有多套实现。只需要和消息队列进行交互即可。

大大降低了系统的耦合度和开发成本。
Kafka的基本概念和架构

允许开发中独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

3)异步通信

比如一个充值流程,充值是最为重要的任务,必须保证立即执行,而发送短信相对来说不是那么重要的任务。

这样一来我们无需顺序执行充值和发送短信两个流程去增大系统的压力。

可以在充值成功之后把发短信的请求写入消息队列当中,让消费服务慢慢去消费这些请求。

即使消息丢失了,没有成功发送短信,也不会对核心业务(充值)造成影响,更不会造成系统异常。

Kafka的基本概念和架构

允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。

二、Kafka的两种发布模式

2.1 点对点模式

消费者主动拉取数据,消息收到后清除消息。
Kafka的基本概念和架构

2.2 发布/订阅模式

可以有多个topic主题(浏览、点赞、收藏、评论等)

消费者消费数据之后,不删除数据,其它消费者还可以继续消费,至于什么时候删除数据,后面会处理。

因此每个消费者是相互独立的,都可以消费到数据。

由于这种模式更能适应更复杂的业务环境,所以多数情况都是使用发布订阅模式。

Kafka的基本概念和架构

三、Kafka的基础架构

3.1 基础架构

Kafka的基本概念和架构
1.为方便扩展,并提高吞吐量,一个topic分为多个partition(分区),每个分区存储在不同的Kafka节点上。

分区的好处在于,如果一个Broker节点,只能存1T数据,但是此时数据量有2T,此时就可以使用分区,把数据

分别存储到两台Broker节点上。

2.配合分区的设计,提出消费者组的概念,组内每个消费者并行消费 。

3.为提高可用性,为每个partition增加若干副本,并且只有一个副本是Leader、其它都是Follower,消费者

只会消费Leader上的数据。如果Leader挂了,会有Follower当选为新的Leader

4.ZK中记录谁是leader,但是Kafka2.8.0以后也可以配置不采用ZK,并且未来不使用ZK也是趋势,因为它已

经成为了Kafka的一道瓶颈。文章来源地址https://www.toymoban.com/news/detail-428934.html

3.2 角色说明

  • Producer:消息生产者,就是向 Kafka broker 发消息的客户端。
  • Consumer:消息消费者,向 Kafka broker 取消息的客户端。
  • Consumer GroupCG):消费者组,由多个 consumer 组成。消费者组内每个消 费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不 影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • Broker:一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic
  • Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic。
  • Partition:分区。为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服 务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。
  • Replica:副本。一个 topic 的每个分区都有若干个副本,由一个 Leader 和若干个 Follower组成。
  • Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数 据的对象都是 Leader
    列。
  • Replica:副本。一个 topic 的每个分区都有若干个副本,由一个 Leader 和若干个 Follower组成。
  • Leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数 据的对象都是 Leader
  • Follower:每个分区多个副本中的“从”节点,实时从 Leader 中同步数据,保持和 Leader 数据的同步。Leader 发生故障时,某个 Follower 会成为新的 Leader

到了这里,关于Kafka的基本概念和架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka--kafka的基本概念-副本概念replica

    Broker 表示实际的物理机器节点 Broker1中的绿色P1表示主分片Broker2中的蓝色P1表示副本分片,其余类似,就是主从的概念,如果一个Broker挂掉了,还有其它的节点来保证数据的完整性 P可以看做分区 同一时间点,绿色P1 和紫色P1 不会完全一致,存在一个同步的过程 绿色部分处理

    2024年02月12日
    浏览(39)
  • 【Kafka】Kafka介绍、架构和概念

    Kafka是是一个优秀的分布式消息中间件,关于常用的消息中间件对比可参考文章:消息中间件概述。 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、

    2024年01月22日
    浏览(47)
  • Kafka基础架构与核心概念

    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。架构特点是分区、多副本、多生产者、多订阅者,性能特点主要是高吞吐,低时延。 Kafka主要设计特征如下

    2024年02月15日
    浏览(48)
  • 大数据 - Kafka系列《一》- Kafka基本概念

    目录 🐶1.1 什么是kafka 🐶1.2 Kafka可以用来做什么 🐶1.3 kafka的特点 🥙1. 高吞吐量、低延迟 🥙2. 可扩展性 🥙3. 持久性、可靠性 🥙4. 容错性 🥙5. 高并发 🐶1.4 Kafka的基本架构 1. 🥙Producer:生产者 2. 🥙Broker:中间组件,存储数据 Topic:主题。类似于表的概念 partition:分区。

    2024年01月20日
    浏览(39)
  • 【Kafka】基本概念

    这个流派通常有⼀台服务器作为 Broker,所有的消息都通过它中转。⽣产者把消息发送给它就结束⾃⼰的任务了,Broker 则把消息主动推送给消费者(或者消费者主动轮询) 1.1.1 重topic 生产者生产的消息有topic,消费者订阅topic,在重topic的消息队列⾥必然需要topic的存在 1.1.2 轻

    2024年02月05日
    浏览(72)
  • Kafka入门基本概念(详细)

    Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合

    2024年01月16日
    浏览(41)
  • Kafka基本概念

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多生产者、多订阅者,基于 zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等。 主要应用场景是:日志收集系统和消息系统。 Kafka主要设计目标如下:

    2024年02月13日
    浏览(61)
  • Kafka的概念|架构|搭建|查看命令

    1.为什么需要消息队列(MQ) 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。 我们使用消息队列,通过异步处理请求,

    2024年02月03日
    浏览(30)
  • 架构基本概念和架构本质

    在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自

    2023年04月09日
    浏览(32)
  • kafka--技术文档-基本概念-《快速了解kafka》

    学习一种新的消息中间键,卡夫卡!!! 官网网址 Apache Kafka         Kafka是一种开源的分布式流处理平台,由Apache软件基金会开发,用Scala和Java编写。它是一个高吞吐量的分布式发布订阅消息系统,可以处理消费者在网站中的所有动作流数据。这种动作可以是网页浏览、

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包