rpc:
RPC是远程过程调用的简称,主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。
RPC调用的流程:
1)服务消费方(client)调用以本地调用方式调用服务;
2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
3)client stub找到服务地址,并将消息发送到服务端;
4)server stub收到消息后进行解码;
5)server stub根据解码结果调用本地的服务;
6)本地服务执行并将结果返回给server stub;
7)server stub将返回结果打包成消息并发送至消费方;
8)client stub接收到消息,并进行解码;
9)服务消费方得到最终结果。
RPC的目标就是要2~8这些步骤都封装起来,让用户对这些细节透明。
Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等
简单介绍下我们公司用的rpc框架。
消费端在服务启动时会去注册中心取定义的服务。
消费端接入流程:
1、 消费端注册,会生成一个消费编码
2、 远程服务配置:配置消费编码
3、 服务授权:在注册中心申请消费编码需要的服务。
4、 消费端调用远程服务
通过注解引入服务
@Resource(name="esgPosServiceId")
private RestOperations restOperations;
以get方式的请求举例:
String data=restOperations.getForObject(“/appsvr/public/helloWord”,String.class)
发出请求。
参照:
Spring提供的用于访问Rest服务的客户端:RestTemplate实践
http://www.open-open.com/lib/view/open1436018677419.html
在线文档查看: 3.1.3.RELEASE @ spring-web
http://www.boyunjian.com/javadoc/org.springframework/spring-web/3.1.3.RELEASE/_/org/springframework/web/client/RestTemplate.html#postForEntity(java.lang.String, java.lang.Object, java.lang.Class, java.lang.Object...)
RPC 原理
http://blog.jobbole.com/92290/