RPC是什么?

RPC概念及分类

RPC全称为Remote Procedure Call,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程通信和相互调用。远程调用的应用场景极其广泛,实现的方式也各式各样。

从通信协议的层面,大致可以分为:

基于HTTP协议的(例如基于文本的SOAP(XML)、Rest(JSON),基于二进制Hessian(Binary))

基于TCP协议的(通常会借助Mina、Netty等高性能网络框架)

从不同的开发语言和平台层面,分为:

单种语言或平台特定支持的通信技术(例如Java平台的RMI、.NET平台Remoting)

支持跨平台通信的技术(例如HTTP Rest、Thrift等)

从调用过程来看,分为:

同步通信调用(同步RPC)

异步通信调用(MQ、异步RPC)

常见的几种通信方式

1. 远程数据共享(例如:共享远程文件,共享数据库等实现不同系统通信)

2. 消息队列

3. RPC(远程过程调用)

 

序列化/反序列化

只有二进制数据才能在网络中传输,序列化和反序列化的定义是:

将对象转换成二进制流的过程叫做序列化,

将二进制流转换成对象的过程叫做反序列化。

Java和.NET平台中常见的通信技术

Java中支持的包括:

技术

简介

是否支持跨平台

Corbra

90年代产物,已被淘汰

不支持

RMI

EJB时代产物,已逐渐被淘汰

不支持

WebService

基于Http SOAP,效率低,逐渐被淘汰

支持

Hessain

基于Http,二进制序列化,效率高,使用广泛

支持

Rest(spring mvc等)

支持Http Rest,广泛应用于无线API,开放平台等

支持

JMS、开源MQ

Java消息服务(消息中间件),使用广泛

支持

Socket

基于Mina、Netty(NIO、AIO高效通信)

理论上支持

 

 

 

.NET中包括:

技术

简介

是否支持跨平台

WebService

基于Http SOAP,效率低,逐渐被WCF整合淘汰

支持

.NET Remoting

通信效率尚可,使用复杂,逐渐被WCF整合淘汰

不支持

WCF SOAP

整合了原有的WebService,通信效率低

支持

WCF NET.TCP

通信效率高,部分.NET项目内部服务在使用

不支持

WCF Rest

使用较少,已经被Web Api逐渐取代

支持

Web Api

支持Http Rest,广泛应用于无线API,开放平台等

支持

MSMQ、开源MQ

微软自己的消息中间件或者其他开源MQ

支持(MSMQ除外)

Hessain .NET

基于Http,二进制序列化,效率高,使用较少

支持

Socket

通过Socket网络编程方式实现系统通信

理论上支持

 

 

互联网时代常见的RPC技术和框架

应用级的服务框架:

Dubbo/Dubbox

ZeroICE

GRpc

Spring Boot/Spring Cloud

 

基础通信框架:

Protocol Buffers

Thrift

 

远程通信协议:

RMI

Socket

SOAP(HTTP XML)

REST(HTTP JSON)

RPC的注意事项

性能

影响RPC性能的主要在几个方面:

1.序列化/反序列化的框架

2.网络协议,网络模型,线程模型等

安全

RPC安全的主要在于服务接口的鉴权和访问控制支持。

 

 

跨平台

跨不同的操作系统,不同的编程语言和平台。

 

跨平台RPC技术和常见框架介绍

SOAP WebService

Hessian

HTTP Rest

Thrift

GRpc(Protobuffer)

Zero ICE

消息中间件

 

时间: 2024-09-08 05:07:21

RPC是什么?的相关文章

你应该知道的RPC原理

      在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,由不同的团队负责.这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其它团队要使用我们的新服务,我们的服务该怎么发布以便他人调用?下文将对这两个问题展开探讨. 1 p

Print2Flash出现"System Error. Code:1722. RPC服务器不可用."错误解决办法

Print2Flash出现"System Error. Code:1722. RPC服务器不可用."错误. 一般来说这个应该是某个Windows服务没有打开所导致的问题.后来才发现:原来是Print Spooler这个服务没有启动,只要启动这个服务就可以了,启动的时候就不会报错了.

为微软Outlook RPC over HTTP设置RPC

