1,RPC概念

Posted 程序员60秒看世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1,RPC概念相关的知识,希望对你有一定的参考价值。

一个阳光明媚的早晨,老婆又在翻看我订阅的技术杂志。

“老公,什么是RPC呀,为什么你们程序员那么多黑话!”,老婆还是一如既往的好奇。

“RPC,就是Remote Procedure Call的简称呀,翻译成中文就是远程过程调用嘛”,我一边看着书,一边漫不经心的回答着。

“啥?你在说啥?谁不知道翻译成中文是什么意思?你个废柴,快给我滚去洗碗!”

“我去。。。”,我如梦初醒,我对面坐着的可不是一个程序员,为了不去洗碗,我瞬间调动起全部脑细胞,星辰大海在我脑中汇聚,灵感涌现......

"是这样,远程过程调用,自然是相对于本地过程调用来说的嘛。"

“嗯哼,那先给老娘讲讲,本地过程调用是啥子?”

“本地过程调用,就好比你现在在家里,你要想洗碗,那你直接把碗放进洗碗机,打开洗碗机开关就可以洗了。这就叫本地过程调用。”

“哎呦,我可不干,那啥是远程过程调用?”

“哦!我明白了”,说着,老婆开始收拾包包。

“你这是干啥去哦”

“我?我要出门浪去呀,待会记得接收我的远程调用哦,哦不,咱们要专业点,应该说,待会记得接收我的RPC哦!”

......

非程序员请就此止步,程序员请继续往前走......


如何科学的解释RPC


RPC(Remote Procedure Call Protocol)—— 远程过程调用协议,它是一种通过 网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些 传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信模型中,RPC跨越了 传输层和 应用层。RPC使得开发包括网络 分布式多程序在内的应用程序更加容易。

RPC简单的来说就是像调用本地服务一样调用远程服务。

那么,netty是什么东西呢,跟RPC有什么关系?


Netty提供异步的、 事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的 网络服务器和客户端程序

RPC要做到用户无感知的调用远程服务必定要经过网络传输,而netty正好是是Java编写的快速开发高性能高可靠性的网络编程框架。



目前使用netty作为传输层的RPC框架很多,国内知名的有dubbo,motan等。



下面以新浪开源的motan为例,说明netty在RPC的位置:


下图中transport即使使用netty实现的。



 

  总结来说,netty就是解决RPC网络传输的。



分布式RPC需要解决哪些问题呢?


protocol:传输协议

proxy:client代理,服务引用方调用方法通过代理发送远程消息

codec:协议编解码压缩等

transport:协议传输

registry:注册中心,服务注册服务发现

cluster:负载均衡,服务容错策略

其他:服务降级,服务隔离,服务治理




以上是关于1,RPC概念的主要内容,如果未能解决你的问题,请参考以下文章

RPC,RestTemplate,Feign概念

RPC 的概念模型与实现解析

转载-- http接口api接口RPC接口RMIwebserviceRestful等概念

RPC概念和框架

系统间通信3:RPC的基本概念

系统间通信3:RPC的基本概念