RPC机制

        前面几篇文章一直提到NFS客户端和服务器之间采用RPC进行通信,客户端向服务器发送RPC请求,服务器对客户端的身份进行验证,验证通过后处理RPC请求,最后将结果封装到应答消息中发送给客户端。这篇文章中就稍微讲讲RPC机制的工作原理。

1.RPC原理

        RPC机制基于传统的函数调用原理。在编程过程中,我们会将一个大功能分割成若干个小功能,每个小功能用一个函数实现,通过函数调用将这些函数连接起来。一般而言,这些函数必须运行在同一台机器中。而RPC机制提供了一种方法,它可以将函数分散到不同的机器中,允许机器A中的main函数调用机器B中的func4。


        这就很有意思了,一台机器上的函数竟然可以调用另一台机器上的函数。如果func4的功能是删除一个文件,那么我们不就可以在main函数中调用func4删除机器B中的文件了吗?事实上,NFS文件系统就是这么干的。那么func4是如何知道要删除哪个文件呢,对了,就是通过参数。main函数将文件路径作为参数传递给func4,func4删除文件后将结果作为返回值传回main函数,就是这么简单。

        但是,我们不可能只删除文件,还可能创建新文件、读取文件数据、查看文件属性,我们有很多要求。没问题,我们可以定义一堆函数,这些函数构成了一个函数集合,每个请求都有相应的处理函数。机器A和机器B是两台不同的机器,可能运行不同的系统(如机器A运行Linux,机器B运行Windows),如果让Linus和Bill Gates就这些函数名称达成一致好像也不是一件容易的事情,而且他们也根本没有时间管这些小事。那好办,我们用编号表示函数,比如编号为0的函数负责删除文件,编号为1的函数负责创建文件,至于这些函数如何命名,就由操作系统决定了。这里还有一个问题,现实世界中有很多应用使用了RPC机制,如NFS、MOUNT、NLM服务,每个应用中的函数都从0开始编号,那么当机器A对机器B说:"请执行编号为1的函数",那么机器B执行哪个服务中编号为1的函数呢?为此,我们为各种服务分配了一个编号,比如NFS服务的编号是100003,MOUNT服务的编号是100005,NLM服务的编号是100021。最后一个问题,我们在编程时经常多函数进行修改,会形成不同的版

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RPC(Remote Procedure Call)是一种用于分布式系统间通信的机制。它允许一个系统中的应用程序调用另一个系统中的远程服务,就像调用本地服务一样。RPC的核心思想是将不同系统间的网络通信、数据传输和序列化等复杂细节进行封装,使开发者可以像调用本地函数一样方便地调用远程函数。 Dubbo是一种基于RPC机制的分布式服务框架。它由阿里巴巴集团开发,用于解决大规模分布式系统中的服务治理问题。Dubbo提供了服务注册与发现、负载均衡、容错处理、服务路由等功能,使得分布式系统的开发和管理更加简单高效。Dubbo框架支持多种远程通信协议,如HTTP、TCP等,可根据实际场景选择适合的协议。 Dubbo的架构由三层组成:服务提供者、注册中心和服务消费者。服务提供者将自己提供的服务注册到注册中心,服务消费者从注册中心获取服务的地址列表,并通过远程调用的方式调用服务提供者提供的功能。Dubbo框架还支持服务的负载均衡,使得调用请求可以在多个服务提供者之间进行分发,提高系统的并发能力和稳定性。 总之,RPC机制和Dubbo框架都是用于构建分布式系统的重要工具。RPC机制提供了远程调用的能力,使得分布式系统中的不同应用程序可以互相调用;而Dubbo框架在RPC机制的基础上实现了更加便捷的服务治理功能,简化了分布式系统的开发和管理过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值