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

近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 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

相关推荐

  • 万网买了域名能退吗

    想必大家都有过在万网买域名的经历,但是万网买了域名能退吗?这是一个备受关注的问题。今天,我们就来探讨一下这个话题。什么是域名?域名是网站的地址,类似于我们现实生活中的门牌号码,它是…

    行业资讯 2024年4月12日
    0
  • oem版本和普通版本的区别?

    你知道OEM版本和普通版本有什么区别吗?在网络互联网服务器行业中,OEM版本和普通版本是两种常见的产品,它们都具有一定的功能,但价格却存在着明显的差异。那么,究竟什么是OEM版本和…

    行业资讯 2024年4月8日
    0
  • 网址被微信屏蔽怎么解封,微信防屏蔽网址生成

    网站被屏蔽的企业不仅会影响促销和用户访问,而且还必须花费额外的精力和金钱来解决屏蔽问题。例如,购买替代域名和技术调整会增加维护成本。 6、对用户体验的影响 微信是用户日常使用最多的…

    行业资讯 2024年5月10日
    0
  • app防攻击,app怎么防止被攻击

    修复:开发人员应采用安全身份验证机制,例如使用加密通信协议和多因素身份验证方法,以提高安全性。用户还应使用强密码,并小心不要登录公共网络。 4. 不安全的第三方库 许多应用程序使用…

    行业资讯 2024年5月10日
    0

发表回复

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