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. kafka基本使用--学习笔记

    2024-06-16 12:54:10       60 阅读
  2. 基于kafka_exporter&prometheus&grafanakafka监控实现

    2024-06-16 12:54:10       55 阅读
  3. KafKa基本原理

    2024-06-16 12:54:10       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 12:54:10       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 12:54:10       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 12:54:10       87 阅读
  4. Python语言-面向对象

    2024-06-16 12:54:10       96 阅读

热门阅读

  1. 基于SpringBoot+Spark搭建本地计算引擎服务

    2024-06-16 12:54:10       40 阅读
  2. Pytorch-Padding Layers

    2024-06-16 12:54:10       27 阅读
  3. windows11键盘失灵

    2024-06-16 12:54:10       29 阅读
  4. ssl安全证书免费申请方法,非自签证书

    2024-06-16 12:54:10       28 阅读
  5. 服务和协议的关系?

    2024-06-16 12:54:10       35 阅读
  6. 【DevOps】Logstash详解:高效日志管理与分析工具

    2024-06-16 12:54:10       26 阅读
  7. 285. 二叉搜索树中的中序后继

    2024-06-16 12:54:10       26 阅读
  8. vue学习(一)

    2024-06-16 12:54:10       28 阅读
  9. vue相关的前端知识回顾

    2024-06-16 12:54:10       31 阅读