你用过 dubbo 嘛,知道他是干嘛的嘛?
Apache Dubbo 是一款高性能、轻量级的开源 Java 服务框架
提供了六大核心能力:面向接口代理的高性能 RPC 调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。其实 Dubbo 呢就是一个 RPC 框架。
那你说说什么是 RPC
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP 请求当然可以,但是可能会比较麻烦。 RPC 的出现就是为了让你调用远程方法像调用本地方法一样简单。
其实就我而言 RPC 的范围还是挺广的,比如举几个简单生产的情况
-
首先我觉得很少读者公司用的 fegin 其实也算一个简单的 RPC 吧?因为它也是屏蔽了底层的调用,让我们调用远程方法像调用本地方一样的方便。
-
第二个就是我们说的 dubbo,那他跟 fegin 的一个最大的区别,我觉得就是网络传输的方式不一样,但是他也是一个 RPC 框架,并且性能更好,但是他目前不支持跨语言调用。
-
第三个 thrift,小六六为啥提到它呢?当一个公司比较大的时候,比如说一个大的互联网公司,肯定不同的部门用的语言不一样,那么你就得上他了,我们这边就有这样的服务。
小伙子可以,那你说说 RPC 的原理吧
-
服务消费方(client)调用以本地调用方式调用服务;
-
client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
-
client s