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. Android PopupWindow使用时注意

    项目中使用PopupWindown出现的坑 1.部分设备,PopWindow在Android4.0后版本,出现NullPointerException调用以下方法可解决, fixPopupWindow ...

  2. 浮动布局demo

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. C/C++ static、extern

    一.static本质作用 与static相对的关键字是auto,两者是一对.我们一般声明变量,如:int a,其实都是auto int a,只是auto省略了而已,但是static不能省略.要理解st ...

  4. re模块,正则表达式

    re模块 作用:取文本或者字符串内你所需要的东西 正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功:一旦有匹配不成功的字符则匹配失败. ^叫做元字符,元 ...

  5. Redis系列(六)--为什么这么快?

    Redis作为一个基于key-value的NoSQL数据库,最显著的特点存取速度非常快,官方说可以达到10W OPS,但是Redis为何这么快? 1.开发语言 Redis使用C语言进行编写的,而Uni ...

  6. crontab定时清理日志

    1.创建shell脚本 vi test_cron.sh #!/bin/bash#echo "====`date`====" >> /game/webapp/test_c ...

  7. /etc/updatedb.conf配置文件

    [root@localhost ~]# vi /etc/updatedb.conf PRUNE_BIND_MOUNTS = "yes" PRUNEFS = "9p afs ...

  8. linux vim 常用操作

    vim 字符级 上k下j左h右i,键盘的方向键也可以移动 单词级 b上个单词首字母 w下个单词首字母 e下个单词的尾字母 行级 0行首 $行尾 删除 dd 删除光标所在行 文档级 gg 文档首行,首个 ...

  9. NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)

    题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...

  10. POJ2454——Jersey Politics

    POJ2454——Jersey Politics 题目大意: 在泽西奶牛和荷斯坦奶牛的最新普查中,威斯康星奶牛在谷仓中获得了三个档位. 泽西奶牛目前控制着国家重新分配委员会. 他们想将国家分为三个相当 ...