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

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

Like (0)
小条的头像小条
Previous 2024年6月1日 上午10:49
Next 2024年6月1日 上午10:49

相关推荐

  • 小牛被顶伤了怎么办,小牛会被拦吗

    除了提高服务器的安全性外,还应该注意提高网站本身的安全性。我们建议使用HTTPS协议来保证您网站数据传输的安全,并定期检查您网站的代码,及时修复潜在的漏洞。 6.维护良好的网络形象…

    行业资讯 2024年5月6日
    0
  • 三大AI平台罕见集体瘫痪

    “AI平台怎么了?”这是不少AI用户昨晚都在问的问题。 美东时间周二(6月4日),OpenAI旗下ChatGPT、AnthropicAI旗下Claude和Perplexity竟然同…

    2024年6月5日
    0
  • 济南网络优化

    济南网络优化,这是一个充满魅力的词汇。当我们谈论网络优化时,我们不仅仅是在谈论济南这座城市,更是在谈论一种重要的技术。那么什么是网络优化?它又有着怎样的重要性?关键技术又有哪些?实…

    行业资讯 2024年4月14日
    0
  • 服务器被攻击原因,服务器被攻击后会怎么样

    许多攻击者利用文件上传功能上传恶意脚本或木马来控制服务器或窃取用户信息。因此,您需要限制上传的文件类型和大小,并对上传的文件进行检测和过滤。 6.使用HTTPS协议 HTTPS协议…

    行业资讯 2024年5月9日
    0

发表回复

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