RPC通信原理

前言:本文为黑马视频总结笔记,主要介绍了为rpc通信的概念,以及设计rpc框架需要考虑到的技术要点概览,适合初学者,很多细节没有解释到,在日后会慢慢补充

---------------------------------------------------------------------------------------------------------------------------------

RPC概述

1.什么是RPC?

RPC的主要功能目标是让构建分布式计算(应用)更容易,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议规范,简单的来说就是像调用本地服务一样调用远程服务,对开发者而言是透明的。

一句话概括:RPC是一种远程调用技术,能极大地简化分布式应用的开发

2.为什么用RPC

分布式设计
部署灵活
解耦服务
扩展性强
3.常见的RPC框架
Dubbo:阿里巴巴,java
gRPC:Google,多语言
Thrift:Facebook/apache,多语言
SpringCloud:不仅仅是RPC,而是微服务架构下的一站式解决方案,精确地来说应该是其中的OpenFigen组件实现了rpc远程调用
4.RPC的优势
①RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销
②RPC框架一般都有注册中心,有丰富的监控管理
③发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作
④协议私密,安全性较高
⑤rpc能做到协议更简单内容更小,效率更高
⑥rpc是面向服务的更高级的抽象,支持服务注册发现,负载均衡,超时重试,熔断降级等高级特性

---------------------------------------------------------------------------------------------------------------------------------

RPC框架架构分析

 RPC框架的工作流程:

客户端:

①client通过代理的方式触发调用模块,调用模块根据自己应用的需求完成内部的任务分发,封装请求内容

②将请求内容序列化二进制流

③根据传输的协议进行编码工作

④网络传输

服务端:

①网络接收

②根据约定好的网络协议进行解码工作

③将二进制网络数据进行反序列化

④根据内容,调用服务端对应的服务

---------------------------------------------------------------------------------------------------------------------------------

RPC框架实现要点

随着业务的复杂与技术的发展,RPC框架的内容日趋丰富,目前主要的技术内容有:注册中心、代理技术、序列化、rpc通信协议、系统IO、线程模型、超时监测机制、负载均衡策略、保护机制

注册中心

作用:

在高可用的生产环境中,服务一般都以集群方式提供服务,集群里面的IP等重要参数信息可能随时会发生变化,节点也可能会动态扩缩容,客户端需要能够及时感知服务端的变化,获取集群最新服务节点的连接信息,而这些变化要求是要对调用方应用无感知的。
常用的注册中心
Zookeeper
Consul
Nacos
Eureka

代理技术:

为什么要用代理?

RPC的调用对用户来讲是透明的,内部核心技术采用的就是代理技术,RPC会自动给接口生成一个代理实现,当我们在项目中注入接口的时候,运行过程中实际绑定的是这个接口生成的代理实现。在接口方法被调用的时候,它实际上是被生成代理类拦截到了,这样就可以在生成的代理类里面,加入其他调用处理逻辑

序列化:

为什么需要序列化?

在网络传输中,数据必须采用二进制形式,所以在RPC调用过程中,需要采用序列化技术,对入参和出参进行序列化与反序列化。
常见的序列化框架技术:

rpc通信协议:

RPC通信可以采用公有的http协议,也可以采用自定义的通信。不论采用何种通信协议,最终目的还是尽可能提高通信效率。

一般情况狂下不会采用公有的http传输方式,一是因为http是超文本传输协议,本身就是在TCP协议上的上层应用,内部封装了很多其他不必要的传输内容,比如请求头的许多信息,再者,http的传输本身建立在TCP建立成功的基础之上,在http1.0的版本,每次请求都会关闭链接,从而增加网络开销。

系统IO:

线程模型:

超时监测机制:

1.扫描任务集合

 缺点:很多无意义的遍历操作,浪费cpu

2.时间轮算法

 一句话解释时间轮:就是把未来执行的任务放到对应的位置,到了时间去检测该位置上的任务有没有被执行。时间轮形成闭环,不同的时段,在相同位置,我们采用数组+链表方式存储任务。

负载均衡策略:

保护机制:

 熔断:

 限流

作用:实际生产环境中,每个服务节点都可能由于访问量过大而引起一系列问题,就需要业务提供方能够进行自我保护,从而保证在高访问量、高并发的场景下,系统依然能够稳定,高效运行。限流器的作用是用来限制其请求的速率,保护后台响应服务,以免服务过载导致服务不可用现象出现。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值