手写简单的RPC
1.何为RPC
RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
2.工作原理
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送应答信息,然后等待下一个调用信息,最后,客户端调用进程接收应答信息,获得进程结果,然后调用执行继续进行。
3.架构描述
本例通过服务生产者(provider)
、服务消费者(comsumer)
、服务框架(framework)
三个模块实现简单的RPC案例。
其中服务生产者者负责提供服务,服务消费者通过http请求去调用服务提供者提供的方法,服务框架负责处理服务消费者调用服务提供者的相关逻辑处理。
本例中,消费端需要调用接口ProviderService.class
中的某个方法。生产者模块提供了其具体实现类ProviderServiceImpl.class
;最后,消费者需要通过RPC去调用生成者提供的这个方法。
废话不多说,直接上代码!