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。

相关推荐
晴天彩虹雨1 小时前
Flink 消费 Kafka 数据流的最佳实践
数据仓库·flink·kafka·linq
慧一居士19 小时前
Kafka HA集群配置搭建与SpringBoot使用示例总结
spring boot·后端·kafka
xbhog20 小时前
Java大厂面试突击:从Spring Boot自动配置到Kafka分区策略实战解析
spring boot·kafka·mybatis·java面试·分布式架构
南客先生1 天前
深入解析:RocketMQ、RabbitMQ和Kafka的区别与使用场景
java·kafka·消息队列·rabbitmq·rocketmq
咦!一只菜鸡1 天前
idea连接远程服务器kafka
分布式·学习·kafka
什么芮.1 天前
Kafka
kafka
TE-茶叶蛋1 天前
Kafka + Kafka-UI
分布式·kafka
一元钱面包1 天前
kafka课后总结
kafka
云攀登者-望正茂2 天前
Kafka 架构设计和组件介绍
分布式·kafka
露卡_2 天前
Kafka和其他组件的整合
分布式·kafka·linq