RPC

简介: 聊聊RPC

RPC:Remote Procedure Call,远程过程调用

一个RPC框架要解决的问题:

一. 数据的序列化与反序列化

跨语言的序列化方案

事实上的跨语言序列化方案: protobuf, thrift, json

二. 数据传输


1. 序列化与反序列化(采用的二进制通信协议(所谓协议就是数据报文格式))    


为什么单独把这个RPC框架要解决的问题呢,难道前后端的调用不需要序列化与反序列化吗?难不成前后端调用也是一个RPC吗?

如果抛开使用场景,个人感觉他们是一样的。

不同之处在于一个是前端调用后端,一个是后端调用后端服务,而且后端调用的时候,像是调用本地服务一样方便快捷。

比较下feign组件与dubbo组件的区别:

feign:用的是http协议调用的,采用JSON序列化,xml序列化;

dubbo:是基于TCP层实现的,默认采用的是dubbo协议,采用的序列化方式是

hessian 二进制序列化。还有二进制 thrift/protobuf等。

  1. 数据库传输

feign:http,属于应用层

dubbo:默认dubbo,还可以选择Rmi、http、redis等


场景比较:

feign:多用于前后端调用
dubbo:多用于系统内部调用

相关文章
|
网络协议 网络架构
01RPC - RPC介绍
01RPC - RPC介绍
61 0
|
网络协议
|
网络协议
|
3月前
|
负载均衡 Java API
什么是RPC
【9月更文挑战第8天】什么是RPC
123 3
|
7月前
关于RPC
关于RPC
|
Dubbo Java 应用服务中间件
为什么大厂用的都是RPC服务
在很久以前,笔者刚毕业开始工作那会儿,对于企业开发的模式一直以为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。
213 1
|
JSON 移动开发 网络协议