前端从
RPC 是什么?
RPC 英文全称是 Remote Procedure Call 既远程过程调用,维基百科中给的定义是一个计算机调用了一个函数,但这个函数并不在这台计算机上,这种远程调用方式程序员无需关注到底怎么远程调用,就像是本地执行一个函数一模一样。
听着很高大上,我们要实现一个求和的例子:
function sum(a, b) {
return a + b
}
作为客户端,实际是不知道 sum 的逻辑的,它只需要传递 a
和 b
两个参数给服务端,服务端返回结果即可。
这里大家就会有一个疑问,为什么我们要远程调一个函数?
答案就是我们本地没有呀,上面举的是 sum
的纯逻辑,但如果是客户端有账号和密码,要获取 用户详细信息的数据呢,我们本地是没有的,所以一定要远程调用。
PRC 和 HTTP 协议的关系?
经过我们一解释,相信大家都有些明白了,但又会产生一个新的疑问,这个过程怎么和 http 的请求响应模型这么像呢,两者是什么关系呢?
其实广义的理解中,http 就是 rpc 的一种实现方式,rpc 更多像是一种思想,http 请求和响应是一种实现。
gPRC 是什么?
刚刚说了 rpc 更多的是一种思想,而我们现在说的 gPRC 则是 PRC 的一种实现,也可以称为一个框架,并且不止这一个框架,业界还有 thrift
,但是目前微服务中用的比较广泛的就是它,所以我们要学习的就是它。
gRPC 官网 的介绍是 A high performance, open source universal RPC framework。
一个高性能、开源的通用RPC框架。它有以下四个特点:
- 定义简单:它基于
Protocol Buffer
进行类型定义(就是有哪些函数、函数的参数类型、响应结果类型); - 跨语言和平台:通过上述定义,我们可以一键生成
typescript
、go
、c#
、java
等代码