深入浅出的意思是什么,深入浅出的解读

近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用。在平时的日常开发中我们都在隐式或显式的使用 RPC,

1540792170168e2f3a909d1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717814970&x-signature=9HAyMbMgW57DUz3sP4Ah%2Bs2ETdk%3D

在最近的项目中,服务和微服务逐渐成为中大型分布式系统架构的主流方法,RPC正在发挥重要作用。我们在日常开发中或隐式或显式地使用RPC。一些刚进入该行业的程序员可能不了解RPC,即使他们有丰富的使用经验。原理不太清楚。缺乏原理层面的理解常常会导致开发过程中的误用。

本文分为《浅出篇》和《深入篇》两部分,其目的是对RPC的本质提供简单易懂的解析。我始终相信,只有理解了本质,应用才有可能。这样更好。

什么是RPC?

RPC,正式名称为Remote procedure Call,是一种进程间通信方式。这允许程序调用另一个地址空间(通常在共享网络的另一台机器上)中的过程或函数,而程序员无需显式编码此远程调用的详细信息。也就是说,无论程序员调用本地还是远程,程序员编写的调用代码本质上是相同的。

154079218133669407829fc~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717814970&x-signature=3HHDo4HeRaRG8rIkayej8MCEhuk%3D

RPC 的起源

RPC这个概念术语是由Bruce Jay Nelson在20世纪80年代提出的。让我们回到开发RPC的最初动机是什么。 Nelson 的论文“实现远程过程调用”提出了几点:

1.简单性:RPC概念的语义非常清晰和简单,使得构建分布式计算变得很容易。

2.高效:过程调用显得非常简单、高效。

3.通用性:在独立计算中,进程往往是不同算法部分之间最重要的通信机制。

通俗地说,一般程序员都熟悉本地过程调用,因此让RPC与本地调用完全相似,更容易接受和使用,不会出现任何问题。 Nelson 的论文发表于30 年前,他的观点在今天看来确实具有先见之明,但今天使用的RPC 框架基本上实现了这一目标。

RPC的结构

Nelson 的论文指出,一个实现RPC 的程序由五个部分组成。

154079214270690bef0cc1f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717814970&x-signature=1AbmkwbtBy5F%2B9EC5ZBRX3%2F1TzY%3D

1. 用户

2.用户存根

3.RPCR运行时

4. 服务器存根

5、服务器

这五个部分之间的关系如下图所示。

这里的用户是在客户端。当用户想要发起远程调用时,他们实际上是在本地调用用户存根。用户存根负责通过商定的协议规范对被调用的接口、方法和参数进行编码,并通过本地RPCRuntime 实例发送到远程实例。远程RPCRuntime实例收到请求后,将其传递给服务器stub进行解码,发起本地调用,并将调用结果返回给用户。

RPC 实现

Nelson论文中提出的实现结构也成为了后续参考的标准模板。我大约10年前刚接触分布式计算时使用的CORBAR实现结构与此基本类似。为了解决不同平台上的RPC,CORBAR 使用IDL(接口定义语言)来定义远程接口并将其映射到特定的平台语言。此后,大多数跨语言平台RPC 本质上都采用了这种方式,包括大家熟悉的Web 服务(SOAP)和最近的开源Thrift。其中大部分是通过IDL定义的,IDL提供了映射和生成各种语言平台的用户和服务器存根的工具,并通过框架库提供RPCRuntime支持。然而,每个RPC框架都定义了自己不同的IDL格式,这似乎进一步增加了程序员的学习成本(和精力)。 Web服务努力建立行业标准,但标准规范复杂且低效。如果没有,Thrift 等人。不需要更高效的RPC 框架。

IDL 是RPC 最后手段的跨平台语言实现。解决更广泛的问题不可避免地会导致更复杂的解决方案。有了同一平台内的RPC,显然不需要开发Java原生的RMI等中间语言。这种语言对于Java程序员来说更加直接简单,降低了其使用的学习成本。目前市场上可用的RPC 框架被认为是多种多样的,据称有100 个流派。大家应该根据实际使用场景慎重选择型号,但我认为至少应该考虑以下几点:

1、性能指标

2. 我需要多语言平台吗?

3. 你的内网是开放的还是公网是开放的?

4、开源RPC框架本身的质量和社区活跃度

总结

《浅出篇》 这可能就到此结束了。《深入篇》 详细介绍了RPC 框架必须实现的基本功能及其可以实现的目标。我们还将以Java 平台上实现RPC 框架为例。分析您需要考虑的实现。

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/85066.html

(0)
小条's avatar小条
上一篇 2024年6月1日 上午10:49
下一篇 2024年6月1日 上午10:49

相关推荐

  • 洛阳seo

    想要让自己的网站在搜索引擎中脱颖而出,吸引更多的流量和客户吗?那就不能错过今天我们要介绍的话题——洛阳SEO。什么是搜索引擎优化?洛阳SEO市场又是怎样的情况?洛阳SEO公司排名如…

    行业资讯 2024年3月20日
    0
  • 域名被墙要去哪解决,防止封域名

    想象一下投资一个域名,然后很快发现该域名被屏蔽了。这意味着您的投资可能会受到影响或者您可能会蒙受损失。那么如何才能避免这种情况的发生呢?今天我们就来告诉大家如何避免投资被屏蔽的域名…

    行业资讯 2024年5月7日
    0
  • 租赁服务器多少钱一个月

    想要拥有强大的服务器,却又不想花费大量的资金购买?那么云服务器将是您的最佳选择。什么是云服务器?它具有令人惊叹的优势和广泛的应用场景,可以满足您不同的需求。但是,租赁价格究竟会是多…

    行业资讯 2024年3月19日
    0
  • 域名过户流程详解?如何将新网域名转让给他人

    你是否曾经想过如何将新网域名转让给他人?或许你已经听说过域名过户流程,但并不了解它的具体内容。今天,我们就来为大家详细解读这一话题。什么是域名过户?为什么需要进行域名过户?域名过户…

    行业资讯 2024年4月11日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注