RPC框架相关笔记

分布式框架整个流程:

前端页面--> controller -- > service --> mapper -->(pojo类,也就是实体类Entity,通常要实现序列化 implements Serializable)-->数据库

根据开发规则,类名或者接口名 ,后边加 s ,通常是工具类。

RPC(Remote Produce Call):远程过程调用框架。

RPC协议规定允许互联网中一台主机程序调用另一台主机程序,而程序员无需对这个交互过程进行编程。在RPC协议中强调当A程序调用B程序中功能或方法时,A是不知道B中方法具体实现的

RPC是上层协议,底层可以基于TCP协议,也可以基于HTTP协议。一般我们说RPC都是基于RPC的具体实现,如:Dubbo框架。从广义上讲只要是满足网络中进行通讯调用都统称为RPC,甚至HTTP协议都可以说是RPC的具体实现,但是具体分析看来---RPC协议要比HTTP协议更加高效,基于RPC的框架功能更多

RPC协议是基于分布式架构而出现的,所以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:(2.0也开始支持长连接)每次连接都是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

HttpClient是一个微框架, (池化思想)支持长连接,主要用这个框架,并使用java代码,来模拟一个浏览器,向服务端发请求,以此模拟 远程过程调用。

模拟的浏览器,向客户端发送Http请求,然后再模拟服务端,向客户端发送一个 Http类型的响应。

2.1无参数GET请求

使用浏览器,访问网站的过程

1.打开浏览器

2.输入地址

3.访问

4.看结果

使用HttpClient,访问WEB服务的过程

1.创建客户端,相当于打开浏览器

2.创建请求地址,相当于输入地址

3.发起请求,相当于访问网站 (==回车键)

4.处理响应结果,相当于 浏览器显示结果

具体代码如下

 

 

2.2有参数GET请求

3.1无参数POST请求

 3.2有参数POST请求

4.RMI实现RPC

RMI:(Remote Method Invocation)远程方法调用。(协议,长连接)

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

RMI 是Java语言的远程调用,无法实现跨语言。

简言之: 用RMI开发一个Client,再开发一个Server

RMI执行流程:

Registry(注册表)是放置所有服务器对象的命名空间。 每次服务端创建一个对象时,它都会使用bind()或rebind()方法注册该对象。 这些是使用称为绑定名称的唯一名称注册的。

要调用远程对象,客户端需要该对象的引用。即通过服务端绑定的名称从注册表中获取对象(lookup()方法)。

如果基于RMI协议,则发送的请求将不再是 http协议,而是 rmi协议的, "rmi:// Ip:port:接口的别名(server的,可自定义,唯一即可)

Client根据访问路径发送请求,RMI自动生成代理,然后Client.方法,即可开始远程调用。

RIM-Registry应该如何实现代理呢?----Naming(请求的路径名),作为参数,然后生成一个proxy类型的代理对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光、相遇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值