到底什么是RPC?
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?的更多相关文章
- 那些年,我们追过的RPC
1974年冬,互联网大师 Jon Postel发表了RFC674:“Procedure Call Protocol Documents,Version 2”,尝试定义一种在包含70个节点的网络中共享资 ...
- RPC之远程过程调用
一. 简介 将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 1. 类比: 将计算机服 ...
- rabbitMQ学习3-RPC远程过程调用
将一个函数运行在远程计算机上并且等待获取那里的结果,这个称作远程过程调用(Remote Procedure Call)或者 RPC. RPC是一个计算机通信协议. 比喻 将计算机服务运行理解为厨师做饭 ...
- 消息队列rabbitmq/kafka
12.1 rabbitMQ 1. 你了解的消息队列 rabbitmq是一个消息代理,它接收和转发消息,可以理解为是生活的邮局.你可以将邮件放在邮箱里,你可以确定有邮递员会发送邮件给收件人.概括:rab ...
- 消息队列rabbitmq rabbitMQ安装
消息队列rabbitmq 12.1 rabbitMQ 1. 你了解的消息队列 生活里的消息队列,如同邮局的邮箱, 如果没邮箱的话, 邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻 ...
- 一文带你搞懂 RPC 到底是个啥
RPC(Remote Procedure Call),是一个大家既熟悉又陌生的词,只要涉及到通信,必然需要某种网络协议.我们很可能用过HTTP,那么RPC又和HTTP有什么区别呢?RPC还有什么特点, ...
- 大名鼎鼎的RPC和MQ到底有啥区别和联系
RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). R ...
- Netty实现高性能RPC服务器优化篇之消息序列化
在本人写的前一篇文章中,谈及有关如何利用Netty开发实现,高性能RPC服务器的一些设计思路.设计原理,以及具体的实现方案(具体参见:谈谈如何使用Netty开发实现高性能的RPC服务器).在文章的最后 ...
- RPC原来就是Socket——RPC框架到dubbo的服务动态注册,服务路由,负载均衡演化
序:RPC就是使用socket告诉服务端我要调你的哪一个类的哪一个方法然后获得处理的结果.服务注册和路由就是借助第三方存储介质存储服务信息让服务消费者调用.然我们自己动手从0开始写一个rpc功能以及实 ...
随机推荐
- EditPlus里面自带有更改文件编码的功能
- MySql 1248 - Every derived table must have its own alias
执行一个sql语句,报错:1248 - Every derived table must have its own alias 提示说每一个衍生出来的表,必须要有自己的别名 执行子查询的时候,外层查询 ...
- win7 中使用NFS共享
转自和修改自:http://blog.sina.com.cn/s/blog_553761ef0100oevm.html 一 安装 在卸载或更改程序->打开或关闭windows的功能-> 安 ...
- 对比hive和mysql 复杂逻辑流处理
1.Mysql中可用存储过程和函数来实现复杂逻辑处理,两者的对比如下:存储过程作为可执行文件,编译一次放在数据库中,函数又返回值.可设定使用权限. 存储过程中可使用游标,声明变量.用call调用. ...
- java 23种设计模式 链接集锦
创建型抽象工厂模式 http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html工厂方法 http://www.cnblogs ...
- UVALIVE6886 Golf Bot (FFT)
题意:打高尔夫 给你n个距离表示你一次可以把球打远的距离 然后对于m个询问 问能否在两杆内把球打进洞 题解:平方一下就好 注意一下x0的系数为1表示打一杆 才发现数组应该开MAXN * 4 之前写的题 ...
- form表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)
form中只有一个input按回车键表单会自动提交 在一个form表单中,若只有一个input,按回车键表单会自动提交,但是当表单中存在多个input时,按回车键不会执行任何操作,这是form表单的一 ...
- 字符串匹配「 KMP 算法 」
引言 众所周知,字符串无论是在 OI 中还是别的计算机领域都占有比较大的比重,今天说的就是一个关于匹配字符串的算法——「 KMP 算法 」. 0x00 KMP 算法用于解决这样的一类问题:给定一个文本 ...
- 队列的头函数使用C++
queue queue模板类的定义在<queue>头文件中. 与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的 ...
- MySQL数据库grant授权命令
MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...