kafka学习笔记系列——小试牛刀

kafka是什么?

一句话概括:Apache Kafka 是一款开源的分布式消息引擎系统,使用纯二进制的字节序列来传输消息,支持点对点模型(如客服电话)、发布/订阅模型(如报纸订阅)。

复制代码
   引擎:具备某种能量转换传输的能力; 
   消息引擎:将上游的巨大能力平稳的输出到下游 
   
   消息系统:不是很恰当,它片面强调了消息主体的作用,而忽视了这类系统引以为豪的消息传递属

最基础的消息引擎:系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A 发送的消息。

既然消息引擎是用于在不同系统之间传输消息的,那么如何设计待传输消息的格式从来都是一等一的大事。试问一条消息如何做到信息表达业务语义而无歧义,同时它还要能最大限度地提供可重用性以及通用性?

kafka中消息还是结构化的,只是在使用之前都要将其转换成二进制的字节序列。

常见的两种消息传输方法:

  1. 点对点模型:也叫消息队列模型。系统 A 发送的消息只能被系统 B 接收,其他任何系统都不能读取 A 发送的消息。日常生活的例子比如电话客服就属于这种模型:同一个客户呼入电话只能被一位客服人员处理,第二个客服人员不能为该客户服务。
  2. 发布/订阅模型:有一个主题(Topic)的概念,你可以理解成逻辑语义相近的消息容器。该模型也有发送方和接收方,向主题发布消息的客户端应用程序称为生产者(Producer),生产者程序通常持续不断地向一个或多个主题发送消息,而订阅这些主题消息的客户端应用程序就被称为消费者(Consumer)。消费者也能够同时订阅多个主题的消息。 发送方也称为发布者(Publisher),接收方称为订阅者(Subscriber)。和点对点模型不同的是,这个模型可能存在多个发布者向相同的主题发送消息,而订阅者也可能存在多个,它们都能接收到相同主题的消息。生活中的报纸订阅就是一种典型的发布 / 订阅模型。

kafka支持上述两种模型。

我们把生产者和消费者统称为客户端(Clients)。可以同时运行多个生产者和消费者实例,这些实例会不断地向 Kafka 集群中的多个主题生产和消费消息。

有客户端自然也就有服务器端。Kafka 的服务器端由被称为 Broker 的服务进程构成,即一个 Kafka 集群由多个 Broker 组成,Broker 负责接收和处理客户端发送过来的请求,以及对消息进行持久化。

虽然多个 Broker 进程能够运行在同一台机器上,但更常见的做法是将不同的 Broker 分散运行在不同的机器上,这样如果集群中某一台机器宕机,即使在它上面运行的所有 Broker 进程都挂掉了,其他机器上的 Broker 也依然能够对外提供服务。这其实就是 Kafka 提供高可用的手段之一。

为什么需要消息引擎系统?

答案就是"削峰填谷",上下游(由于业务性质的不同所导致的)处理速度不匹配,所以需要消息队列来做缓冲。

所谓的"削峰填谷"就是指缓冲上下游瞬时突发流量,使其更平滑。特别是对于那种发送能力很强的上游系统,如果没有消息引擎的保护,"脆弱"的下游系统可能会直接被压垮导致全链路服务"雪崩"。但是,一旦有了消息引擎,它能够有效地对抗上游的流量冲击,真正做到将上游的"峰"填满到"谷"中,避免了流量的震荡。

消息引擎系统的另一大好处在于发送方和接收方的松耦合,这也在一定程度上简化了应用的开发,减少了系统间不必要的交互。

相关推荐
豆沙糕1 小时前
Python异步编程从入门到实战:结合RAG流式回答全解析
开发语言·python·面试
s1mple“”1 小时前
大厂Java面试实录:从Spring Boot到AI技术的电商场景深度解析
spring boot·redis·微服务·kafka·向量数据库·java面试·ai技术
前端摸鱼匠2 小时前
【AI大模型春招面试题13】残差连接(Residual Connection)与层归一化(Layer Norm)在Transformer中的作用?
人工智能·深度学习·语言模型·面试·transformer·求职招聘
再ZzZ3 小时前
Docker快速部署Kafka(内网通用版本)
docker·容器·kafka
→长歌4 小时前
2026Java面试30题精解
java·python·面试
笨笨没好名字5 小时前
结构工程/机械工程/工业设计/硬件工程师面试题目(题源大疆:12+28)
人工智能·面试·职场和发展
LSL666_5 小时前
JVM面试题——垃圾收集器
java·jvm·面试·垃圾收集器
庞轩px6 小时前
后端开发面试题总结
java·jvm·面试·并发编程·mysql与redis·spring与消息队列·网络协议与设计模式
jasnet_u8 小时前
kafka-3.8.0三节点集群(KRaft协议)
分布式·kafka
掘金安东尼9 小时前
⏰前端周刊第 459 期v2026.4.3
前端·javascript·面试