介绍)

这篇笔记主要讲的是远程调用的主要2种形式,RPC(远程过程调用),RMI(远程方法调用),这2种方法作为远程调用的实现形式,对于我们理解他们的过程非常有用。

请求回复协议)

在远程调用中,一个很重要的概念是啊请求回复协议,由客户端发送Request到服务端,服务端执行好操作之后,把结果在回传到客户端上,就完成了一个基本的调用过程。这里有几点比较重要的概念:

1.消息标识别。这里指的主要是请求的标识, 因为每个请求都确保要有唯一性,不同进程发送的请求也都可能会不一样。

2.发送进程的标识,这里可以用网络地址+端口号的形式区分不同主机上的进程。

请求回复协议中构建的失败模型:

1.设置超时机制,如果发生了什么异常导致回复消息没有接受到。

2.撤销重复的请求,因为有可能那个请求操作还没有执行完,如果此时再发送相同请求,会被过滤掉。

3.会存在回复消息的历史记录表,避免同样的请求导致重复的操作,但是随着记录的变多,会占据越来越大的空间,所以在这里会有期限的限制。

4.交换信息请求的类型,有3种,最简单的纯请求类型the request protocol,一般的请求回复类型the request-reply protocol,比较全面的the request-acknowledge-reply,额外添加了客户端给服务端的回复确认包的过程。

5.HTTP就是一个基于TCP的典型的RR协议类型的协议。

远程过程调用)

远程过程调用隐藏了分布式系统中重要的方面,包括对于参数,结构值的编解码的过程,还有消息的传递过程。

1.远程过程调用实现的核心是2个字,interface,接口,通过声明了共同的接口,所以能够被很好的调用。

2.在RPC中,声明了几个call调用原语,主要3个at-least-one(最少被调用一次,在某次的RPC过程中),at-most-one(最多被调用一次,在某次的RPC的过程中),或者是Mayb(都有可能,针对不同的条件),像比如银行,金融的机构就只能被at-most-one这样的请求模式了,否则后果不堪设想,他是针对了失败情况措施而定的。

3.RPC的具体实现,里面会包括一个stub程序,服务端和客户端中都存在这个模块,stub程序作为中间的一个中转处,可以让你调用远程方法像是调用本地方法一样的感觉。

远程方法调用)

远程方法调用(RMI)可有说是一种具体形式的RPC,非常接近于RPC,但是一个本质的不同在于他由于分布式对象扩展而来,他所有的调用都是基于Object的方式实现,充分利用了面向对象的思想去实现整个过程,比较易懂,所以这里要求对象的引用必须具有唯一性。

1.在RMI的设计关键就在于对象模型的建立,一个号的对象中应该有许多的方法,而且这些方法应该是定义在接口中,只是让obj实现了这个方法,在对象里,要主要实现异常的处理。

2.而分布式对象与上面的区别又是怎样的呢,一个就是权限认证的控制,不是所有的对象都是可以随便访问的。

3.在分布式对象的调用中,再次强调了远程调用引用的重要性,因为你要调用远程对象,你必须已经包含了它的远程引用,才能实现调用,远程对象引用可以作为参数或者是结果进行进程间的传递的。

4.在分布式系统模型中主要以引用计数法控制分布式对象的垃圾回收。

5.RMI的实现主体模块包括:1.沟通通信模块。2.远程引用模块。3.服务模块4.服务端,客户端的程序实现模块。

6.永恒对象存储,在RMI中为了对象的方便调用,有时会被对象进行永久存储,当他被再次调用的时候,就变为激活状态,对象可以保存在磁盘中或者是数据库中。这里有2个方法判断一个对象是不是永恒对象(1).根搜索法查找是否与永恒根对象有关(2)他是不是永恒的对象的子类如果是的话,他也将是永恒对象。

7.在分布式服务中的定位服务功能在数据库或者是缓存中保存了远程对象引用和他所对应的当前位置的键值对关系,方便进行定位。如果数据不准确了,则会进程更新操作。

8.分布式垃圾回收机制。这个机制主要通过对象的增加和减少对象的引用计数的方式实现,在每个服务进程中都包含了一系列的对象的引用。在每个客户端对一个对象在增加引用的时候,服务端会通过一个lease租约机制的形式将对象交给客户端使用,到期了需要客户端进行再次的远程调用一次。

学习例子  Java RMI)

这长中的一个远程例子的实现例子是java RMI的例子,很多东西与我们前面说过的都比较类似,通过接口的形式开放了各种方法,不过这里需要继承一个序列化接口,所有的参数和结果值都会通过序列化的形式进程传输,里面用到了非常多的反射的思想(reflection)。

