2019独角兽企业重金招聘Python工程师标准>>>

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

消息中间件

RPC框架的视频已经录制好,分享群619881427中免费下载学习,希望能够帮助有需要的程序员们。

转载于:https://my.oschina.net/u/3779583/blog/1832358

阿里首席架构师科普RPC框架是什么相关推荐

  1. 阿里首席架构师,带你深入剖析企业IT转型之道和中台战略架构实战

    本篇讲述了阿里巴巴的技术发展史,同时也是一部互联网技术架构的实践与发展史. 前言 为一个复杂的.高速发展的业务构建一个技术系统是一个巨大的挑战.阿里巴巴集团主要是以电子商务.支付为业务主体,这类系统都 ...

  2. 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别

    什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...

  3. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

    内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...

  4. 阿里云混合云首席架构师张晓丹:政企混合云技术架构的演进和发展

    近日,阿里云混合云平台首席架构师张晓丹分享了 IT 架构技术,并对政企混合云技术架构的发展进行展望. 云计算经历了十几年的发展,从被认为是"新瓶装旧酒"而备受质疑,到广泛应用于消费 ...

  5. 阿里安全首席架构师钱磊:安全基建将成数字经济标配

    "新基建"带来了新的发展机遇,也对网络空间安全带来了全新的挑战.两个多月新冠疫情磨砺,让加快发展数字化成为社会共识,以5G.数据中心等为代表的新型基础设施建设,也成为经济复苏的新路 ...

  6. 阿里云首席架构师唐洪:拥抱开源的云端更具生命力

    近日, 国际开源界顶级会议LC3(LinuxCon + ContainerCon + CloudOpen)首次在国内举行,阿里云首席架构师唐洪作为特邀嘉宾出席并发表主题演讲.唐洪首先从一组数字开始,回 ...

  7. 阿里P7架构师要求:Web核心+开源框架+大型网站架构!含面试题目!

    阿里P7技能(一):数据结构和算法: 常用数据结构:链表.堆与栈.哈希表等,常用的排序等. 掌握:精通 阿里P7技能(二):java高级 java相关的高级特性:JVM.多线程高并发.网络等. 掌握: ...

  8. 阿里P8架构师谈:Quartz调度框架详解、运用场景、与集群部署实践

    以下将分别从Quartz架构简介.集群部署实践.Quartz监控.集群原理分析详解Quartz任务调度框架. Quartz简介 Quartz是Java领域最著名的开源任务调度工具,是一个任务调度框架, ...

  9. 阿里云首席架构师解读开源和云端结合的三大优势

    本文讲的是阿里云首席架构师解读开源和云端结合的三大优势[IT168 云计算]6月20日,在LC3(LinuxCon+ContainerCon+CloudOpen)2017中国大会,在阿里云被宣布成为是 ...

最新文章

  1. ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
  2. R语言层次聚类(hierarchical clustering):特征缩放、抽取hclust中的聚类簇(cutree函数从hclust对象中提取每个聚类簇的成员)、基于主成分分析的进行聚类结果可视化
  3. 使用pinctrl 和 gpio 子系统的字符设备驱动
  4. redis linux 文件位置,Linux下Redis的安装和部署
  5. JS线程与事件循环解析
  6. 企业微信_新建自建H5小程序应用及主页与菜单设置
  7. python anaconda安装不上_Anaconda3 2.4与python 3.5安装错误(程序条目未找到; Windows 10)...
  8. 服装关键点检测算法(CNN/STN)含(4点、6点以及8点)
  9. python max_Python max()
  10. SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 4)
  11. 基于trustonic tee使能MTK Widevine L1(SVP)
  12. springboot+vue旅行社旅游拼团系统java
  13. 双目视觉焦距_双目视觉成像原理
  14. uniapp swiper组件被内容撑开
  15. 直线拟合fitLine函数的用法
  16. nand flash基础时序
  17. 2022年 CSP-J1 CSP-S1 初赛 如何进行复习 如何做题
  18. 这有300+门刚刚开课的编程计算机科学免费课程大集合
  19. jQuery中的end()的用法与定义
  20. 大成都范围广告位招商

热门文章

  1. 类加载器的双亲委派及打破双亲委派
  2. Java程序员从笨鸟到菜鸟之(八)反射和代理机制
  3. Storm入门之第一章
  4. Python 的闭包和装饰器
  5. 还原JavaScript的真实历史~
  6. 解析几何:第三章 平面上的直线
  7. [BetterExplained]书写是为了更好的思考
  8. Python基础教程(八):日期和时间、文件I/O、异常处理
  9. Android样式和主题(二):系统有哪些主题
  10. 解决计算机问题的一般步骤