手写RPC框架--无注册中心

手写RPC框架--无注册中心_第1张图片

        RPC(Remote Procedure Call,远程过程调用),一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远端系统资源;对于客户端来说, 传输层使用什么协议,序列化、反序列化都是透明的

为什么要用RPC? 

其实这是应用开发到一定的阶段的强烈需求驱动的。

  1. 如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我 们用不着;

  2. 当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。

  3. 当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以这时候,RPC才是大显身手时候。

其实3描述的场景也是服务化 、微服务 和分布式系统架构 的基础场景。即RPC框架就是实现以上结构的有力方式。

        通过手写一个无注册中心的RPC框架,使用JDK动态代理、反射、socket搞定。

        因为有些类不管是客户端还是服务端都应该有的,那么我们可以可以把他放在一个api项目里,

api

手写RPC框架--无注册中心_第2张图片

手写RPC框架--无注册中心_第3张图片

手写RPC框架--无注册中心_第4张图片

server端

手写RPC框架--无注册中心_第5张图片

发布远程服务

手写RPC框架--无注册中心_第6张图片

处理请求

手写RPC框架--无注册中心_第7张图片

处理客户端的请求

手写RPC框架--无注册中心_第8张图片

通过反射调用服务

手写RPC框架--无注册中心_第9张图片

服务实现类

手写RPC框架--无注册中心_第10张图片

启动服务端

手写RPC框架--无注册中心_第11张图片

手写RPC框架--无注册中心_第12张图片

客户端

手写RPC框架--无注册中心_第13张图片

创建连接和发起一个远程调用

手写RPC框架--无注册中心_第14张图片

手写RPC框架--无注册中心_第15张图片

发起一个异常

手写RPC框架--无注册中心_第16张图片

创建客户端的远程代理,通过远程代理进行访问,JDK的动态代理

手写RPC框架--无注册中心_第17张图片

手写RPC框架--无注册中心_第18张图片

客户端发起连接和请求,

手写RPC框架--无注册中心_第19张图片

你可能感兴趣的:(手写RPC框架--无注册中心)