任何脱离业务的组件引入都是耍流氓。引入一个组件,最先该解答的问题是,此组件解决什么问题。
MQ,互联网技术体系中一个常见组件,究竟什么时候不使用MQ,究竟什么时候使用MQ,MQ究竟适合什么场景,是今天要分享的内容。
MQ是什么?
消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。
画外音:这两个进程,一般不在同一台服务器上。
在互联网架构中,MQ经常用做“上下游解耦”:
(1)消息发送方只依赖MQ,不关注消费方是谁;
(2)消息消费方也只依赖MQ,不关注发送方是谁;
画外音:发送方与消费方,逻辑上和物理上都不依赖彼此。
什么时候不使用MQ?
当调用方需要关心消息执行结果时,通常不使用MQ,而使用RPC调用。
ret = PassportService::userAuth(name, pass);
switch(ret){
case(YES) : return YesHTML();
case(NO) : return NoHTML();
case(JUMP) : return 304HTML():
default : return 500HTML();
}
如上例所示,上游调用Passport服务,处理结果不同,业务会走不同的逻辑处理分支(登录成功,登录失败,执行错误等