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 提供高可用的手段之一。

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

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

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

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

相关推荐
Java编程爱好者1 小时前
OpenEvent:事件驱动、日志先行的Agent框架
面试
destinying2 小时前
前端秒变AI全栈,我的核心资产是一套Node.js“中间件”
前端·后端·面试
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第91题】【Mysql篇】第21题:分布式锁的使用场景和原理?
java·数据库·分布式·mysql·面试
JAVA社区2 小时前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Mahir082 小时前
MyBatis 延迟加载深度解密:从使用方式到底层动态代理原理全解
java·后端·面试·mybatis
贺国亚4 小时前
Multi-Agent 与 Multi-Task 编排架构
面试
神奇小汤圆4 小时前
滴滴面试官摇头:"你 SKILL.md 全塞进 context 了?我刚翻完 Anthropic 文档,人家是按需加载的。" 我后背一凉
面试
仙俊红6 小时前
线程池面试
python·面试·职场和发展
张小凡vip6 小时前
Spring Boot集成Kafka完整版
spring boot·kafka·linq
小江的记录本7 小时前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试