参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair

分布式系统阅读笔记(五)-----远程调用相关推荐

  1. 论文阅读笔记(五)——狐猴识别系统:一种便于狐猴个体识别的面部识别系统

    论文阅读笔记(五)--狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文简介 论文中文翻译:狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文名称:<LemurFaceID: a fac ...

  2. EJB3.0学习笔记---理解远程调用服务端和本地调用服务端的区别

    项目目的:理解远程调用服务端和本地调用服务端的区别 1.异常:       javax.ejb.EJBException: Local and Remote Interfaces cannot hav ...

  3. Spring Cloud Alibaba入门实践(五)-远程调用Feign

    上篇博客通过引入nacos,实现了服务的自动发现和注册,省去了人工维护列表的繁琐. 那有了nacos,或者说目前只有nacos,能做到什么?其实nacos有一个很重要的类叫DiscoveryClien ...

  4. 学习笔记-RPC远程调用概念和实例

    RPC远程调用概念和实例 一定要注意顺序,先hook,然后invoke,再rpc 逆向三段: 第三段RPC:Remote Procedure Call 远程调用 FRIDA精髓:远程调动 frida( ...

  5. 分布式系统阅读笔记(十八)-----副本备份技术

    介绍 在分布式系统中,副本和备份是一个用来提供高可用性和一定的容错能力的手段和措施.HA(高可用性)在当前越来越成为一个趋势在一些移动计算的领域和一些失去连接的状态场景之下.在这篇笔记中,我会介绍一些 ...

  6. 阅读笔记五2017.2.13

    11章的内容承接前面的章节提到了软件的设计与实现.前面的内容讲了如何解决用户需求,本章则讲了如何解决用户的需求.解决的过程要先进行建模,建模的思想在我以前的学习中就有接触,从小学习数学,而解决数学问题 ...

  7. HTTP权威指南阅读笔记五:Web服务器

    Web服务器会做些什么: 1.建产连接:接受一个客户端连接,或者如果不希望与这个客户端建立连接,就将其关闭. 1)处理新连接 2)客户端主机名识别 3)通过ident确定客户端用户 ident在组织内 ...

  8. 《构架之美》阅读笔记五

    软件架构:有关软件整体结构与组建的抽象描述,用于指导大型软件系统各方面的设计.软件架构的关注点:系统功能需求.性能.可用性.伸缩性.扩展性.安全性. 性能:从浏览器到数据库,影响用户请求的所有环节都可 ...

  9. 论文阅读笔记五十三:Libra R-CNN: Towards Balanced Learning for Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.02701.pdf github:https://github.com/OceanPang/Libra_R-CNN 摘要 相比模型的结构 ...

最新文章

  1. Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
  2. 「干货」小程序风头正劲,传统商家该如何把握机会抢占红利?
  3. 微信小程序通用开发框架小程序端包含若干基础组件
  4. PHP小白学习日程之旅
  5. linux7端口聚合,centos7配置链路聚合
  6. 腾讯云鼎实验室发布云安全攻防矩阵,绘制九大攻防路径全景图
  7. Spring+SpringMVC+MyBatis整合基础篇
  8. 特征提取、特征描述、特征匹配的通俗解释
  9. java xsi type_java – JAXB – 如何根据XML值设置XML元素的xsi:type?
  10. Java实战项目推荐(包括微服务、电商、支付项目、后台管理系统等)!
  11. 云盘上传一直显示服务器出错_百度云盘一直服务器忙 百度网盘出现服务器错误...
  12. 计算机视觉论文-2021-07-14
  13. http://txt.mop.com/static/788/231/5231788.html
  14. 输入scor为80结果实验
  15. 三星宣布Bixby拓展到电视洗衣机冰箱上 要把家电统统连接 | CES
  16. 某zhan sign
  17. ae稳定不能获取动态服务器,ae 获取动态链接服务器超时
  18. 【转载】Java语言中的参数传递
  19. Ubuntu20.04下安装 R 及 CRAN 软件包(命令行操作)
  20. 5款强制删除工具合集:

热门文章

  1. 什么是RSS?如何订阅RSS?
  2. sudo -l和sudo -v说明(suse linux sudo)
  3. 齐治堡垒机_任意用户登录漏洞
  4. Git的简单使用——连接码云
  5. c语言求偶数的积,动物行为学1
  6. Watir数据驱动 - Excel
  7. Linux C编程17-locale
  8. 【洛谷】P1828 香甜的奶油
  9. python爬虫和医学数据_Python爬虫入门教程 24-100 微医挂号网医生数据抓取
  10. 国产web端开源ui组件-通用前端ui界面组件库