RPC框架 | 青训营笔记

72 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

项目大概用到RPC框架。大概记一下相关的东西。

RPC框架

RPC(Remote Procedure Call Protocol)远程过程调用协议。简单来说就是调用远程的东西。也就是类似客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。

常见框架

典型的RPC实现包括:Dubbo、Thrift、GRPC、Hetty等。

特定实现

Spring一套,对应的Spring Cloud。
1.服务间调用的是Http,采用RESTful形式。类似前后端沟通方式(互为前后端了属于是)。
2.微服务架构下的一站式解决方案,成套解决。
3.spring cloud是微服务生态,包括完整的微服务相关的组件工具集,而RPC是远程调用的技术,仅仅是微服务的一部分 Apache Dubbo 1.关注点主要在于服务的调用,流量分发、流量监控和熔断。
2.采用Dubbo自定义通信协议,与Http协议一样底层都是TCP通信。但是Dubbo协议自定义了Java数据序列化和反序列化方式、数据传输格式。
3.Java Golang能用
4.什么是 Dubbo | Apache Dubbo

gRPC 1.Google的开源框架
2.基于 IDL 文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub
3.序列化支持 PB(Protocol Buffer)和 JSON

Thrift 1.支持多语言:C、C++ 、C# 、D 、Delphi 、Erlang 、Go 、Haxe 、Haskell 、Java 、JavaScript、node.js 、OCaml 、Perl 、PHP 、Python 、Ruby 、SmallTalk
2.杂七杂八的代码居多

什么时候应该选择gRPC而不是Thrift:

  • 需要良好的文档、示例
  • 喜欢、习惯HTTP/2、ProtoBuf
  • 对网络传输带宽敏感

什么时候应该选择Thrift而不是gRPC:

  • 需要在非常多的语言间进行数据交换
  • 对CPU敏感
  • 协议层、传输层有多种控制要求
  • 需要稳定的版本
  • 不需要良好的文档和示例