RPC学习

作者: 千山_暮雪 | 来源:发表于2018-01-14 20:34 被阅读0次

1.http://blog.jobbole.com/92290/

 通俗易懂的讲解rpc,client与server,服务的提供与调用。

java代理可实现透明化调用远程服务,两种,jdk动态代理(常用)和cglib(字节码生成)

消息的必备结构,服务、方法、requestId、timeout、参数类型和值,返回结果有requestId、code、返回值。

消息的编码和解码:序列化,hessian、thrift等序列化解决方案。看重三点,通用性,即支持的数据结构;性能,空间时间复杂度;扩展性,新字段的兼容等。hessian介绍:http://www.cnblogs.com/niejunlei/p/5981910.html

通信方面,两种IO模型,BIO/NIO;链接:http://blog.jobbole.com/88984/

requestID的重要性:客户端先存到concurrentHashMap里,key是id,value是callback,等待结果,看一段代码:客户端发送请求后就异步加锁去取,取不到时,wait方法,释放锁。

客户端有有专门监听服务端消息的线程,得到结果后设置相应的requestId的callback对象的值,且是通过加锁操作来唤醒等待的线程。

public Object get() {      

  synchronized (this) {  // 旋锁           

 while (!isDone) {  // 是否有结果了                

wait(); //没结果是释放锁,让当前线程处于等待状态            }        }    }

private void setDone(Response res) {        

this.res = res;        isDone = true;       

 synchronized (this) { //获取锁,因为前面wait()已经释放了callback的锁了            

notifyAll(); // 唤醒处于等待的线程        }    }

捉急的格式,上述可以理解到同步的同步调用rpc的实现方式。

此时,一个rpc若想被调用,不能单靠ip通知,zookeeper提供了服务的注册与发现功能,并且通过心跳检测(socket长连接),可以找到可用的服务。简单理解,zookeeper可以充当一个服务注册表,zookeeper是个分布式文件系统。每当一个服务部署后,都要将自己的服务注册到zookeeper的某一路径上:/{service}/{version}/{ip:port}, 比如我们的HelloWorldService部署到两台机器,那么zookeeper上就会创建两条目录:分别为/HelloWorldService/1.0.0/100.19.20.01:16888  /HelloWorldService/1.0.0/100.19.20.02:16888。

socket长连接:https://www.cnblogs.com/lcplcpjava/p/6581179.html

相关文章

  • RPC原理学习

    RPC原理学习 什么是RPC RPC(Remote Procedure Call Protocol)——远程过程调...

  • RPC远程过程调用概念及实现2018-04-16

    RPC远程过程调用概念及实现 RPC框架学习笔记 >>什么是RPC RPC 的全称是 Remote Procedu...

  • XXL-RPC (1)---RPC请求主流程

    背景和体会 在学习完xxl-job后,接着学习xxl-rpc项目。 xxl-rpc底层的rpc实现的基于netty...

  • 从零开始手写 dubbo rpc 框架

    rpc rpc 是基于 netty 实现的 java rpc 框架,类似于 dubbo。 主要用于个人学习,由渐入...

  • #知识学习之Json-RPC

    知识学习之Json-RPC JSON-RPC技术 JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议...

  • RPC学习

    1.http://blog.jobbole.com/92290/ 通俗易懂的讲解rpc,client与server...

  • RPC学习

    一、什么是RPC RPC(Remote Procudure Call),即远程过程调用。简单来说,就比如有2个类,...

  • rpc学习

    什么是RPC RPC:Remote Produre Call-远程过程调用,像调用本地方法一样调用远程方法 RPC...

  • gRPC学习笔记——(一)学习铺垫

    (如有不全,烦请指出,后续不断跟进修正) 一、什么是RPC?为什么要学习RPC?有没有RPC的代替品? ——今后所...

  • RPC学习笔记-协议

    RPC协议 RPC协议同HTTP协议一样,都是属于应用层的协议,可以通过学习HTTP的协议来理解RPC协议. HT...

网友评论

    本文标题:RPC学习

    本文链接:https://www.haomeiwen.com/subject/epnbdxtx.html