为什么自己花钱做的网站竟然不是自己的?(,网站设计需要多久,汕头网站快速优化排名,工业设计公司怎么接活什么是MQ#xff1f;
MessageQueue:就是消息 队列#xff0c;任务队列#xff0c;指令 队列。 功能#xff1a;应用程序之间#xff08;生产者与消费者#xff09;的通信方式。
使用场景
从下面这个场景来感受MQ 的诞生 如果我们有很多任务需要处理#xff0c;任务…什么是MQ
MessageQueue:就是消息 队列任务队列指令 队列。 功能应用程序之间生产者与消费者的通信方式。
使用场景
从下面这个场景来感受MQ 的诞生 如果我们有很多任务需要处理任务会不停的发送过来我们需要进行处理没有MQ我们就普通开发这个功能可能会有下面这几种思路
单线程单线程 单队列多线程 单队列多线程 多队列 从上面的例子其实我们可以有下面这几个思考 1我们使用队列排队的方式是不是其实任务处理的实时性没有那么高呢是不是其实是异步处理。那么比如有这样一个例子用户注册。注册完自动登录但是这个系统比较复杂比如需要向用户发送短信欢迎用户成为一员又如积分制度或者针对新用户有一些优惠卷或者其它特权。如果系统够大一般肯定积分系统和优惠卷系统都会作为一个独立的模块那用户在注册这个动作的时候需要关心这些吗其实不需要先只完成核心的注册逻辑这些附加的功能就可以进行异步处理比如我们把初始化积分和优惠卷赠送这样的任务进行异步处理分别向积分系统和优惠卷系统发送一个消息当前我们完成用户系统的信息初始化后就立即响应用户这样对用户来说体验是很好的, 也能提升系统的QPS。 2那基于1的思考我们拆分成了不同的系统向不同的系统发送消息这个时候其实MQ充当一个通信的角色。那这些不同的系统是不是被解耦了呢同时是不是可以通过主系统向不同的系统分发数据呢。
其实我们我们上面的思考远远不够比如消息如果不持久化岂不是服务重启后就没有了吗任务处理过程中发生异常怎么办怎么路由到不同的队列如果我们有点对点的处理或广播处理这种需求呢。那么MQ就是解决了这些问题的一个方案MQ考虑的比我们更多也提供了不同问题的解决方式。
基于上面的一些简单的思考我们可以总结出MQ的应用场景
异步侧重的处理流程流程上将以前的一些同步逻辑改造成为异步的逻辑流程。解耦侧重的功能设计在做一些业务架构分析的时候可以有力度有重点的区分主干流程、分支流程。削峰限流侧重在数量级的问题相比于未接入MQ时能再次抗上几倍甚至几十倍、几百倍…的流量。延迟调用准实时、一定延时侧重定制化诉求在 db 与 MQ 之间做了一个抉择。
MQ的选择
Rocketmq官方网网 Why choose RocketMQ 有个各个MQ的对比。 那么我们在选型的时候需要考虑不同的维度这些维度可以参考下面这张图 图片来源https://time.geekbang.org/column/article/540810