JAVA 项目中,RPC调用方式和协议
RPC(Remote Procedure Call)远程过程调用是一种通过网诺从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。它允许客户端以本地调用的方式请求服务,使得网诺服务的使用就像本地函数一样简单,从而简化分布式系统不同服务之间的交互。
RPC的基本工作原理:
- 客户端通过RPC接口发送请求:客户端通过RPC接口发送请求到服务器,请求中包含了要调用的方法名称,参数等信息
- 服务器处理请求:服务器端接收到请求后,根据请求中的方法名称和参数调用相应的服务,执行相应的业务逻辑。
- 服务器返回结果:服务器执行相应的业务逻辑后,将结果返回给客户端。
RPC协议的特点包括:
- 跨语言和跨平台:RPC协议允许不同编程语言和平台之间的程序进行通信,促进了异构系统间的集成。
- 高性能:由于RPC直接调用远程服务,避免了数据序列化和反序列化的开销,通常比HTTP等基于HTTP的RESTful API具有更高的性能。
- 易于使用:RPC提供了统一的接口给客户端,使得客户端无需关心底层网络通信的细节,简化了分布式系统的开发。
HTTP协议请求的代码大致如下:
@RestController @RequestMapping("/http") public class HttpCilentController { @GetMapping("/getHello") String gethello(){ //声明响应类 HttpResponse execute = null; //创建http服务端实例 HttpClient client = HttpClients.createDefault(); //发送请求 HttpGet get = new HttpGet("http://localhost:8080/test/hello"); try { execute = client.execute(get); }catch (IOException e){ e.printStackTrace();} //获取响应体 HttpEntity entity = execute.getEntity(); //工具了解析 String str = null; try { str = EntityUtils.toString(entity, "utf-8"); }catch (IOException e){e.printStackTrace();} //这里的String就是一个json字符串,如果该字符串是一个类免责需要再次使用工具如jackson,fastjson将josn字符串转为类。 return str; } }