首先,我不是大神,我是跟着大神学习如何手写一个dubbo,每次的学习都写一个学后感,增强消化。
大神文章地址:一起写个Dubbo
借个图:
rpc,就是远程调用,大意是可以想调用本服务的方法一样去调用远程的服务内容,那么他是如何实现的呢?
首先A服务需要调用到B服务一般可以通过过对方的域名采用http的方式调用对方的接口,但这样明显不是我们想要的,这里首先需要一个注册中心,将可以调用的服务(包含方法)集中保存在一个地方,供需要的服务来使用,这个地方就叫做注册中心,它主要具有服务治理的功能,为消费者与提供者协调资源。
那么要实现这个远程调用,服务端与客户端各需要做什么呢?
服务端:服务端需要将对外提供的接口注册到注册中心,这样来使用的服务才能访问到,当一个远程请求访问来时会注明将要调用的接口的类名,方法名,参数类型,参数,服务端需要反射出服务,并进行执行,将执行结果返回给客户端。
客户端:客户端里需要有服务端的接口类,客户端通过动态代理,将要访问的接口信息封装为一个特殊的请求,包含了接口名,方法名,参数类型,参数,然后传输给服务端,并等待服务端的返回。
期间采用tcp连接,将对象序列化传输。
图解:



