到底什么是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功能以及实 ...
随机推荐
- 我发现了新大陆--python的嵌入式开发
接上篇的文章,固件什么的都调试的很舒服,我突然发现了一个很好的网站,他是卖python开发板的,但是我从中窃取了很多宝贝,太舒服了! 不得不说,这个网站做的已经相当漂亮了,而且资料都是开放的,大爱! ...
- 自定义封装 banner 组件
1. 效果图预览 2.基本功能 一个简单方便的轮播图组件,基于viewpager 基础上进行的封装.可设置 项目中图片,网络图片, View:支持循环自动播放,手势滑动切换,item点击事件,可设置 ...
- C# 调用Mysql 带参数存储过程
使用C#调用Mysql 带参数的存储过程: 1.创建带参数的存储过程:USP_Temp_Test 2.两个参数:IN 参数为 P_XML , OUT 参数为 P_ErrorOut 3.C#代码调用该存 ...
- cookie的应用——浏览记录
实体类 package entity; public class Product { private String id; private String proName; private String ...
- Linux系统调用--getrusage函数详解
Linux系统调用--getrusage函数详解 功能描述: 获得进程的相关资源信息.如:用户开销时间,系统开销时间,接收的信号量等等; 用法: #include <sys/t ...
- CPU位数、操作系统位数、机器字长、C/C++基本数据类型长度
1.CPU位数=CPU中寄存器的位数=CPU能够一次并行处理的数据宽度(位数)=数据总线宽度: //现在的计算机处理器一般都是64位,这是硬件的事. 2.CPU为了实现其功能设计了指令集,即是CPU的 ...
- vue项目中添加百度地图功能及解决遇到的问题详解
第一步,在百度地图开放平台 申请密钥 (如果有密钥可以省略此步骤,朋友有也可以借) 地址:http://lbsyun.baidu.com/ 第二步,创建应用并填写表单(下面链接可参考) http:// ...
- 04JavaScript程序语句
JavaScript程序语句 2.6程序控制流程 2.6.1选择结构 if <逻辑表达式> 语句 else 语句 if <逻辑表达式> { 语句组 } else { 语句组} ...
- Java基础概念语法
Java基础概念语法 注释 单行注释 //行注释说明 多行注释 /* 多行注释说明 */ 文档注释 /** *@author 程序的作者 *@version 源文件的版本 *@param 方法的参数说 ...
- 【原】thinkphp实现存储session至redis
Thinkphp\Library\Think\Session\Driver中新建redis缓存文件:Redis.class.php Thinkphp\Common\function.php 中 fun ...