RPC指的是远程服务调用。RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。rpc框架应该提供对于远程服务的透明化调用,不需要显式的区分本地or远程。说得通俗点,rpc应该能够做到像调用本地方法一样调用远程服务。
rpc调用和方法调用一样,对于调用者来说,分为同步和异步两种方式(同步异步本身就是一个很大的课题),这里不细说同步和异步的概念。
同步自不必多说,正常的http调用,对于浏览器来说,必须等到服务端响应才能继续(非AJAX)
异步就是AJAX
为什么这里要说这个,在这里抛个砖,后续当我们说到dubbo做SOA实践的时候,会讨论异步调用和同步调用对服务器吞吐能力的影响,这也可以参考我的另一篇文章http://my.oschina.net/zhenglingfei/blog/492883
上图来自文章1,给出了一个rpc框架的思路,其实很多的rpc框架都是这样做的,至少我所了解的是这样(dubbo以及我曾经公司的rpc框架)。一般的过程是本地应用调用远程API(存在于本地),实际的调用工作会由初始化时生成的本地代理执行,本地代理通常会根据根据一些既定策略(路由,容错等)选择实际的远程服务进行通信,而服务端则是一个反向的过程
而一个rpc框架,最主要涉及的几大模块就是远程API,调用代理,协议和编解码,网络传输服务,实际调用几个过程。后续分析dubbo时也会从这些方面入手。
1.http://blog.csdn.net/mindfloating/article/details/39474123 对于rpc的描述很清楚
原文:http://my.oschina.net/zhenglingfei/blog/521567