Kafka JMS

kafka是大数据生态圈里面重要的组件,kafka其实就是一个消息队列。你得先对JMS的规范有一定的了解,这样可以在学习kafka的时候可以懂得原理。

JMS其实就是一个规范,一个应用程序接口。

其实对于程序来说,并不是每天都有这么大的访问量,只是有个活动有这么多的访问量。

当用户若干个请求过来之后,可以想将其存起来,比如用户来了70W请求,可是只能处理50W。那么可以先将这70W存起来,能够消化多少就去里面拿多少。先将50w的请求处理完了,然后再处理剩下的20w。

这就是一个消息队列,又叫做消息中间件。

消息队列具备的第一个能力是存储能力,能够将用户发过来的一些请求,一些消息给他存储起来,这就是一个容器。

(1)而这种容器在一般情况下采用的是队列这种结构,先进先出。先发送过来的访问,那就先处理你的访问。

(2)能够生产消息,以及消费消息的能力。

上图左边若干个用户要访问12306进行抢票,假设这台服务器只能处理一个人的访问,那么4个人同时访问那就承受不了了。承受不了就可能宕机了。

所以这些人直接访问的不是12306,而是将访问的请求放在了消息队列当中。12306根据自己的负载能力从队列当中拉取这些访问请求。比如处理能力只有1个,那么就从队列当中拉取消息进行处理。还有3个那么就在队列当中排队等着。等把这个处理完了,之后再从队列中拉取一个进行处理。

那么每个人的请求都没有丢失,同时12306也能够对其进行处理了。

消息有生产,对于一个网站来说,就是这些用户发起请求的各种链接,这就是生产消息。从消息队列中拉取若干个消息进行处理而这就是消费者。

哪个程序像kafka里面去写数据,以及那个程序从kafka里面读取数据,这些都叫做客户。

生产者负责向消息队列中去生产消息存到队列当中,而消费者是从队列当中来拉取消息进行处理,进行消费。

生产者生产出来数据,存储在消息队列当中,以供消费者去进行消费。而这些数据就是一条一条的消息。

生产者将消息发到队列当中,队列其实就是容器,消费者从队列当中提取这些消息进行消费。

两个模型之间最大的区别在于一个是1v1的,一个生产者,一个消费者。而发布订阅模型是1对多的,所有订阅了主题的消费者在往主题中发布消息之后,他们都可以接受到。

对于点对点的模型来说,消费者消费了一条数据,那么这条消息会从消息队列中移除。而发布订阅模式,订阅者在收到消息之后,它并不会从主题当中移除掉。因为还有其他的订阅者要用。

相关推荐
爱浦路 IPLOOK9 小时前
矿山无人化作业5G专网方案:企业专网核心网络选型分析
网络·分布式·科技·5g·信息与通信
实战派K8S&DB10 小时前
如何在内网配置 TiDB 数据库 Agent
数据库·人工智能·分布式·tidb
实战派K8S&DB10 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
小白羊丨11 小时前
Kafka任务重试、退避与失败恢复怎么做?
分布式·kafka
jyOverQ17 小时前
RabbitMQ 延迟消息怎么实现?TTL 与死信队列
分布式·后端·rabbitmq·ruby
zcmodeltech18 小时前
工程车模型多车型动作控制系统设计与实现方案——基于STM32与Modbus RTU的挖掘机、装载机、自卸车、起重机、电力工程车全场景控制方案,服务范围覆盖全国
分布式·stm32·单片机·嵌入式硬件·交互
StevenSurpass21 小时前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
江畔柳前堤2 天前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
夕除2 天前
redis--010
笔记·分布式·学习
寻求出路的程序媛2 天前
分布式 & 高性能 & 高可用 体系、学习重点、面试点
分布式·后端·面试·性能优化