请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

服务调用时的远程通信问题

老师你好,请教一个面试题:
我们RPC调用时,比如a服务中的一个方法里有调用b服务提供的接口,他们之间通过长链接进行通信调用,如果有10个线程同时通过a服务的方法调用b服务提供的接口,那么b服务在处理完逻辑之后会有10个响应返回给a服务,那么a服务是怎么知道这10个响应与刚开始那10个请求给一一对应起来的呢?比如第9个请求的响应如果被第3个线程的请求给接收了,那不就乱套了吗,我们底层是如何处理的呢?面试官让详细解释下底层原理,我说我不知道,尴尬……

正在回答 回答被采纳积分+3

1回答

翔仔 2021-07-05 00:23:26

同学好,每个请求都会有唯一标识,只需要根据协议来确认唯一标识,然后回调给指定线程即可。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕仔3163040 #1
    老师你好,你说的协议,唯一标识,具体是什么呢?帮忙详细展开说下吧,没看懂您的答复,谢谢
    回复 有任何疑惑可以回复我~ 2021-07-05 01:49:55
  • 翔仔 回复 提问者 慕仔3163040 #2
    同学好,因为不同工具框架的方式不同,可以看看netty,比如这个https://www.cnblogs.com/-jn-blog/articles/13299191.html
    看看里面的通讯过程,就明白了,会根据requestId 结合ConcurrentHashMap 实现
    回复 有任何疑惑可以回复我~ 2021-07-06 01:12:11
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号