07 远程服务调用(上):从本地方法到远程方法的桥梁
你好,我是周志明。从今天这一讲开始,我们就进入了课程的第二个模块:架构师的视角。
“架构师”这个词,其实指向非常宽泛,你可以说做企业战略设计的是架构师,也可以说做业务流程分析的是架构师。而在这门课程中,我所针对的架构师视角,特指软件系统中技术模型的系统设计者。在这个模块当中,我会带你系统性地了解,在做架构设计的时候,架构师都应该思考哪些问题、可以选择哪些主流的解决方案和行业标准做法,以及这些主流方案都有什么优缺点、会给架构设计带来什么影响,等等。
理解了架构师的这些职责,你对“架构设计”这种听起来就很抽象的工作,是不是有个更具体的认识了?
从今天开始,我会花两讲的时间,和你一起学习“远程服务调用(Remote Procedure Call,RPC)”这个话题。我会尽可能地从根源到现状、从表现到本质,为你解释清楚RPC的一些常见的问题。
那今天,我们就先从“什么是RPC”开始,一起去学习“远程服务”这个构建分布式系统的最基本的前置条件,看看它是如何出现、如何发展的,以及当前业界的主流实现手段。
其实,RPC这个词儿在计算机科学中已经有超过40年的历史了,肯定不是一个新概念。但是直到今天,我们还是会在知乎等网站上,看到很多人提问“什么是RPC?”“如何评价某某RPC技术?”“RPC好还是REST好?”,仍然“每天”都有新的不同形状的RPC轮子被发明出来,仍然有层出不穷的文章,去比对Google gRPC、Facebook Thrift等各个厂家的RPC技术的优劣。