RPC核心原理是什么?以及常用技术有哪些?

前面一篇文章有提到过RPC,那么RPC是什么呢?

RPC(Remote Procedure Call),代表远程过程调用,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用RPC可以解耦系统,方便维护,同时增加系统处理请求的能力。

诞生环境:在应用的迭代演进过程中,随着系统访问量、业务复杂度、代码复杂度的提高,应用逐渐从单体式架构向面向服务的分布式架构转变,所以RPC就产生了(分布式架构的核心)。按响应方式分:
1)同步调用:客户端调用服务方方法,等服务方返回结果或者超时,才继续自己的操作。(实现方式有WebService和RMI)

2)异步调用:客户端把消息发送给中间件,不等服务端返回直接继续自己的操作。(搭配ActiveMQ和Kafka,RabbitMQ)

在讲述RPC的核心原理之前,我们先看一下它的4个核心组件:
1)客户端(Client):服务调用方

2)客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方

3)服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务

4)服务端(Server):真正的服务提供者

1.服务调用方(client)调用以本地调用方式调用服务

2.client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化的过程)

3.client stub找到服务地址,并将消息通过网络发送到服务端

4.server stub收到消息后进行解码,在Java里就是反序列化的过程

5.server stub根据解码结果调用本地的服务

6.本地服务执行处理逻辑

7.本地服务将结果返回给server stub

8.server stub将返回结果打包成消息,Java里的序列化

9.server stub将打包后的消息通过网络并发送至消费方

10.client stub接收到消息,并进行解码(Java里的反序列化)

11.服务调用方(client)得到最终结果

RPC框架的目标就是把2-10步封装起来,所以其核心原理就是:把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。

RPC常用技术有哪些?

Dubbo:国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持Java语言。

Motan:微博内部使用的RPC框架,于2016年对外开源,仅支持Java语言。

Tars:腾讯内部使用的RPC框架,于2017年对外开源,仅支持C++语言。

Spring Cloud:国外Pivotal公司2014年对外开源的RPC框架,仅支持Java语言。

 

以下几种是跨语言平台的开源RPC框架:
gRPC:Google于2015年对外开源的跨语言RPC框架,支持多种语言。

Thrift:最初是由Facebook开发的内部系统跨语言的RPC框架,2007年贡献给了Apache基金,成为Apache 开源项目之一,支持多种语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值