首页 > 其他分享 >2.Kafka

2.Kafka

时间:2023-12-06 21:55:43浏览次数:22  
标签:订阅 消费者 队列 模型 Kafka 消息

Kafka 是什么?主要应用场景有哪些?

Kafka 是一个分布式流式处理平台。

流平台具有三个关键功能:

  1. 消息队列:发布和订阅消息流,这个功能类似于消息队列,这也是 Kafka 也被归类为消息队列的原因。
  2. 容错的持久方式存储记录消息流:Kafka 会把消息持久化到磁盘,有效避免了消息丢失的风险。
  3. 流式处理平台: 在消息发布的时候进行处理,Kafka 提供了一个完整的流式处理类库。

Kafka 主要有两大应用场景:

  1. 消息队列:建立实时流数据管道,以可靠地在系统或应用程序之间获取数据。
  2. 数据处理: 构建实时的流数据处理程序来转换或处理数据流。

 

和其他消息队列相比,Kafka 的优势在哪里?

我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它跟 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相比其他消息队列主要的优势如下:

  1. 极致的性能:基于 Scala 和 Java 语言开发,设计中大量使用了批量处理和异步的思想,最高可以每秒处理千万级别的消息。
  2. 生态系统兼容性无可匹敌:Kafka 与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域。
 唯一的劣势就是:可能会消息重复  

队列模型了解吗?Kafka 的消息模型知道吗?

队列模型:早期的消息模型

  使用队列(Queue)作为消息通信载体,满足生产者与消费者模式,一条消息只能被一个消费者使用,未被消费的消息在队列中保留直到被消费或超时。 比如:我们生产者发送 100 条消息的话,两个消费者来消费一般情况下两个消费者会按照消息发送的顺序各自消费一半(也就是你一个我一个的消费。)

队列模型存在的问题:

  假如我们存在这样一种情况:我们需要将生产者产生的消息分发给多个消费者,并且每个消费者都能接收到完整的消息内容。这种情况,队列模型就不好解决了。

  很多比较杠精的人就说:我们可以为每个消费者创建一个单独的队列,让生产者发送多份。这是一种非常愚蠢的做法,浪费资源不说,还违背了使用消息队列的目的。

发布-订阅模型:Kafka 消息模型

  发布-订阅模型主要是为了解决队列模型存在的问题。

  发布订阅模型(Pub-Sub) 使用主题(Topic) 作为消息通信载体,类似于广播模式;发布者发布一条消息,该消息通过主题传递给所有的订阅者,在一条消息广播之后才订阅的用户则是收不到该条消息的

  在发布 - 订阅模型中,如果只有一个订阅者,那它和队列模型就基本是一样的了。Kafka 采用的就是发布 - 订阅模型。

RocketMQ 的消息模型和 Kafka 基本是完全一样的。唯一的区别是 Kafka 中没有队列这个概念,与之对应的是 Partition(分区)。

 

 

什么是 Producer、Consumer、Broker、Topic、Partition?

Kafka 将生产者发布的消息发送到 Topic(主题) 中,需要这些消息的消费者可以订阅这些 Topic(主题),如下图所示:

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:订阅,消费者,队列,模型,Kafka,消息
From: https://www.cnblogs.com/cjhtxdy/p/17880616.html

相关文章

  • docker compose 一键部署kafka
    一.新建文件docker-compose.ymlversion:"3.8"services:zookeeper:restart:alwaysimage:'bitnami/zookeeper:3.8.3'ports:-'2181:2181'environment:-ALLOW_ANONYMOUS_LOGIN=yeskafka:restar......
  • 扫盲Kafka?看这一篇就够了!【转】
     kafka的使用场景为什么要使用Kafka消息队列?解耦、削峰:传统的方式上游发送数据下游需要实时接收,如果上游在某些业务场景:例如上午十点会流量激增至顶峰,那么下游资源可能会扛不住压力。但如果使用消息队列,就可以将消息暂存在消息管道中,下游可以按照自己的速度逐步处理;可扩展:......
  • kafka 集群企业部署最佳实践
    ......
  • OGG将Oracle全量同步到kafka
    ......
  • kafka入门(三):kafka多线程消费
    kafka消费积压如果生产者发送消息的速度过快,或者是消费者处理消息的速度太慢,那么就会有越来越多的消息无法及时消费,也就是消费积压。消费积压时,可以使用多线程消费,提高消费速度。kafka多线程消费的代码:publicclassThirdMultiConsumerThreadDemo{publicstaticfinalS......
  • Kafka集群调优+能力探底
    一、前言我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐;4个规格对应的单节点的配置如下:标准版:2C4G铂金版:4C8G专业版:8C16G企业版:16C32G另外,一般来讲,在同配置下,kafka的读性能是要优于写性能的,写操作时,数据要从网卡拷贝至堆内存,然后进行一堆数据校验、解......
  • IPV6配置kafka
    一、配置文件配置viserver.propertieslisteners=PLAINTEXT://[IPV6地址]:9092advertised.listeners=PLAINTEXT://[IPV6地址]:9092zookeeper.connect=IPV6地址:2181listeners和advertised.listeners至少要配置一个bin/kafka-topics.sh--list--bootstrap-serverIPV6地址:9......
  • 单机ELK接收kafka日志环境搭建
    单机ELK接收kafka日志环境搭建1、安装elk单机环境参考以下链接:https://www.cnblogs.com/zuouncle/p/17332191.html2、搭建kafka下载kafka:https://archive.apache.org/dist/kafka/2.6.2/解压:tar-zxvfkafka_2.12-2.6.2.tgzmv kafka_2.12-2.6.2kafka创建文件夹:mkdir-p......
  • 消息队列入门 —— 以 Kafka 为例(一)
    消息队列入门——以Kafka为例(一)概述当我们的应用逐步变得庞大,各层应用之间调用关系越来越复杂,对系统的可用性以及可扩展性要求也越来越高。消息队列作为分布式系统架构中的一个关键中间件,提供了“消息传递”和“消息排队模型”,可以应用在系统解耦、异步处理、流量削峰等多个......
  • 了解Kafka
    背景介绍Kafka 是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(ActivityStream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司作为多种类型的数据管道和消息系统使用。LinkIn于2010年贡献给了Apache基金会并成为顶级开源项目。当今社会各种应用系......