原文网址:分布式--RPC_IT利刃出鞘的博客-CSDN博客
简介
简介
本文介绍分布式中的RPC。
开源的优秀RPC框架
- openfeign:GitHub - spring-cloud/spring-cloud-openfeign: Support for using OpenFeign in Spring Cloud apps
- 阿里巴巴 Dubbo:https://github.com/alibaba/dubbo
- 新浪微博 Motan:https://github.com/weibocom/motan
- gRPC:GitHub - grpc/grpc: The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
- rpcx :https://github.com/smallnest/rpcx
- Apache Thrift :Apache Thrift - Home
RPC与HTTP
应用远程调用另一个应用有两种解决方案:HTTP、RPC,如下图所示(左侧为HTTP,右侧为RPC)。
可以发现,RPC底层也可以使用HTTP来实现通信。
项 | HTTP | RPC |
传输效率 | 慢。 如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装一下是可以作为一个RPC来使用的,这时标准RPC框架更多的是服务治理。 | 快。 使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率 |
性能 | 低。 大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。 | 高。 可以基于thrift实现高效的二进制传输。 |
难度 | 简单 | 复杂 |
灵活性 | 大。 它不关心实现细节,跨平台、跨语言。 | 小 |
RPC原理
什么是RPC
上边只是部分内容,为便于维护,本文已迁移到此地址:分布式-RPC - 自学精灵