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。

相关推荐
陌上 烟雨齐15 分钟前
Kafka数据生产和发送
java·分布式·kafka
bing_1581 天前
什么是 Kafka 中的消息?它由哪些部分组成
分布式·kafka
William一直在路上1 天前
Kafka 的基本操作(1)
分布式·kafka
亲爱的非洲野猪1 天前
Kafka 重平衡(Rebalance)机制
分布式·kafka·linq
smileNicky1 天前
从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景
kafka·apache·linq
艾斯比的日常1 天前
# Kafka 消费堆积:从现象到解决的全链路分析
分布式·kafka
only_Klein2 天前
K8S部署ELK(二):部署Kafka消息队列
elk·kafka·kubernetes
黄雪超2 天前
Kafka——怎么重设消费者组位移?
大数据·分布式·kafka
liangsheng_g3 天前
Kafka服务端NIO操作原理解析
后端·kafka·nio