消息和消息队列、以及作用场景(一)

“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。

“消息队列”是在消息的传输过程中保存消息的容器。 目前的消息队列有很多,例如:Kafka、RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ等。

目录

“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。

1、消息队列的应用场景

1.异步处理业务 (分散系统压力)

2.系统解耦

3.业务削峰

4.日志处理(大数据统计等)

5.生产者、消费者模型(也可以是 供应商和对接平台等)


1、消息队列的应用场景

1.异步处理业务 (分散系统压力)

比如一个用户的登录过程: 1、先校验用户信息 2、记录登录日志 3、邮件推送登录提醒 4、返回登录成功

2.系统解耦

解耦就是将不关联的服务模块拆分、比如 购物车模块、和支付模块、订单模块等拆分。 支付模块服务挂了、我们依然可以创建订单(不受到支付模块系统的影响)、发送消息支付(提高系统健壮性与容错性)。

3.业务削峰

削峰是指业务在极短的时间端内集中爆发(高并发)。例如春节在12306上抢购火车票,大量的用户需要同一时间去抢购;又例如淘宝京东的双十一秒杀,短时间内上亿的用户涌入,瞬间流量巨大;因为服务器处理资源的能力是有限的,当出现请求峰值的时候就很容易造成服务器宕机,用户无法访问的情况出现。

削峰从本质上来说,就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从【最后落地到数据库的请求数要尽量少】的原则。

消息队列就像是大水库一样,拦截上游的洪水,削减峰值进入下游河道的流量减少,从而达到减免洪水灾害的目的。

4.日志处理(大数据统计等)

日志是跟踪软件运行时所发生的事件的一种方法,简单来说它可以记录某时某刻运行了什么代码,当出现问题时可以方便我们进行定位。而我们在业务上记录日志就会导致接口速度和性能下降、这个时候我们就可以将任意业务节点的日志都推送到消息队列里、提高系统性能。

5.生产者、消费者模型(也可以是 供应商和对接平台等)

生产者 是指产生数据的模块,就形象地称为生产者;

消费者 是处理数据的模块,就称为消费者;

缓冲区阻塞队列 可以看文末链接

生产者和消费者之间的中介就叫做缓冲区。

三者之间的结构图:

消息和消息队列、以及作用场景(一)_第1张图片

消息队列就是实现缓冲区的方法之一。

可以学习java中常用的队列(推荐)

java中常用的队列_java 队列_一名小码农的博客-CSDN博客

数据结构(三) 队列_DJyzh的博客-CSDN博客

你可能感兴趣的:(消息,中间件,java高级,java,开发语言,消息,消息队列,中间件)