kafka的基本模型

kafka官网

线程和线程之间的数据交互

在jvm里不同的线程有自己的栈内存,但彼此之间交互可以在共享的内存中进行,即堆内存,堆内存会将这些消息放到队列中,具体实现jvm见,栈内存各自维护,堆内存大家共享

进程和进程之间的数据交互

不同的进程在服务器上启动的时候,中间通过socket和websocket进行交互。

可能会产生的问题:

①产生和消费的速度不对等,内存/磁盘作为稀有资源会不够用,从而产生消息积压的问题,可能通过文件存储的方式解决

②要对消息进行处理,可能一条消息发给多个进程,也可能一条消息切割为多部分被多个进程消费此时就需要一个中间件,进行消息的缓冲处理,称为消息中间件。

③使用消息中间件也可避免生产者和消费者的直连,降低系统的耦合性,提高可用性和可拓展性

MQ的简介

Java中消息产生,发送到MQ软件中,发送消息的被称为Producer(消息提供者),接收消息的被称为Consumer(消息消费者),MQ软件中一般用队列处理消息,消息一般包含消息头、消息属性、消息主题内容。

P2P模型

(Publish-Subscribe)相当于是一对一,一条消息一个人发送,只能被一个人接收。

PS模型

即是消息的发布和订阅模型

kafka借鉴了JMS模型,但不完全遵循,所以虽然是消息中间件,但不同于RabbitMQ、ActiveMQ、RocketMQ命名中带Message Queue,kafka中的消息message一般称之为record,JMS Provider一般称之为Kafka Broker,保证消费顺序的索引称之为偏移量offset

kafka的基本组件,app调用kafka的producer和consumer进行消息的传递和读取,其中kafka自身是通过broker代理进行这些消息的处理, broker中的消息想要进行有序处理,通过偏移量实现也就是offset。

相关推荐
__土块__6 小时前
Java 大厂一面模拟:从线程本地存储到分库分表路由的连环拷问
kafka·线程池·分库分表·java面试·threadlocal·缓存一致性·大厂一面
面向Google编程8 小时前
从零学习Kafka:认证机制
大数据·kafka
却话巴山夜雨时i9 小时前
互联网大厂Java面试:从Spring Boot到Kafka的业务场景深度剖析
spring boot·redis·spring cloud·微服务·kafka·prometheus·java面试
qq_297574679 小时前
【Kafka系列·进阶第三篇】流处理与数据治理实战:Streams实时计算+Schema校验+多租户管控
分布式·kafka·linq
Rick19939 小时前
Kafka 的 ISR 是什么
分布式·kafka
qq_297574671 天前
【Kafka系列·进阶第一篇】生产可靠性实战:死信队列+幂等性+集群扩容+灾备切换
分布式·kafka
请为小H留灯1 天前
Kafka详解及实战案例
分布式·kafka·linq·消费
Devin~Y1 天前
大厂内容社区面试实录:从 Spring Boot 微服务到 AI RAG 问答(附详细解析)
java·spring boot·redis·elasticsearch·spring cloud·微服务·kafka
indexsunny1 天前
互联网大厂Java求职面试实战:从Spring Boot到Kafka的技术问答解析
java·spring boot·spring cloud·kafka·flyway·hikaricp·microservices
刘~浪地球2 天前
消息队列--Kafka 生产环境最佳实践
分布式·kafka·linq