原文地址:

https://blog.csdn.net/wangpeng138375/article/details/8169071

=================================================================

Sun的RPC服务

ONC RPC(Open Network Computing Remote Procedure Call)是一个由Sun Microsystem公司开发的开源的RPC框架。它是用于UNIX系统的RPC事实标准。ONC RPC已经被证明是一项高性能的技术。包括Solaris,AIX,HP UX,Linux等在内的大多数UNIX平台都支持RPC服务。

在传统的编程概念中,过程是由程序员在本地编译完成,并只能局限在本地运行的一段代码,即其主程序和过程之间的运行关系是本地调用关系,这种结构在网络日益发展的今天已无法适应实际需求。众所周知,传统过程调用模式无法充分利用网络上其他主机的资源(如CPU、Memory等),也无法提高代码在实体间的共享程度,使得主机资源大量浪费。RPC很好地解决了传统过程所存在的一系列弊端。通过RPC可以充分利用非共享内存的多处理器环境(例如通过局域网连接得多台工作站),这样可以简便地将应用分布在多台工作站上,应用程序就像运行在一个多处理器的计算机上一样,因此可以方便的实现过程代码共享,提高系统资源的利用率,也可以将以大量数值处理的操作放在处理能力较强的系统上运行,从而减轻前端机的负担。

RPC其实也是种C/S的编程模式,其工作过程如图2-3所示,大致包含以下几个步骤:

(0)    服务器启动,它向所在主机上的端口映射器(port mapper)注册自身。客户然后启动,它调用clnt_create,该函数则与服务器主机上的端口映射器联系,以找到服务器的临时端口。clnt_create函数还建立一个与服务器的TCP连接。

(1)    客户调用一个称为客户端存根(Client stub)的本地过程(存根由rpcgen工具生成)。对于客户来说,客户程序存根看起来像是它想要调用的真正的服务器过程。存根的目的在于把待传递给远程过程的参数打包,可能的话把它们转换成某种标准格式,然后构造一个或多个网络消息。把客户提供的参数打包成一个网络消息的过程称为集结(marshaling)。客户程序的各个例程和存根通常调用RPC运行时函数库中的函数。

(2)    这些网络消息由客户程序存根发给远程系统。通常需要一次陷入本地内核的系统调用(例如write或是sendto)。

(3)    这些消息传送到远程系统,通常使用TCP或UDP协议。

(4)    一个服务器存根(server stub)过程一直在远程系统上等待客户的请求。它从这些网络消息中解散(unmarshaling)出参数。

(5)    服务器程序存根执行一个本地过程调用以激活真正的服务器函数,传递给该函数的参数是它从来自客户的网络消息中解散出来的。

(6)    当服务器过程完成时,它向服务器程序存根返回其返回值。

(7)    服务器存根在必要时对返回值作转换,然后把它们集结到一个或多个网络消息中,以便发送回客户

(8)    这些消息通过网络传送回客户。

(9)    客户程序存根从本地内核中读出这些网络消息(如read或recvfrom)。

(10)对返回值进行可能的转换后,客户程序存根最终返回客户函数

========================================================================

【转载】sun的rpc ——rpcbind(nfs文件系统中的rpc)的更多相关文章

  1. 嵌入式 hi3518平台uboot引导nfs文件系统

    首先贴出来我的bootargs的设置(注没有换行符!!!): setenv bootargs noinitrd mem=64M root=/dev/nfs init=/linuxrc rw nfsro ...

  2. 在这个应用中,我使用了 MQ 来处理异步流程、Redis 缓存热点数据、MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ、MySQL 持久化的数据也会存在于一个分布式文件系统中,他们之间的调用也是需要用 RPC 来完成数据交互的。

    在这个应用中,我使用了 MQ 来处理异步流程.Redis 缓存热点数据.MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ.MySQ ...

  3. NFS 文件系统

    NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的. NFS服务的主要配置文件 /etc/exports /etc/exports文件内容格式: <输出目 ...

  4. NFS文件系统制作

    内核:              linux-3.0 u-boot:          2010.09 开发板:         fl2440(s3c2440主芯片) 交叉编译器:   2011.11 ...

  5. NFS文件系统存储服务部署

    1 NFS介绍 1.1 什么是NFS? NFS是Network File System的缩写,中文名称是网络文件系统.它的主要功能是通过网络让不用的主机系统之间可以共享文件或者目录.NFS客户端通过挂 ...

  6. 网络文件系统nfs文件系统使用(很全面)

    一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ...

  7. 网络文件系统nfs文件系统使用(比较全面)

    一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ...

  8. 客户端挂载NFS服务器中的共享目录(用户后台上传图片与前台上传图片放在同一个服务器上)

    服务器端使用showmount命令查询NFS的共享状态 # showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错 # showmount -a //显示已经与客 ...

  9. 嵌入式环境:挂载开发板根NFS文件系统失败

    挂载开发板根NFS文件系统的时候,发现了下面的问题: Looking up port of RPC 100003/2 on 192.168.2.109rpcbind: server 192.168.2 ...

  10. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

随机推荐

  1. Niagara 物联网技术基础应用(文章修复中,不定时更新)

    新手指南 前言 鉴于市面上有关Niagara物联网技术资料较少,笔者结合自生参加竞赛的经历编写此指南,该指南旨在让新手快速上手Niagara workbench 主要分以下几个模块讲解: 物联网软件平 ...

  2. 《史记 XuYu列传》

    前言 甲辰年二月十九,余记挂友人须臾.大醉,作此篇以悼念故友.忆往昔同窗之情,言语无不有经天纬地之能,举手投足间便可斩敌方上将.能文能武,乃当世之奇才,其言语中有大智慧.(文体并不重要) 吃饭时 Xu ...

  3. java的ConCurrentHashMap

    一般的应用的编程,用到ConCurrentHashMap的机会很少,就象大家调侃的一样:只有面试的时候才用得着. 但还是有. 网上关于这个的资料,多如牛毛,大部分是原理分析和简单例子. 原理的核心就一 ...

  4. Linux中的环境变量PS1,打造你的专属终端

    文章目录 介绍 PS1的格式 设置字体样式 举例 小建议 进阶 介绍 好看的终端是怎么做的呢?通过PS1这个环境变量! PS1的格式 PS1='[\u@\h \w]\$ ' 样式: 解释: [是普通字 ...

  5. Android 官方AB Update说明

    Android 官方AB Update说明 A/B 系统更新,也称为无缝更新,用于确保可运行的启动系统在无线 (OTA) 更新期间能够保留在磁盘上.这样可以降低更新之后设备无法启动的可能性,也就是说, ...

  6. Ubuntu 22.04单机部署K3s

    安装docker 从docker官网获取最新的一键安装脚本,安装docker运行环境 curl -fsSL https://get.docker.com -o get-docker.sh sudo s ...

  7. debian12 安装ch343驱动

    前言 最近心血来潮,装了一台debian12玩,安装完毕arduino后发现没有ch343驱动,倒是在 ls /lib/modules/6.1.0-13-amd64/kernel/drivers/us ...

  8. 2023年台州市初赛Misc

    2023年台州市初赛Misc 这是神马 冰蝎流量,找到key <?php @error_reporting(0); session_start(); $key="144a6b22963 ...

  9. Java BigDecimal 算术运算

    算术运算 BigDecimal bignum1 = new BigDecimal("10"); BigDecimal bignum2 = new BigDecimal(" ...

  10. BootStrap Table 添加序列号

    js $('#table').bootstrapTable({ striped: true,//隔行换色 columns: [ { field: '', title: '序号', sortable: ...