码迷,mamicode.com
首页 > 其他好文 > 详细

RPC服务简述

时间:2015-10-08 19:59:05      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

RPC=remote procedure call

技术分享    

  计算机A可以跟调用本地方法一样调用远程计算机B的方法,省略了显示编码远程调用的细节

技术分享

    过程:user相当于一个client,当client调用远程方法时,user-stub将接口方法参数封装起来,通过特定的协议规范打包成rpc的协议数据由C端的RPCRuntime送到S端的RPCRuntime,s端接收到后,还是按照特定的协议规范解析,然后调用本地方法,得到结果后返回给Client


RPC调用:

    同步调用:客户端等待调用执行完并返回结果

    异步调用:客户端调用后不必等待执行结果返回,但依然可以通过回调通知等方式获取返回结果

            若客户端不关心调用返回结果,则变成单向异步调用,单向调用不必返回结果

    区别:是否等待服务端执行完并返回结果技术分享


技术分享

    RpcProxy相当于user,RpcInvoker相当于user-stub,RpcConnector相当于RPCruntime,反之亦同

    RpcInvoker:负责编码调用信息和发送调用请求到服务方并等待调用结果返回(Client)

               负责调用服务端接口的具体实现并返回调用结果(Server)


例子:

    export导出接口:

  1. RpcServer server = new ...;

  2. DemoService demo = new ...;

  3. DemoService demo2 = new ...;

  4. server.export(DemoService.class,demo,options)

  5. server.export("demo2",DemoService.class,demo,options)

 

    import导入接口:

  1. RpcClient client = new ...;

  2. DemoService demo = client.referDemoService.class);

  3. demo.hi("rpc hello");

 

       


协议压缩:

    技术分享技术分享

    类似于HTTP有header信息和body信息,body信息就是可序列化编码,比如Xml,json


异常处理:

    1.RPC调用不一定执行

    2.RPC框架本身会抛出异常

    3.RPC速度(ms)肯定比本地调用(ns)慢


经验:

    因为RPC的调用过程会有网络消耗的,只有在计算任务时间远大于RPC固有消耗时间的情况下,才比较适用

    

RPC服务简述

标签:

原文地址:http://www.cnblogs.com/horseLing/p/4861845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!