千家信息网

如何分析原理及应用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了如何分析原理及应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。01 背景对于一个电商平台而言, 往往涉及购物车,订单,支付,商品等多个模
千家信息网最后更新 2026年11月01日如何分析原理及应用

本篇文章为大家展示了如何分析原理及应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

01 背景

对于一个电商平台而言, 往往涉及购物车,订单,支付,商品等多个模块,这就需要多个人员进行维护,如果采用单机系统,就会导致这样的问题:

1、某人在维护自己模块代码时,需要将所有代码编译打包,其余模块可能需要回归测试;

2、其中一个模块出问题,可能导致整个系统故障。

这就出现了远程过程调用RPC,它使得我们可以像调用本地函数一样调用远程服务器的函数。

RPC是分布式的基石。

从单机走向分布式,产生了很多分布式的通信方式:

1、TCP/UDP二进制传输:最古老,也是最有效的,事实上所有的通信方式归根结底都是TCP/UDP;

2、CORBA(Common Object Request Broker Architecture):古老而复杂,支持面向对象的通信协议;

3、Web Service(SOA SOAP RDDI WSDL):基于http+xml的标准化Web API;

4、RestFul(Reprensentational State Transfer):http+json;

5、RMI(Remote Method Invocation):Java内部的分布式通信协议;

6、JMS(Java Message Service):JavaEE的消息框架标准,很多MQ支持;

7、RPC(Remote Procedure Call):远程过程调用,这只是一个统称,重点在于方法调用,具体实现甚至可以用RMI RestFul等去实现,但一般不用,因为RMI不能跨语言,而ResuFul效率太低。

多用于服务器集群间的通信(分布式或微服务架构),因此常使用更加高效、短小精悍的传输模式以提高效率。

02 概述

RPC (Remote Procedure Call)即远程过程调用,是分布式系统常见的一种通信方法。除RPC之外,常见的多系统数据交互方案还有分布式消息队列、HTTP请求调用、数据库和分布式缓存等。

RPC是一种概念,HTTP也是RPC实现的一种方式。

通过RPC能解耦服务,这才是使用RPC的真正目的。RPC的原理主要用到了动态代理模式,至于HTTP协议,只是传输协议而已。

2.1 RPC与HTTP

和一般基于Message的分布式框架(如MPI)相比,RPC更加抽象,也更方便理解。不过在底层,无论是RPC还是MPI,终究还是要转化成TCP/UDP包发来发去的。

对比:

RPC适用于公司内部使用,性能消耗低,传输效率高,服务治理方便,但是不建议传输较大的文本、视频等。

HTTP适用于对外的技术,公司上下游的调用可以使用MQ。主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

2.2 RPC与IPC

我们通常所说管道、FIFO等是同一机器的进程间通信方式(IPC),RPC是不同机器之间进程通信方式。

2.3 RPC与Socket

RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用)。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC作为普遍的C/S开发方法,开发效率高效,可靠。但RPC方法的基本原则是:以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力对付实现过程。这就决定了RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽。

2.4 RPC与MQ

区别:

1、在架构上,MQ有一个中间结点,可以把消息存储。

2、同步调用:对于要立即等待返回处理结果的场景,RPC是首选。

3、MQ的使用,一方面是基于性能的考虑,比如服务端不能快速的响应客户端(或客户端也不要求实时响应),需要在队列里缓存。另外一方面,它更侧重数据的传输,因此方式更加多样化,除了点对点外,还有订阅发布等功能。

4、随着业务增长,处理端出现性能瓶颈,此时会进行同步调用改造为异步调用,可以考虑使用MQ。

由此可知,二者最大的区别是,RPC没有broker, 而消息队列是需要管理消息的存储的,RPC没有存储,只有通信。

总结:

异步MQ,同步RPC。

03 分类

常见的RPC技术有Cobra、RMI、.NET Remoting、WebService、JSON-RPC、XML-RPC、Hessian、Thrift、Protocol Buffer、gRPC等等。

按照序列化机制的特点,我们可以把RPC技术分为文本的(WebService、JSON-RPC、XML-RPC等)和二进制的(RMI、Hessian、Thrift、Protocol Buffer等)。

按照常见的通信协议来看,我们又可以分为基于HTTP的(WebService、Hessian等)和基于TCP的(RMI、.NET Remoting等)。

按照是否可以用于多个不同平台,又可以分为平台特定的(RMI是Java平台特定的、.NET Remoting是.NET平台特定的)和平台无关的(比如WebService、JSON-RPC、Hessian等)。

04 模式

按照调用方式来看,RPC有四种模式:

RR(Request-Response)模式,又叫请求响应模式,指每个调用都要有具体的返回结果信息。

Oneway模式,又叫单向调用模式,调用即返回,没有响应的信息。

Future模式,又叫异步模式,返回拿到一个Future对象,然后执行完获取到返回结果信息。

Callback模式,又叫回调模式,处理完请求以后,将处理结果信息作为参数传递给回调函数进行处理。

这四种调用模式中,RR和Oneway最常见。

从本质上看,RPC一般对于客户端的来说是一种同步的远程服务调用技术。与其相对应的,一般来说MQ是一种异步的调用技术。

而对于MQ,根据消息处理的特点,我们又可以总结两种消息模式:

点对点模式(Point to Point,PTP),一个生产者发送的每一个消息,都只能有一个消费者能消费,看起来消息就像从一个点传递到了另外一个点。

