kafka学习(一)初识kafka

文章更新时间:2021/10/28

一、简介

  定义:kafka是一个支持分区、多副本、基于zookeeper协调分布式消息系统,用scala语言编写。

  目的:解耦、削峰、异步、缓冲(生产大于消费的情况)详见这里~

  使用场景:日志收集、消息系统、用户活动跟踪、运营指标分析等。

  PS:消息队列中的消息不是永久存的,会定时删除,自动删除的时间可以配置。

  结构:

二、消息队列通信的模式

  最大的特性就是可以实时的处理大量数据以满足各种需求场景。

pull拉取模式【kafka默认】

  如上图所示是基于拉取或者轮询的消息传送模型。生产者将消息放入消息队列后,由消费者主动的去拉取消息进行消费。

优点:拉取消息的频率可以由自己控制。

存在缺陷:消费者端无法感知消息队列是否有消息需要消费,所以在消费者端需要额外的线程去监控。

push推送模式

  如上图所示是一个基于消息推送的模型,生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者(类似微信公众号)。

  由于是消费者被动接收推送,所以无需感知消息队列是否有待消费的消息!但是consumer1、consumer2、consumer3由于机器性能不一样,所以处理消息的能力也会不一样,而消息队列却无法感知消费者消费的速度!所以推送的速度成了发布订阅模模式的一个问题!

  假设三个消费者处理速度分别是8M/s、5M/s、2M/s,如果队列推送的速度为5M/s,则consumer3无法承受!如果队列推送的速度为2M/s,则consumer1、consumer2会出现资源的极大浪费!

优点:消费者无需感知消息队列是否有待消费的消息。

存在缺陷:生产者无法感知消费者机器的性能,容易造成接收溢出或主机资源浪费。

三、kafka相关名词

  • PS:Kafka借鉴了JMS规范的思想,但是却并没有完全遵循JMS规范
  • PS:Kafka没有队列的概念Topic可以看成是队列在kafka中的一种表现形式。

 

 

posted @   有梦想的肥宅  阅读(1310)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示