专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

RPC是什么意思?RPC服务器框架协议原理详解?

来源:小易整编  作者:小易  发布时间:2023-02-09 11:46
摘要:RPC是什么意思?RPC服务器框架协议原理详解?02RPC概述2.1什么是RPC?RPC是远程过程调用(RemoteProcedureCall)的缩写。RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本...

RPC是什么意思?RPC服务器框架协议原理详解?

02 RPC概述

2.1 什么是RPC ?

RPC是远程过程调用(Remote Procedure Call)的缩写。 RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

RPC是什么意思?RPC服务器框架协议原理详解?

2.2 优点

  • 1、分布式设计

  • 2、部署灵活

  • 3、解构服务

  • 4、扩展性强

2.3 有哪些RPC框架?

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

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

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

  • Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,提供了丰富的生态组件。

  • gRPC:Google 于 2015 年对外开源的跨语言 RPC 框架,支持多种语言。

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

2.4 特性

  • 1、RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。

  • 2、RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高

  • 3、RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。

2.5 架构

RPC是什么意思?RPC服务器框架协议原理详解?

2.6 调用流程

RPC是什么意思?RPC服务器框架协议原理详解?

具体步骤:

  1. 服务消费者(client客户端)通过本地调用的方式调用服务。

  2. 客户端存根(client stub)接收到请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体。

  3. 客户端存根(client stub)找到远程的服务地址,并且将消息通过网络发送给服务端。

  4. 服务端存根(server stub)收到消息后进行解码(反序列化操作)。

  5. 服务端存根(server stub)根据解码结果调用本地的服务进行相关处理。

  6. 本地服务执行具体业务逻辑并将处理结果返回给服务端存根(server stub)。

  7. 服务端存根(server stub)将返回结果重新打包成消息(序列化)并通过网络发送至消费方。

  8. 客户端存根(client stub)接收到消息,并进行解码(反序列化)。

  9. 服务消费方得到最终结果。

涉及到的技术

  1. 动态代理生成Client Stub(客户端存根)和Server Stub(服务端存根)的时候需要用到java动态代理技术。

  2. 序列化 在网络中,所有的数据都将会被转化为字节进行传送,需要对这些参数进行序列化和反序列化操作。目前主流高效的开源序列化框架有Kryo、fastjson、Hessian、Protobuf等。

  3. NIO通信Java 提供了 NIO 的解决方案,Java 7 也提供了更优秀的 NIO.2 支持。可以采用Netty或者mina框架来解决NIO数据传输的问题。开源的RPC框架Dubbo就是采用NIO通信,集成支持netty、mina、grizzly。

  4. 服务注册中心通过注册中心,让客户端连接调用服务端所发布的服务。主流的注册中心组件:Redis、Zookeeper、Consul、Etcd。Dubbo采用的是ZooKeeper提供服务注册与发现功能。

  5. 负载均衡在高并发的场景下,需要多个节点或集群来提升整体吞吐能力。

  6. 健康检查健康检查包括,客户端心跳和服务端主动探测两种方式。

03 RPC深入解析

3.1 序列化技术

(1)序列化作用

在网络传输中,数据必须采用二进制形式, 所以在RPC调用过程中, 需要采用序列化技术,对入参对象和返回值对象进行序列化与反序列化。

(2)如何序列化?

自定义二进制协议来实现序列化:

RPC是什么意思?RPC服务器框架协议原理详解?

(3)序列化的处理要素

序列化的处理要素

  1. 解析效率:序列化协议应该首要考虑的因素,像xml/json解析起来比较耗时,需要解析doom树,二进制自定义协议解析起来效率要快很多。

  2. 压缩率:同样一个对象,xml/json传输起来有大量的标签冗余信息,信息有效性低,二进制自定义协议占用的空间相对来说会小很多。

  3. 扩展性与兼容性:是否能够利于信息的扩展,并且增加字段后旧版客户端是否需要强制升级,这都是需要考虑的问题,在自定义二进制协议时候,要做好充分考虑设计。

  4. 可读性与可调试性:xml/json的可读性会比二进制协议好很多,并且通过网络抓包是可以直接读取,二进制则需要反序列化才能查看其内容。

  5. 跨语言:有些序列化协议是与开发语言紧密相关的,例如dubbo的Hessian序列化协议就只能支持Java的RPC调用。

  6. 通用性:xml/json非常通用,都有很好的第三方解析库,各个语言解析起来都十分方便,二进制数据的处理方面也有Protobuf和Hessian等插件,在做设计的时候尽量做到较好的通用性。


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/903059.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • 计算机按工作原理可分为什么

    计算机按工作原理可分为什么

    计算机按工作原理可分为数字计算机和模拟计算机。数字式电子计算机是当今世界电子计算机行业中的主流,其内部处理的是一种称为符号信号或数字信号的电信号,它有着运算速度快、运算精度高、通用性强等特点。模拟计算机是根据相似原理,用一种连续变化的模拟量...

  • 网络协议的三个要素是什么?各有什么含义?

    网络协议的三个要素是什么?各有什么含义?

    网络协议的三个要素及其含义:1、语义,解释控制信息每个部分的意义;2、语法,用户数据与控制信息的结构与格式,以及数据出现的顺序;3、时序,对事件发生顺序的详细说明。简单来说:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。网络协议为计...

  • 如何设置Nginx代理服务器以在多台服务器之间实现负载均衡?

    如何设置Nginx代理服务器以在多台服务器之间实现负载均衡?

    如何设置Nginx代理服务器以在多台服务器之间实现负载均衡?引言:在现代互联网应用程序中,服务器负载均衡是保证应用程序高可用性、高性能和可扩展性的重要因素之一。Nginx是一个高性能的开源代理服务器,具有强大的负载均衡功能。本文将介绍如何利...

  • Python服务器编程:使用PyAudio进行音频处理

    Python服务器编程:使用PyAudio进行音频处理

    python是一种功能强大的编程语言,可以用于从简单的脚本到复杂的应用程序和服务器。pyaudio是python中一种流行的音频处理库,可以用于录制、播放和处理音频数据。在本文中,我们将探讨如何使用PyAudio来开发一个Python服务器...

  • Telnet是什么协议

    Telnet是什么协议

    telnet是一种简单的基于文本的网络协议,用于通过“tcp/ip”网络访问远程计算机和终端;telnet为用户提供了一个双向的交互式文本通信系统,该系统使用超过8字节的虚拟终端连接。Telnet是一种简单的基于文本的网络协议,用于通过TC...

  • 什么是PPP协议

    什么是PPP协议

    ppp(点对点协议)是一种数据链路层协议,用于在两台直接连接的(点对点)计算机之间传输数据报。下面本篇文章就来带大家简单了解一下ppp协议,希望对大家有所帮助。PPP协议也称为RFC1661,用于提供计算机之间数据链接的非常基本的连接级别...

  • 什么是超文本传输协议

    什么是超文本传输协议

    超文本传输协议指的是http协议,是一个基于“tcp/ip”的通信协议,一个简单的“请求-响应”协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应;请求和响应消息的头以ascii形式给出,而消息内容则具有一个类似mime的...

  • 如何分析EIGRP协议

    如何分析EIGRP协议

    1、eigrp协议简述EIGRP(EnhancedIneriorGatewayRoutingProtocol,增强型内部网关路由协议)是一个平衡混合型路由协议,它融合了距离矢量和链路状态两种路由协议的优点,也是CISCO的私有协议。...

  • 周排行
  • 月排行
  • 年排行

精彩推荐