RPC 是什么?

RPC 英文全称是 Remote Procedure Call 既远程过程调用,维基百科中给的定义是一个计算机调用了一个函数,但这个函数并不在这台计算机上,这种远程调用方式程序员无需关注到底怎么远程调用,就像是本地执行一个函数一模一样。

听着很高大上,我们要实现一个求和的例子:

function sum(a, b) {
	return a + b
}

作为客户端,实际是不知道 sum 的逻辑的,它只需要传递 ab 两个参数给服务端,服务端返回结果即可。

这里大家就会有一个疑问,为什么我们要远程调一个函数?

答案就是我们本地没有呀,上面举的是 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 进行类型定义(就是有哪些函数、函数的参数类型、响应结果类型);
  • 跨语言和平台:通过上述定义,我们可以一键生成 typescriptgoc#java 等代码
版权声明:本文为zhangchaojie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhangchaojie/p/15172929.html