1、RPC和HTTP对比

1.1 具体实现

RPC:可以基于TCP协议,也可以基于HTTP协议。
HTTP:基于HTTP协议

1.2 效率

RPC:自定义具体实现可以减少很多无用的报文内容,使得报文体积更小。
HTTP:如果是HTTP 1.1 报文中很多内容都是无用的。如果是HTTP2.0以后和RPC相差不大,比RPC少的可能就是一些服务治理等功能。

1.3 连接方式

RPC:长连接支持。
HTTP:每次连接都是3次握手。(断开链接为4次挥手)

1.4 性能

RPC可以基于很多序列化方式。如:thrift
HTTP 主要是通过JSON,序列化和反序列效率更低。

1.5 注册中心

RPC :一般RPC框架都带有注册中心。
HTTP:都是直连。

1.6 负载均衡

RPC:绝大多数RPC框架都带有负载均衡测量。
HTTP:一般都需要借助第三方工具。如:nginx

1.7 综合结论

RPC框架一般都带有丰富的服务治理等功能,更适合企业内部接口调用。而HTTP更适合多平台之间相互调用。

2、HttpClient实现RPC

2.1、Ajax发送json参数写法

var json = '[{"id":123,"name":"bjsxt"},{"id":123,"name":"bjsxt"}]';
$.ajax({url:'/demo5',type:'post',success:function(data){alert(data);for(var i = 0 ;i<data.length;i++){alert(data[i].id +"  "+data[i].name);}},contentType:'application/json',//请求体中内容类型dataType:'json',//响应内容类型。data:json});

2.2、跨域

跨域:协议、ip、端口中只要有一个不同就是跨域请求。
同源策略:浏览器默认只允许ajax访问同源(协议、ip、端口都相同)内容。
解决同源策略:
在控制器接口上添加@CrossOrigin。表示允许跨域。本质在响应头中添加Access-Control-Allow-Origin: *

@RequestMapping("/demo5")
@ResponseBody
@CrossOrigin
public List<People> demo5(@RequestBody List<People> list) {System.out.println(list);return list;
}

3、RMI实现RPC

1 RMI简介

RMI(Remote Method Invocation) 远程方法调用。
RMI是从JDK1.2推出的功能,它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用(JVM)中的内容。
RMI 是Java语言的远程调用,无法实现跨语言。

2 执行流程

Registry(注册表)是放置所有服务器对象的命名空间。 每次服务端创建一个对象时,它都会使用bind()或rebind()方法注册该对象。 这些是使用称为绑定名称的唯一名称注册的。
要调用远程对象,客户端需要该对象的引用。即通过服务端绑定的名称从注册表中获取对象(lookup()方法)。

3 API介绍

3.1 Remote
java.rmi.Remote 定义了此接口为远程调用接口。如果接口被外部调用,需要继承此接口。
3.2 RemoteException
java.rmi.RemoteException
继承了Remote接口的接口中,如果方法是允许被远程调用的,需要抛出此异常。
3.3 UnicastRemoteObject
java.rmi.server.UnicastRemoteObject
此类实现了Remote接口和Serializable接口。
自定义接口实现类除了实现自定义接口还需要继承此类。
3.4 LocateRegistry
java.rmi.registry.LocateRegistry
可以通过LocateRegistry在本机上创建Registry,通过特定的端口就可以访问这个Registry。
3.5 Naming
java.rmi.Naming
Naming定义了发布内容可访问RMI名称。也是通过Naming获取到指定的远程方法。

RPC(远程过程调用)相关推荐

  1. 130、RPC远程过程调用

    RPC简介 1. 什么是RPC 远程过程调用(英语:Remote Procedure Call,缩写为 RPC,也叫远程程序调用)是一个计算机通信协议.该协议允许运行于一台计算机的程序调用另一台计算机 ...

  2. Windows RPC 远程过程调用

    本文章转载自 http://blog.csdn.net/xxxluozhen/article/details/5605818  作者写的很详细并且通俗易懂 一.什么是远程过程调用 什么是远程过程调用 ...

  3. RPC 远程过程调用

    RPC简介 RPC,英文全称: Remote Procedure Call. 中文名: 远程过程调用,是一个计算机通讯协议.借助RPC可以像调用本地服务一样地调用远程服务.比如两台服务器订单服务器和商 ...

  4. zkcli远程连接_高级框架第一天RPC:远程过程调用

    RPC:远程过程调用 主要内容 1.项目结构变化 2.RPC简介 3.RMI实现RPC 4.HttpClient实现RPC 5.Zookeeper安装 6.Zookeeper客户端常用命令 7.向Zo ...

  5. 架构师之路 — 分布式系统 — RPC 远程过程调用

    目录 文章目录 目录 RPC RPC 架构 成熟的开演 RPC 框架 RPC RPC(Remote Procedure Call,远程过程调用)是一种计算机程序通信方式,允许运行于一台计算机中的程序调 ...

  6. RabbitMQ学习系列(五): RPC 远程过程调用

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  7. (扫盲)RPC远程过程调用

    https://blog.csdn.net/mindfloating/article/details/39473807 https://blog.csdn.net/mindfloating/artic ...

  8. 分布式机构 RPC远程过程调用

  9. 远程过程调用RPC简介

    RPC(Remote Procedure Call, 远程过程调用):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想. RPC是一种技术思想而非一种规范或协议,常见RPC技术 ...

  10. RPC(Remote Procedure Calls)远程过程调用

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

最新文章

  1. 你想学Java?资源都在这里了
  2. 如何kill掉tomcat服务
  3. Python机器学习Numpy, Scipy, Pandas, Scikit-learn, Matplotlib, Keras, NN速查手册
  4. 【WebRTC---源码篇】(二)PeerConnectionFactory
  5. python中table表结构_python中的简易表格prettytable
  6. (28)FPGA计数器设计(软核实现)
  7. 计算机二级晓云是企业人力,全国计算机二级Ms-Office精选真题试卷
  8. c语言 callback回调函数
  9. Axure中将不同文件页面合在同一个页面中
  10. 【三维路径规划】基于matlab Nsga-2算法求解无人机三维路径规划【含Matlab源码 1455期】
  11. java可视化tiff转pdf工具
  12. USGS下载LANDSAT5 2级别 影像问题
  13. 彻底了解DVD:从入门到精通(三)[转]
  14. 记事本文件管理器关联文本类
  15. CTP2资金/持仓管理
  16. unity 2D游戏开发 制作帧动画的两种方法
  17. Spark RDD基本操作
  18. html分页实现w3c,JavaScript分页代码
  19. Softmax分类器基本实现
  20. i219v驱动linux下载,Ubuntu 16.04 Intel I-219V卡网驱动问题

热门文章

  1. php代码时间控制,PHP 网页过期时间的控制代码
  2. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库
  3. mysql技术分享--表分区实现
  4. 数据结构----归并排序
  5. linux 如何赋值目录,Linux文件系统之目录的建立
  6. [SCOI2008]着色方案(DP)
  7. 数字(进制/二分/组合数学)
  8. 2016-2017 Central Europe Regional Contest Hangar Hurdles 克鲁斯卡尔重构树 + 建图
  9. Acwing 307. 连通图
  10. jzoj3738-[NOI2014模拟7.11]理想城市(city)【树,模型转换】