天天减肥网,内容丰富有趣,生活中的好帮手!
天天减肥网 > RPC(远程过程调用)

RPC(远程过程调用)

时间:2020-12-11 16:44:00

相关推荐

RPC(远程过程调用)

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@CrossOriginpublic 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(远程过程调用)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。