一个最简单的RPC服务流程

简介: 一个最简单的RPC服务流程

什么是PRC



RPC是远程过程调用(Remote Procedure Call)的缩写形式。用户可以在不知道底层的调用细节情况下,提供象在本地调用服务的体验。


优点



可以提供微服务;可提供分布式部署;提高系统扩展性;效率高;低延时。


缺点



  1. 不能跨语言,例如java的不能给go调用;
  2. 如果想要实现可以用http封装一层
  3. 效率依赖于网络环境


实现一个简单的RPC服务



网络异常,图片无法展示
|


序列化传输协议


  1. hessian 二进制传输协议效率高
  2. protostuff 二进制传输协议效率高
  3. JSON 字符串,协议可读性高


协议组装


协议组装大概是反射调用的一些必备信息,注意协议的类需要可以序列化处理

  1. 请求协议


private String id;
  private String version;
  private String className;// 类名
  private String methodName;// 函数名称
  private Class<?>[] parameterTypes;// 参数类型
  private Object[] parameters;// 参数列表
  private String ip;//IP
  private int port;//端口
复制代码


远程请求的服务地址如何获取


服务端对外暴露一个ip+端口

  1. 可以把地址暴露在zookeeper的临时节点上。
  2. 可以把服务暴露在ngnix(socket)上进行服务转发


远程请求


  1. http的客户端
  2. socket客户端

我们可以把请求的过程给屏蔽掉,走客户端调用服务器,然后解析返回的数据,返回给用户,让用户的调用感觉是在本地调用一样。


屏蔽的方式这里用到了动态代理模式、基本就是jdk自带的和cglib库。

可参考 java动态代理的两种demo


返回数据解析


返回数据是序列化的直接进行强转对象了

2.数据返回协议


private String requestId;
    private int code;//-1失败  0成功
    private String errorMsg;
    private Object data;
复制代码


客户端得到返回的数据


数据传输对客户端是无感的,接收到返回数据后可以进行其他处理了。

相关文章
|
6月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
94 1
|
29天前
|
存储 前端开发 JavaScript
前端的全栈之路Meteor篇(四):RPC方法注册及调用-更轻量的服务接口提供方式
RPC机制通过前后端的`callAsync`方法实现了高效的数据交互。后端通过`Meteor.methods()`注册方法,支持异步操作;前端使用`callAsync`调用后端方法,代码更简洁、易读。本文详细介绍了Methods注册机制、异步支持及最佳实践。
|
6月前
|
网络协议 JavaScript 前端开发
性能工具之Jmeter压测Hprose RPC服务
【5月更文挑战第19天】性能工具之Jmeter压测Hprose RPC服务
77 5
|
6月前
|
JSON JavaScript Java
性能工具之Jmeter压测Thrift RPC服务
【5月更文挑战第21天】性能工具之Jmeter压测Thrift RPC服务
105 1
|
6月前
|
负载均衡 Dubbo Java
最简最快了解RPC核心流程
本文主要以最简易最快速的方式介绍RPC调用核心流程,文中以Dubbo为例。同时,会写一个简易的RPC调用代码,方便理解和记忆核心组件和核心流程。
最简最快了解RPC核心流程
|
6月前
|
XML JSON 网络协议
RPC远程服务如何调用
【2月更文挑战第12天】一个完整的 RPC 调用框架包括:通信框架、通信协议、序列化和反序列化三部分。
|
6月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
156 0
|
6月前
|
Go
Go语言RPC实战:打造自己的远程调用服务
Go语言RPC实战:打造自己的远程调用服务
151 0
|
Dubbo Java 应用服务中间件
为什么大厂用的都是RPC服务
在很久以前,笔者刚毕业开始工作那会儿,对于企业开发的模式一直以为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。
213 1
|
网络协议 网络安全 虚拟化
在 Hyper-V 虚拟机中更新组策略时出现 RPC 服务不可用的错误
在 Hyper-V 虚拟机中更新组策略时出现 RPC 服务不可用的错误
281 3
下一篇
无影云桌面