✅如果让你实现一个RPC框架,会考虑用哪些技术解决哪些问题?

典型回答

这种问题,其实考察的就是你对Dubbo的理解程度了,一般可以从他的相关原理以及细节实现上面来回答,比如Dubbo作为一个RPC框架,需要考虑的问题有以下这几个:

1、RPC调用,需要通信吧,那就需要一个通信协议

2、通信的过程中,需要做参数的序列化吧,那就需要一个序列化协议

3、RPC框架中需要有注册中心吧,服务提供者和调用者需要和注册中心交互吧,这就需要解决服务的注册和发现的问题吧。

4、有了多个服务提供者之后,调用者在调用的时候,需要选择一个具体的服务调用吧,这时候是不是又需要负载均衡了。

5、RPC重要的是像调用本地服务一样调用远程服务,那么这就涉及到动态代理的技术实现了吧

6、除了以上这些重要的核心功能以外,还可以考虑,比如缓存、比如服务降级、比如泛化调用、比如优雅上下线、比如服务的高可用、比如异步回调、比如服务治理之类的了。

所以,把一个问题拆解出来之后,你会发现剩下这些问题可能都是你见过的——"八股文"!

如通信协议:

✅Dubbo支持哪些调用协议?

如序列化协议的话,可以参考:

✅Netty有哪些序列化协议?

如服务的注册和发现:

✅Dubbo实现服务调用的过程是什么样的?

如负载均衡:

✅什么是负载均衡,有哪些常见算法?

如动态代理:

✅Dubbo如何实现像本地方法一样调用远程方法的?

还有缓存、泛化调用、优雅上下线,在八股文中也都有,就不一一展示了,大家可以自行搜索一下。

原文: https://www.yuque.com/hollis666/xkm7k3/nlhfcvk5d9ruz5zy