发布订阅模式,(Publish-Subscribe,PubSub),一个生产者发送的每一个消息,都会发送到所有订阅了此队列的消费者。

05 原理

RPC的一般需要经历4个步骤:

1、建立通信

A机器想要调用B机器,首先得在客户端和服务器之间建立TCP连接。

2、服务寻址

要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么。

3、网络传输

1)序列化

当A服务器上的应用发起一个RPC调用时,调用方法和参数数据都需要先进行序列化。

2)反序列化

当B服务器接收到A服务器的请求之后,又需要对接收到的参数等信息进行反序列化操作。

4、服务调用

B服务器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A服务器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A服务器。

通常,一次完整的PRC调用需要经历如上4个步骤。

5.1 组件

一个RPC框架一般包含以下几个组件:

RPC Server:负责导出(export)远程接口

RPC Client:负责导入(import)远程接口的代理实现

RPC Proxy:远程接口的代理实现

RPC Invoker:

客户方实现:负责编码调用信息和发送调用请求到服务方并等待调用结果返回;

服务方实现:负责调用服务端接口的具体实现并返回调用结果

RPC Protocol:负责协议编/解码

RPC Connector:负责维持客户方和服务方的连接通道和发送数据到服务方

RPC Acceptor:负责接收客户方请求并返回请求结果

RPC Processor:负责在服务方控制调用过程,包括管理调用线程池、超时时间等

RPC Channel:数据传输通道

5.2 序列化

RPC实现另一台机器的调用通信,本质上是借助底层TCP/IP协议,通过序列化和反序列化实现的。

序列化把对象转换为可传输的二进制。可以采用JDK(仅适用于Java),JSON(跨语言,文本化,比二进制包大,性能稍差),Hessian,Protobuf(使用IDL文件,对数据类型做了约定,跨语言能力强)。

反序列化安全问题,采用白名单:

1、扫描接口类声明的类型

2、系统内置白名单

3、用户定义白名单

5.3 服务发现

服务发现:

调用方和提供方通过注册中心实现函数(地址)的发布和订阅,提供方将自己的函数注册到注册中心,调用方到注册中心订阅相应的函数。

健康检查:

通过状态机实现节点假死的转移。

通过心跳机制将亚健康的节点转换为死亡状态,然后还可以通过探活机制实现节点状态的检查。

5.4 负载方式

负载均衡:

负载方式:

1、随机负载

2、一致性hash负载

3、自适应负载(计算TPS,利用率等计算出权重)

集群策略:

集群策略:快速失败,失败重试,定点调用

5.5 流量控制

服务端流量控制:

流量控制方案:

1、识别调用来源

2、单节点限流:平滑限流算法

3、集群限流

5.6 分组部署

5.7 安全认证

06 特点

优点:

1、长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;

2、RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作;

3、提升系统可扩展性;

4、提升系统可维护性和持续交付能力;

5、实现系统高可用。

缺点:

1、一个完善的RPC框架开发难度大;

2、RPC框架调用成功率受限于网络状况;

3、调用远程方法对初学者来说难度大。

07 框架

Dubbo

Dubbo是阿里巴巴开源的一个Java高性能优秀的服务框架,可以和Spring框架无缝集成。

Montan

Montana是新浪微博开源的一个Java框架。

Spring Cloud

rpcx

rpcx是go语言生态圈的Dubbo。

gRPC

gRPC是Google开发的高性能、通用的开源RPC框架。

gsaop

gsoap更适合C/C++程序,重量级应用。

Thrift

适合Java程序,中量级应用。

rest

适合脚本语言,轻量级应用。

对比

08 应用

RPC在我们熟悉的各种中间件中都有它的身影。我们这里说的RPC指的是广义的RPC,即分布式系统的通信技术。

8.1 Nginx与RPC

Nginx和后端服务之间的交互在本质上也可以理解为RPC数据交互。

8.2 Hadoop与RPC

Hadoop文件系统HDFS,一般包括一个NameNode和多个DataNode,NameNode和DataNode之间就是通过一种称为Hadoop RPC的二进制协议进行通讯。

8.3 TensorFlow与RPC

Tensorflow Cluster的RPC通讯框架使用了Google内部自研的gRPC框架。

上述内容就是如何分析原理及应用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

服务 模式 通信 框架 传输 分布式 序列 数据 服务器 应用 消息 系统 方式 接口 方法 信息 客户 机器 结果 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技创新与互联网经济 互联网最新的科技有限公司 安徽鑫晟辉互联网科技 科技创新互联网企业 壕鑫互联网络科技 金融科技和互联网金融 老年人脱离互联网科技的作文 富国互联网科技创新基金 青岛中康互联网医疗科技有限公司 互联网对科技的发展 互联网为啥属于高科技 港股科技和互联网 上海宁丞科技互联网 杭州壁岐互联网科技有限公司 消费医药和互联网科技 中国互联网十大科技股排名 互联网科技如何创业 2021世界互联网领先科技成果发布 广西泛欧互联网科技有限公司 如何强化互联网金融科技 上海睿民互联网科技有限公司 科技与互联网 鸠鸠互联网科技 百单互联网科技有限公司 互联网科技类展会 蓝色互联网科技 链环科技传统企业怎么转型互联网 陕西九四连强互联网科技有限公司 保山互联网科技靠谱吗 互联网科技创新方面的资料
0