开始造轮子之旅, 本期轮子:RPC框架。
在后续一段时间里, 我会写一系列文章来讲述如何实现一个RPC框架(我已经实现了一个示例框架, 代码在我的github上)。 这是系列第一篇文章, 主要从整体角度讲述了一个RPC框架组成结构与关注点。
RPC框架的关注点
首先,什么是RPC?
RPC的全称是Remote Procedure Call,远程过程调用。
RPC框架有很多,比如hsf、dubbo等等。借助RPC框架,我们在写业务代码的时候可以不需要去考虑服务之间的通信等问题,在调用远程服务的时候就像调用本地的方法那么简单。
那么,要写一个RPC框架应该由哪些部分组成,关注哪些东西?
1.简化本地调用流程
既然我们要像调用本地方法那样调用远程服务, 那么就应该生成代理来隐藏调用远程服务的细节。 这些细节包括但不限于以下所列出的关注点。
2. 服务发现与服务注册
- 如果我们想在Service A中调用Service B,那么我们首先得知道Service B的地址。 所以,我们需要有一个服务注册中心,通过这个中心,服务可以把自己的信息注册进来,也可以获取到别的服务的信息。
- 客户端也需要watch服务注册中心的目标服务的地址的变化
3. 网络通信
- 服务