RPC:远程过程调用,是一种同意分布式应用程序调用网络上不同计算机的可用服务的机制。RPC服务会在注冊表中给自己注冊一个UUID,成为通用唯一标识符。这个UUID针对每一项服务都是一个唯一的值,且在全部的平台上通用。

当一项RPC服务启动的时候。它会获得一个高位port。而且以其UUID对该port进行注冊,有些RPC服务则会随机使用高位port。而有些服务每次都尽量使用同样的port(假设可用)。但在服务的生存期内。port的分配时静态的。当一个client要与特定的RPC服务通信的时候。它无法事先知道该服务在哪一个port上执行。

因此该client会先建立一个到server的port映射器服务,Windows在135port。unix/linux/solaris在111port。并使用其请求的服务的UUID向serverport映射器服务查询该port号,port映射器会将对应的port号返回给client,然后关闭连接。最后,client利用port映射器提供的port号,新建一个到该服务的连接。

比如。NFS启动的时候会启用未被使用的小于1024 的port作为监听传输使用,并主动的向 RPC 注冊,因此RPC知道NFS相应使用的port。

RPC使用固定的port 111port来监听用户端的需求而且回报给用户端正确的NFSport。

让用户端能够连结到正确的NFSport上。

所以。NFS服务必须启动RPC服务。

软件领域的port一般指网络中面向连接服务和无连接服务的通信协议port,是一种抽象的软件结构,包含一些数据结构和I/O(基本输入输出)缓冲区。

按port号可分为3大类:

(1)公认port(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些port的通讯明白表明了某种服务的协议。

比如:80port实际上总是HTTP通讯。

(2)注冊port(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有很多服务绑定于这些port。这些port相同用于很多其他目的。比如:很多系统处理动态port从1024左右開始。

(3)动态和/或私有port(Dynamic and/or Private Ports):从49152到65535。理论上。不应为服务分配这些port。

实际上,机器通常从1024起分配动态port。但也有例外:SUN的RPCport从32768開始。

原文:http://blog.csdn.net/genius_lg/article/details/15455217

到底什么是RPC?的更多相关文章

  1. 那些年,我们追过的RPC

    1974年冬,互联网大师 Jon Postel发表了RFC674:“Procedure Call Protocol Documents,Version 2”,尝试定义一种在包含70个节点的网络中共享资 ...

  2. RPC之远程过程调用

    一. 简介 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 1. 类比: 将计算机服 ...

  3. rabbitMQ学习3-RPC远程过程调用

    将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 比喻 将计算机服务运行理解为厨师做饭 ...

  4. 消息队列rabbitmq/kafka

    12.1 rabbitMQ 1. 你了解的消息队列 rabbitmq是一个消息代理,它接收和转发消息,可以理解为是生活的邮局.你可以将邮件放在邮箱里,你可以确定有邮递员会发送邮件给收件人.概括:rab ...

  5. 消息队列rabbitmq rabbitMQ安装

    消息队列rabbitmq   12.1 rabbitMQ 1. 你了解的消息队列 生活里的消息队列,如同邮局的邮箱, 如果没邮箱的话, 邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻 ...

  6. 一文带你搞懂 RPC 到底是个啥

    RPC(Remote Procedure Call),是一个大家既熟悉又陌生的词,只要涉及到通信,必然需要某种网络协议.我们很可能用过HTTP,那么RPC又和HTTP有什么区别呢?RPC还有什么特点, ...

  7. 大名鼎鼎的RPC和MQ到底有啥区别和联系

    RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). R ...

  8. Netty实现高性能RPC服务器优化篇之消息序列化

    在本人写的前一篇文章中,谈及有关如何利用Netty开发实现,高性能RPC服务器的一些设计思路.设计原理,以及具体的实现方案(具体参见:谈谈如何使用Netty开发实现高性能的RPC服务器).在文章的最后 ...

  9. RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化

    序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果.服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用.然我们自己动手从0开始写一个rpc功能以及实 ...

随机推荐

  1. Java反射机制实战——字段篇

    首先,我们来认识几个类. Class(java.lang.Class) Class对象是一个特殊对象,每一个类都有一个Class对象,用来创建该类的“常规”对象.可以通过对象的getClass()方法 ...

  2. js文件中引用其他js文件

    这一个功能的作用是做自己的js包时,可以通过引入一个整体的js文件而引入其他js. 只需要在总体的js加上这一句话 document.write("<script type='text ...

  3. U盘安装完美的WIN7操作系统教程

    准备工作 首先备份或者在官网下载好您机器的驱动,否则完成后可能无法正常使用 ①一个有win7或者XP系统的电脑(制作启动盘用) ②一个4G以上的U盘 ③win7&win8系统包(请到官网下载或 ...

  4. Redis系列(九)--几道面试题

    这里只是一点面试题,想了解更多,可以查看本人的Redis系列:https://www.cnblogs.com/huigelaile/category/1461895.html 1.Redis和Memc ...

  5. java虚拟机(四)--内存溢出、内存泄漏、SOF

    学习了java运行时数据区,知道每个内存区域保存什么数据,可以参考:https://www.cnblogs.com/huigelaile/p/diamondshine.html,然后了 解内存溢出和内 ...

  6. 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments

    template <typename T> class A { ); }; template<typename T> ) { /* */ } 对于类似上文代码,VS编译器会报 ...

  7. C++STL快速入门学习

    C++ STL中最基本以及最常用的类或容器无非就是以下几个: string vector set list map 下面就依次介绍一下它们,并给出一些最常见的使用方法,做到最快入门. string 首 ...

  8. pyinstaller打包问题总结

    1.pyinstaller常见用法 -w:禁止cmd窗口 -F:打包为单文件 比如:pyinstaller -w -F test.py 2.QT中UI转py文件 pyuic5 test.ui -o t ...

  9. ROW_NUM

    SELECT  *  FROM ( (SELECT ROW_NUMBER() OVER (PARTITION BY  字段1,字段2  ORDER BY 字段3   DESC) AS  TMPID), ...

  10. buf.readUInt16BE()

    buf.readUInt16BE(offset[, noAssert]) buf.readUInt16LE(offset[, noAssert]) offset {Number} 0 <= of ...