就像你在第11章了解到的,大多数RPC over HTTP设置,事实上在服务器端进行.在客户端,你将需要确认你的服务器有微软Windows XP.如果你使用SP1,你将需要使用Q331320修补程序,这个程序包含在SP2及更新的版本.同时你也需要为你的用户之间的前端和后端服务器通信,在Windows Server 2003上运行Exchange Server 2003,以及为所有的全局目录和域控制器都运行Windows Server 2003,让你的服务器和客户端能够正常使用. 注意:Offic

微博平台的RPC服务化实践概述

2014年第一分钟,新浪微博的发布量以808298条再次刷新记录,第一秒微博发布量相较去年提升55%.(数据来源:新浪科技 )这是微博平台 RPC 框架 "Motan" 上线后第一次抗峰值,整体表现平稳,基本达到最初的"应用方无感知"的目标. 在RPC服务化这个事情上,微博平台不是第一个吃螃蟹的:早的有亚马逊和eBay等国外先驱,近的有Twitter的finagle,淘宝的dubbo等等,网上各种公开的资料铺天盖地.另一方面,单纯的RPC调用功能实现,从技术上看其实

为何TMG启用NLB功能后无法发现对方节点并且报RPC错误

最近,很多朋友在他们的项目中也开始应用微软TMG的NLB的功能,但是配置完成后却发现没有安装TMG的机器上,Windows Server 2008 的NLB功能正常可以发现对方节点,但是一但启用的是TMG的NLB那么在NLB管理控制台中就会发现NLB节点无法发现对方的节点,而且会报一个RPC错误,但是NLB功能却是可以正常生效的,今天就把这个问题博文中作一个简单的介绍和分享吧. 首先来看启用NLB功能后,是可以互相ping通对方节点的,这个在Windows 2008中已经做了改进,但是由于Win

为Outlook所作的S/MIME安全及HTTPS Over RPC

微软Outlook地址簿和对象模式安全 Outlook支持Office对象模式,这样,你就可以编写脚本和程序来自动地执行那些重复的操作.这其实是一面双刃剑:对于允许一些程序(比如像为个人数字助手[PDA]或者客户关系管理程序等所做的synchroniza-tion工具)去访问联系信息是非常有用的,但是用户在使用它的同时,它也可以被一些病毒或者其他的怀有恶意的可执行文件的传播所使用. 实际上,许多大量的病毒入侵感染者的地址薄去获得地址,它们也可以给自身发信;因为安全更新令这项操作变得困难,一些病毒

通用RPC简易框架

目的:调用远程业务逻辑方法,并对返回的结果进行处理.可扩展支持多种协议:HTTP, JMS, RMI, FTP等,实现负载均衡,异步调用.默认给出HTTP实现. 概念: Agent: 我们将这套实现称为agent Server:远程应用服务, RPC服务的提供者. Client:客户端,RPC服务的调用者 Agent server:agent在server端的部分 Agent client: agent在client端的部分 Agent group:具有相同业务逻辑的远程服务器的组合,提供相同的

基于zeromq的高性能分布式RPC框架Zerorpc 性能测试

Zeromq 是基于zeromq.gevent和 msgpack开发的分布式RPC框架zerorpc-python.这个框架简单.易用. 1. 安装zeromq yum -y install zeromq yum install gcc gcc-c++ libuuid-devel python-uuid uuid wget http://download.zeromq.org/zeromq-2.1.9.tar.gz ./configure make make install 2.安装gevent

用JAX-RPC构建RPC服务和客户机:使用Java API构建基于RPC的Web服务(一)

简介:远程过程调用(RPC)是基于 Simple Object Access Protocol(SOAP)或 Representational State Transfer(REST)的现代 Web 服务的前身.因为所有 Java 平台的 Web 服务 API 都构建 在从 RPC 引入的概念之上,所以要想用 Java 语言编写有效且高效的 Web 服务,理解 Java API for XML-Based RPC(JAX-RPC)几乎是必需的.本教程讲解如何获取.安装和配置 JAX-RPC 并构

php实现的一个简单json rpc框架实例

 这篇文章主要介绍了php实现的一个简单json rpc框架实例,本文给出了RPC服务端和客户端代码以及应用实例,需要的朋友可以参考下     json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现.这种远程过程调用可以使用http作为传输协议,也可以使用其它传输协议,传输的内容是json消息体. 下面我们code一套基于php的rpc框架,此框架中包含rpc的服务端server,和应用端cl