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

来源:2-2 TCP的三次握手_1

慕仔3163040

2021-07-03

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

写回答

1回答

翔仔

2021-07-05

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

0
2
翔仔
回复
慕仔3163040
同学好,因为不同工具框架的方式不同,可以看看netty,比如这个https://www.cnblogs.com/-jn-blog/articles/13299191.html 看看里面的通讯过程,就明白了,会根据requestId 结合ConcurrentHashMap 实现
2021-07-06
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程