RPC 和 HTTP

本文深入探讨了RPC(远程过程调用)和HTTP(超文本传输协议)的区别与联系,解析它们的工作原理。RPC主要应用于内部系统间高效的数据交换,而HTTP广泛用于Web服务和互联网通信。理解两者在性能、复杂性和使用场景上的差异对于选择合适的技术至关重要。
摘要由CSDN通过智能技术生成
RPC HTTP
 
rpc 字面意思就是远程过程调用,只是对不同应用间相互调用的一种描述, 一种思想。具体怎么调用?实现方式可以是最直接的 tcp 通信,也可以是 http 方式,在很多的消息中间件的技术书籍里,甚至还有使用消息中间件来实现 RPC 调用的,我们知道的 dubbo 是基于 tcp 通信的, gRPC Google 公布的开源软件, 基于最新的 HTTP2.0 协议,底层使用到了 Netty 框架的支持。所以总结来说, rpc 和 http 是完全两个不同层级的东西,他们之间并没有什么可比性。
 
实现 RPC 框架

 

实现 RPC 框架需要解决的那些问题
 
代理问题
代理本质上是要解决什么问题?要解决的是被调用的服务本质上是远程的 服务,但是调用者不知道也不关心,调用者只要结果,具体的事情由代理的那个 对象来负责这件事。既然是远程代理,当然是要用代理模式了。 代理(Proxy) 是一种设计模式 , 即通过代理对象访问目标对象 . 这样做的好处是 : 可以在目标对象实现的基础上, 增强额外的功能操作 , 即扩展目标对象的功能。那 我们这里额外的功能操作是干什么,通过网络访问远程服务。 jdk 的代理有两种实现方式:静态代理和动态代理。
 
序列化问题
序列化问题在计算机里具体是什么?我们的方法调用,有方法名,方法参数, 这些可能是字符串,可能是我们自己定义的 java 的类,但是在网络上传输或者 保存在硬盘的时候,网络或者硬盘并不认得什么字符串或者 javabean ,它只认得 二进制的 01 串,怎么办?要进行序列化,网络传输后要进行实际调用,就要把 二进制的 01 串变回我们实际的 java 的类,这个叫反序列化。 java 里已经为我们 提供了相关的机制 Serializable
通信问题
我们在用序列化把东西变成了可以在网络上传输的二进制的 01 串,但具体 如何通过网络传输?使用 JDK 为我们提供的 BIO
 
登记的服务实例化
登记的服务有可能在我们的系统中就是一个名字,怎么变成实际执行的对象 实例,当然是使用反射机制。
反射机制是什么?
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性 和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获 取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。
反射机制能做什么
反射机制主要提供了以下功能:
•在运行时判断任意一个对象所属的类;
•在运行时构造任意一个类的对象;
•在运行时判断任意一个类所具有的成员变量和方法;
•在运行时调用任意一个对象的方法;
•生成动态代理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

張義帥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值