`
thecloud
  • 浏览: 911731 次
文章分类
社区版块
存档分类
最新评论

Glusterfs之rpc模块源码分析(上)之RPC概述

 
阅读更多

我的新浪微博:http://weibo.com/freshairbrucewoo

欢迎大家相互交流,共同提高技术。


一、RPC概述

第一节、RPC结构网络

RPCRemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCPUDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

目前,有多种RPC模式和执行。最初由Sun公司提出。IETFONC宪章重新修订了Sun版本,使得ONCRPC协议成为IETF标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

第二节、协议结构

远程过程调用(RPC)信息协议由两个不同结构组成:调用信息和答复信息。信息流程如下所示:

  RPC:远程过程调用流程

  RPC调用信息:每条远程过程调用信息包括以下无符号整数字段,以独立识别远程过程:

  程序号(Programnumber

  程序版本号(Programversionnumber

  过程号(Procedurenumber

  RPC调用信息主体形式如下:

  structcall_body{

  unsignedintrpcvers;

  unsignedintprog;

  unsignedintvers;

  unsignedintproc;

  opaque_authcred;

  opaque_authverf;

  1parameter

  2parameter...}

  RPC答复信息:RPC协议的答复信息的改变取决于网络服务器对调用信息是接收还是拒绝。答复信息请求包括区别以下情形的各种信息:

  RPC成功执行调用信息。.

  RPC的远程实现不是协议第二版,返回RPC支持的最低和最高版本号。

  在远程系统中,远程程序不可用。

  远程程序不支持被请求的版本号。返回远程程序所支持的最低和最高版本号。

  请求的过程号不存在。通常是呼叫方协议或程序差错。

  RPC答复信息形式如下:

  enumreply_statstat

  {MSG_ACCEPTED=0,

  MSG_DENIED=1}

第三节、工作原理

运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

  1.调用客户端句柄;执行传送参数

  2.调用本地系统内核发送网络消息

  3.消息传送到远程主机

  4.服务器句柄得到消息并取得参数

  5.执行远程过程

  6.执行的过程将结果返回服务器句柄

  7.服务器句柄返回结果,调用远程系统内核

  8.消息传回本地主机

  9.客户句柄由内核接收消息

  10.客户接收句柄返回的数据

第四节、RPCOVERHTTP

MicrosoftRPC-over-HTTP部署(RPCoverHTTP)允许RPC客户端安全和有效地通过Internet连接到RPC服务器程序并执行远程过程调用。这是在一个名称为RPC-over-HTTP代理,或简称为RPC代理的中间件的帮助下完成的。

RPC代理运行在IIS计算机上。它接受来自InternetRPC请求,在这些请求上执行认证,检验和访问检查,如果请求通过所有的测试,RPC代理将请求转发给执行真正处理的RPC服务器。通过RPCoverHTTPRPC客户端不和服务器直接通信,它们使用RPC代理作为中间件。

分享到:
评论

相关推荐

    gluster源码分析

    ### GlusterFS源码分析 #### 一、GlusterFS概览 GlusterFS是一种分布式文件系统,设计用于实现高性能和高扩展性。它能够支持大规模的数据存储需求,适用于多种应用场景,如云存储、大数据处理等。在进行深入的源码...

    glusterfs的那些事-3.4.11

    《glusterfs详解:模块化设计与核心概念》 GlusterFS是一款开源的分布式文件系统,以其模块化、堆栈式的设计理念,为各种应用场景提供了高度定制化的解决方案。本文将深入探讨glusterfs中的关键概念——`xlator`,...

    glusterfs 结构体系分析

    GlusterFS作为一款分布式文件系统,其设计的精妙之处在于高度模块化的架构。这种设计不仅简化了系统的理解和扩展,还确保了其在分布式存储领域的独特地位。GlusterFS的体系结构主要分为几个关键部分,包括客户端与...

    ansible-glusterfs:Ansible GlusterFS模块

    Ansible GlusterFS模块,用于管理GlusterFS卷。 样本剧本 --- - hosts: gluster-test remote_user: root tasks: - name: create gluster volume glusterfs: action=create name=test1 brick=/bricks/brick1/g1 ...

    GlusterFS 介绍

    ### GlusterFS概述 GlusterFS是一种开源分布式文件系统,旨在为数据中心提供大规模的存储能力和高性能的访问速度。它通过将多个物理或虚拟服务器上的本地文件系统合并成一个统一的命名空间,实现了数据的集中管理和...

    GlusterFS分析报告.pdf

    在深入分析GlusterFS之前,需要先了解其基本架构和关键特性,这对于理解其如何作为一个网络文件系统工作的内部机制至关重要。GlusterFS的主要版本1.3.0是一个成熟的版本,已经支持主流的Linux发行版,包括Fedora、...

    Glusterfs文档分析

    关于Glusterfs分布式文件系统的总结

    GlusterFS 之内存池(mem-pool)使用实例分析

    ### GlusterFS之内存池(mem-pool)使用实例分析 #### 一、概述 上一篇文章深入探讨了GlusterFS内部内存池(mem-pool)的实现机制与原理,本文将在此基础上进一步分析GlusterFS如何具体应用这项技术,并通过具体的...

    GlusterFS 101培训课程

    研发人员在本课程中将深入了解GlusterFS的软件架构和源码结构,掌握Xlator的工作原理及其功能扩展的研发。研发人员还将学习如何进行系统性能优化研发、系统管理和监控研发,以及自动负载均衡、复制卷脑裂问题和纠删...

    GlusterFS的分析与应用【毕业论文】

    在邓威的这篇毕业论文中,他可能详细分析了GlusterFS的源代码,探讨了其内部工作机制,以及在实际应用中的优化策略。他还可能对GlusterFS与其他分布式文件系统的比较进行了研究,以突出其优势和适用场景。 综上所述...

    GlusterFS学习笔记.docx

    GlusterFS 学习笔记 GlusterFS 是一种开源的分布式文件系统,它可以将多...GlusterFS 是一种功能强大且灵活的分布式文件系统,能够满足大规模数据存储和分析的需求,并提供高性能、可扩展性和高可用性的存储解决方案。

    GlusterFS分布式文件系统

    GlusterFS之所以受到青睐,是因为它具有以下特点: 1. POSIX接口兼容性:GlusterFS兼容POSIX标准接口,这意味着大多数基于POSIX的操作系统都可以无缝运行GlusterFS。 2. 支持多种协议:除了传统的NFS和CIFS之外,...

    glusterfs 管理手册

    GlusterFS(Gluster File System)是一种开源的分布式文件系统,其设计目标是扩展性非常强,能支持数PB(Petabytes)级别的大容量存储。它通过网络将多台服务器的物理磁盘聚合成一个单一的分布式存储池,并将数据...

    glusterfs 5.0

    在Ubuntu 18.04上安装GlusterFS 5.0,可以为用户提供可靠的数据管理和访问能力,尤其适合于需要高并发读写性能和跨服务器数据共享的环境。 首先,让我们了解一下GlusterFS的基本架构。GlusterFS是由多个物理或虚拟...

    glusterfs安装包-centos6.6

    glusterfs安装包-centos6.6

    glusterfs3.7.9

    - **GlusterFS Client**:提供对GlusterFS的访问接口,通常安装在需要访问GlusterFS的客户端机器上。 - **Management Tools**:如glusterd、gluster volume manager等,用于监控、管理和维护GlusterFS集群。 - **...

    glusterfs.tar.gz

    7. `glusterfs-fuse-7.5-1.el7.x86_64.rpm`:FUSE(Filesystem in Userspace)接口,使得GlusterFS能够挂载到用户空间,从而在普通文件系统上使用。 8. `glusterfs-api-7.5-1.el7.x86_64.rpm`:GlusterFS API,允许...

    GlusterFS系统管理手册中文版

    GlusterFS是一种开源的分布式文件系统,它允许用户在大规模的硬件集群上构建高可用、高性能的存储解决方案。这篇手册由酷抉小生翻译并加入了个人理解和实践经验,旨在帮助读者更好地理解和应用GlusterFS。 文档说明...

Global site tag (gtag.js) - Google Analytics