为了账号安全,请及时绑定邮箱和手机立即绑定
慕课专栏

目录

索引目录

白话RPC框架原理及其实现

原价 ¥ 68.00

立即订阅
02 技术时代变迁,RPC应运而生
更新时间:2019-12-03 09:57:24
才能一旦让懒惰支配,它就一无可为。——克雷洛夫

前言

​ 曾经,计算机只是用来计算,如今,计算机拥有无限可能。这是每一代人不断探索的成果。在这飞速发展的大环境下,各行各业都有着不同的时代。而作为一个技术人,我们也有属于自己的技术时代。每一项技术都不会凭空出现,无论是否成功,它都有出现的价值。一项技术的产生或许是因为原有的技术已经不能适应实际需求,或许是因为前瞻者的引导。我们在学习一门技术的时候,应该去了解它的背景和由来。

​ 本文将RPC的诞生分为三个阶段来讲解。这三个阶段分别是自给自足阶段、闭关锁国阶段以及走出去阶段。分别对应中国历史的部分发展时期。

自给自足阶段

​ 在中国历史上,存在自给自足的时期,那个时候人们守着自己的一亩三分地,生活的必需品都由自己创造。计算机也存在同样的一段时期。那个时候一台机器上只有一个CPU,虽然CPU会分时间片执行多个进程,但是每一时刻却仅能有一道程序执行,也就是每个时刻只有一个进程可以占用CPU资源。

​ 在这个阶段,计算机系统关注的是如何去保证每个进程可以被执行并且是被高效地执行,而不会出现个别进程“饥饿”的情况。正因为有这样的难题,处理器也出现了各种调度策略,比如先来先服务策略、最短进程优先策略、最短剩余时间策略等等,同时进程也增加了优先级,调度程序总是优先选择具有较高优先级的进程。

闭关锁国阶段

​ 时代永远在前进,很快人们就不满足于眼前的生活,越来越多的新事物诞生,比如手工艺品等。人们为了提高效率和质量,就会有类似于社会分工的现象出现,比如一家是做畜牧业,一家是做纺织的,另一家是做工艺品的,那么他们之间会用自己的产物去交换别家的产物,这样就不用一户人家又要会纺织,又要会耕种,效率得到了显著的提升,当然后面也有了货币的出现。

​ 再回到我们的计算机发展,计算机也很快就出现了多处理器系统,也就是一台机器上拥有多个CPU。多处理器系统彼此可交换数据,并且共享内存、I/O通道、 控制器以及外部设备,线程可以真正做到并行处理。显而易见,并行处理会大大提高计算机性能。但是如果每个处理器都自顾自执行进程,跟一台机器只有一个CPU没什么区别,多处理器系统出现,主要是支持了进程间通信。也就是常说的IPC。

IPC(Inter-Process Communication): 进程间通信,指至少两个进程或者线程间传送数据或者信号的技术或方法。主要的IPC 方法有文件、信号、消息队列、管道、命名管道、信号量、共享内存、Berkeley套接字等。

​ 可以看到进程间通讯还是存在很多方法的,其实这所有的通信方式源于一个现在热门的词,叫做共享。我们现在有共享单车,共享充电宝等,在机器内部,每个进程无非是想要共享资源。比如程序很复杂,被拆分成三个较为独立的部分执行,如果只在一个CPU里执行,那只能按照A、B、C的执行顺序来占用CPU资源。如果拥有两个CPU,就可以让A和B同时执行,每个进程的结果通过IPC方式进行传递,最后汇总得出最终结果。这样做大大提高了CPU利用率。

走出去阶段

​ 如果把一台机器比喻成一个国家,那么只在同一台机器上进行进程通信有点类似于闭关锁国。闭关锁国带来的危害可想而知,没有办法跟别的国家进行贸易交流,无法学习别的国家的先进之处,导致经济落后,国家衰亡。在技术时代也是如此,如果一直在单台机器上捣鼓性能和效率,总是会出现提升缓慢,趋于极限。如果多台机器能够一同协作,就能够创造更多的可能性。这一想法在Socket出现后得以实现。

​ 在上一部分提到的IPC中有一种方式叫做Berkeley套接字(Socket)。它是一种应用程序接口,是由加利福尼亚的伯克利大学开发,最初被用于Unix系统。它其实在计算机中提供了一个通信端口,两台具有Socket接口的计算机可以通过对应端口进行通信。

​ 从二十世纪60年代开始到90年代初,网络不断发展,Socket出现后被作为了TCP/IP 通信的实现基础,更是整个网络世界通信的基石。网络时代的来临,也为机器间协作带来了解决方案,之前的IPC方式只能在单机中应用,但是基于网络,我们可以共享多台机器的系统资源,实现机器与机器之间的进程间通信。

​ 技术时代变迁,RPC应运而生。RPC 这个概念术语在二十世纪 80 年代由Bruce Jay Nelson提出。RPC (Remote Procedure Call)叫做远程过程调用,它是利用网络从远程计算机请求服务。可以理解为把程序的一部分放到远程计算机上去执行,同样也做到了共享系统资源的目的。当然RPC概念的出现,也是为了建立分布式计算更加容易。

​ RPC的出现并不是所有人都支持,因为虽然RPC给分布式带来了不少的优势,但是也产生了不少弊端。比如1987年,Tanenbaum教授发表了论文《A Critique of the Remote Procedure Call Paradigm》,认为通信的完全透明是不可能的,而不能完全透明意味着对于程序员是部分透明,这样反而会增加程序员工作的复杂度。

​ 不管怎么样,RPC带着质疑,一路走来,冲破原有的思想,为分布式计算提供做出了不可磨灭的贡献,证实了RPC的出现是正确的。技术永远在不断翻新,只要能够适应大环境的需求,它就能够走得很远。

后记

​ 本文希望通过中国历史的发展来对照RPC的发展,让读者能更好地理解RPC出现的原动力就是共享系统资源。从单处理器系统到多处理器系统再到分布式,技术时代不断在前进,新颖的技术也在不断涌现。在接受一项新技术的时候,去追溯一下它出现的背景,会增加对技术本身的理解程度。下一小节将讲述RPC到底是什么。

}
立即订阅 ¥ 68.00

你正在阅读课程试读内容,订阅后解锁课程全部内容

千学不如一看,千看不如一练

手机
阅读

扫一扫 手机阅读

白话RPC框架原理及其实现
立即订阅 ¥ 68.00

举报

0/150
提交
取消