RPC是指远程过程调用

1.要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

2.要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。

3.要通信协议的问题,当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的应用

这么说可能很难理解,实际上通讯问题-联网,寻址问题-网络的7层协议,分布式的话还要注册中心,通信协议-最简单的有json,还有的https

最新文章

  1. CA扫盲的巅峰之作!!!
  2. Objective-c的@property(atomic,nonatomic,readonly,readwrite,assign,retain,copy,getter,setter) 属性特性
  3. CSS3妙用
  4. CGGeometry Reference (一)
  5. java与微信企业号交互
  6. [原创]Android插件化的一种实现
  7. 配置Python+selenium+firefox自动化测试
  8. ExtJS 的一些技巧与问题
  9. 使用WM_COPYDATA跨进程发送数据
  10. Python之格式化输出讲解
  11. iOS开发 UITableView之cell
  12. asp.net mvc 下载文件 txt doc xsl 等等
  13. go编程基础
  14. slice、substring、substr的区别
  15. undefined is not an object (evaluating 'RNFetchBlob.DocumentDir')
  16. swift实现与OC的混编
  17. jQuery 效果 – 淡入淡出
  18. 《AI算法工程师手册》
  19. 微信公众号绑定服务器 Flask版
  20. NAS 创建大文件

热门文章

  1. docker出现错误 could not read CA certificate
  2. Android精品源码分享第四波袭来,免费下载!
  3. http相关理解
  4. 17、SAM文件格式说明(转载迷宫中的将军)
  5. 以后尽量不用cin、cout啦
  6. C++中struct和class定义类区别
  7. EasyUI+MVC4实现后台管理系统一:登陆和进入后台界面
  8. PS2018学习笔记(30-35节)
  9. [C++]C,C++中使用可变参数
  10. 监听Listener的简介及分类