RPC核心知识点

**RPC****框架—**RCF

RCF官方帮助文档:https://www.deltavsoft.com/doc/index.html

RPC的作用

  1. 屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法。
  2. 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。

完整的RPC涉及到的核心点

编解码、序列化和反序列、请求协议、桩生成(动态代理、反射执行)。

优雅关闭

服务对象在关闭过程中,会拒绝新的请求,同时根据引用计数器等待正在处理的请求全部结束之后才会真正关闭。另外,为了避免一直等待造成应用无法正常退出,还需要在整个ShutdownHook里面加上超时控制。

优雅启动

优雅启动是指不要让应用刚启动成功就接收正常量级的请求,此时数据可能还未完全准备好,容易造成请求超时。

常见的做法有启动预热和延迟暴露。启动预热的意思就是借助路由策略根据实例注册时间动态调整权重,刚启动的应用缓慢放大流量接收的占比。而延迟暴露则是应用启动完成后,先通过Hook钩子机制执行预热逻辑后再执行注册上报。

为什么需要RPC框架?

RPC框架用于屏蔽RPC调用过程中的序列化,网络传输等技术细节。让调用方只专注于调用,服务方只专注于实现调用。

什么是序列化?为什么需要序列化?

把对象转化为连续二进制流的过程,叫做序列化。磁盘存储,缓存存储,网络传输只能操作于二进制流,所以必须序列化。

**. RPC****定义**

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

图片

二、RPC的原理和框架

RPC的通常包括5个部分:

  1. User

  2. User-stub

  3. RPCRuntime

  4. Server-stub

  5. Server

这5个部分的关系如下图所示

图片

当user想发起一个远程调用时,它实际是通过本地调user-stub。user-stub负责将调用的接口、方法和参数通过约定的协议规范进行编码并通过本地的RPCRuntime实例传输到远端的实例。远端RPCRuntime实例收到请求后交给server-stub进行解码后发起本地端调用,调用结果再返回给user端。

三、常用的RPC框架

目前常用的RPC框架如下:

gRPC

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC基于HTTP/2标准设计,带来诸如双向流控、头部压缩、单TCP连接上的多复用请求等特性。

Thrift

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml这些编程语言间无缝结合的、高效的服务。

Dubbo

Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。

RCF

RCF(远程调用框架)是一个C ++ IPC框架,提供了一种在C ++程序中实现进程间通信的简单而一致的方法。它基于强类型的客户端/服务器接口的概念,然而,通过仅适用于C ++,RCF可以利用C ++特定的语言特性,允许以更简单和更少的混乱方式来制定进程间调用。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值