美文网首页程序员服务器后端开发
我说MQ可用于RPC,面试官让我回去等通知

我说MQ可用于RPC,面试官让我回去等通知

作者: 麦德漂 | 来源:发表于2019-03-12 13:19 被阅读5次

    面试官问我mq可以做什么?我说RPC服务。面试官一脸疑问&&嫌弃,让我回去等通知。

    MQ与RPC

    RPC(远程过程调用),客户端通过网络请求远程服务器服务,本质就是是两个进程间的通信。MQ作为一个消息中间件,在生产端与消费端传递消息,其实也是一种RPC调用。

    RabbitMq RPC

    当然了我说mq可用于rpc是当初学习rabbitMq时接触到的,rabbitMq官网有一个示例就是利用消息推送完成远程调用。我对rpc的进一步了解就是从这个示例开始的,链接地址:rabbitmq-rpc

    1.使用一个消息队列完成rpc请求,为了能够使request,response一对一,生成了请求唯一的关联id:correlationId。

    2.客户端调用服务端时应该设置超时时间。

    3.当服务端产生异常时,是否应该将异常返回客户端。

    4.在处理前防止无效的传入消息。

    5.如果服务端没有启动,客户端如何处理。

    6.等待响应使用同步还是异步。

    貌似和dubbo没什么区别,使用dubbo的两端都可以称之为客户端,dubbo常见的使用zk为注册中心,然后两端就可以进行通信,调用服务。

    再谈下我对MQ的理解 

    1.mq作为消息中间件,首先可以使多应用端解耦。应用只需和mq通信,各应用开发语言也不受限制。当然了不是说解耦了就一定好,脱离了实际业务场景谈架构应用都是扯犊子。

    2.mq高性能支撑,缓冲作用。现在的mq性能都比较好,用来抵挡高峰值流量最合适不过了,消息接收的一端可以无脑接收,而应用可以在接收一端慢慢消费,起到削峰的作用。

    3.冗余保存,ack机制。mq消息队列的持久化,上游系统可以直接推送mq数据即使下游系统崩溃,下游系统消息消费成功时才会删除消息,可以确保数据不丢失。

    4.异步通信。一些耗时的操作或响应及时性要求不高的操作,可以使用队列异步处理。

    5.统一日志收集。

    相关文章

      网友评论

        本文标题:我说MQ可用于RPC,面试官让我回去等通知

        本文链接:https://www.haomeiwen.com/subject/bczipqtx.html