RPC/Thrift

参考:https://www.cnblogs.com/111testing/p/11296880.html

RPC框架

RPC框架:远程过程调用协议RPC(Remote Procedure Call Protocol) 两个服务互相调用的协议:允许一个服务调用远程服务的某个方法就像调用本地方法一样

rpc=socket + 动态代理

socket :在 RPC 中扮演着客户端和服务端之间的通信管道,负责数据的传输和通信的建立。通过 socket,客户端可以将请求发送给服务端,并接收服务端的响应。

动态代理:通过在运行时生成代理对象来包装原始对象,并将方法调用转发到底层的网络通信框架(如 socket)进行远程调用。这样,客户端可以通过调用代理对象的方法来触发远程方法的执行,而无需关心底层的网络通信细节

实现路径如下:

1,远程服务之间建立通讯协议

2,寻址:服务器(如主机或IP地址)以及特定的端又,方法的名称名称是什么

3,通过序列化和反序列化进行数据传递

4,将传递过来的数据通过java反射原理定位接又方法和参数

5,暴露服务:用map将寻址的信息暴露给远方服务(提供一个endpoint URI或者一个前端展示页面)

6,多线程并发请求业务

Thrift原理

Thrift 是一种跨语言的远程服务调用框架,它的原理可以概括如下:

1. 定义接口:Thrift 使用一种IDL(Interface Definition Language)语言来定义服务接口。IDL 描述了数据类型和服务方法,在编译时可以生成不同语言的代码文件。

2. 生成代码:使用 Thrift 编译器将定义的接口文件(IDL 文件)生成对应语言的代码文件。生成的代码包括服务接口、客户端和服务器框架以及相关的数据结构和协议。

3. 序列化和传输:Thrift 使用自定义的二进制协议进行数据的序列化和传输。在客户端调用远程服务时,将数据按照指定的协议序列化为二进制格式,然后通过网络传输到服务端。

4. 服务注册和发现:Thrift 的服务通常需要注册到一个服务注册中心,以便客户端能够发现可用的服务提供者。服务注册中心可以是单独的组件,也可以使用其他的服务发现机制。

5. 远程调用:客户端通过生成的代码调用服务接口提供的方法,将参数传递给服务端。服务端接收到请求后,解析并处理请求,然后将结果返回给客户端。

6. 可扩展性:Thrift 支持按需添加新的服务和修改接口定义,这使得系统具有良好的可扩展性。当接口发生变化时,需要重新生成代码并更新服务端和客户端。

总体来说,Thrift 的原理是通过定义接口、生成代码、序列化和传输数据以及远程调用的方式实现跨语言的远程服务调用。它提供了一种方便而高效的方式,使得不同语言的系统能够进 行通信和交互。同时,Thrift 还支持各种数据类型和协议,以及可插拔的传输层和服务模型,使其具备了较好的灵活性和可扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值