今天完成的事情:task8深度思考
1.什么是rmi?为什么要使用rmi框架?
RMI:远程方法调用
RMI 优点
(1)RMI是Java编写的, 具有 “编写一次,到处运行 ” 的特性。任何基于RMI的系统均可100%地移植到 任何Java虚拟机上
(2). 面向对象:RMI可将完整的对象作为参数和返回值进行传递直接通过网络传输对象数据。
(3).可移动属性:RMI可将属性从客户机移动到服务器,或者从服务器移到客户机。
(4).设计方式:对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能。
(5).安 全:RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。
2.部署两台Service,如何在WEB中随机访问任意一台Service?
使用 nginx,配置客户端连接到 nginx。
3.RMI的简单介绍
Java RMI,即 远程方法调用(Remote Method Invocation),一种用于实现远程过程调用(RPC)(Remote procedure call)的Java API, 能直接传输序列化后的Java对象和分布式垃圾收集。它的实现依赖于Java虚拟机(JVM),因此它仅支持从一个JVM到另一个JVM的调用。
RMI主要分为三部分
RMI Registry注册中心
RMI Client 客户端
RMI Server服务端
4.什么是RMI,什么是RPC,两者之间的区别是什么?
RMI 远程方法调用是一种技术框架
RPC是 远程过程调用协议,通过网络从远程计算机上请求调用某种服务。
区别
(1)方法调用方式不同:
RMI中是通过在客户端的Stub对象作为远程接口进行远程方法的调用。每个远程方法都具有方法签名。如果一个方法在服务器上执行,
但是没有相匹配的签名被添加到这个远程接口(stub)上,那么这个新方法就不能被RMI客户方所调用。
RPC中是通过网络服务协议向远程主机发送请求,请求包含了一个参数集和一个文本值,通常形成“classname.methodname(参数集)”的形式。RPC远程主机就去搜索与之相匹配的类和方法,找到后就执行方法并把结果编码,通过网络协议发回。
(2)适用语言范围不同:
RMI只用于Java;
RPC是网络服务协议,与操作系统和语言无关。
(3)调用结果的返回形式不同:
Java是面向对象的,所以RMI的调用结果可以是对象类型或者基本数据类型;
RMI的结果统一由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。
5.Service和Service之间可以互相调用吗?是应该统一Controller调用Service,还是应该Service调用Service?
Service之间可以调用,但是不建议这么做,除非方法是service公用的工具类。
之所以不建议调用,是为了减少耦合性,同一层之间,最好不要耦合。
应该统一Controller调用Service
6.Service对外暴露的接口粒度应该是怎么样的,是只提供基础的CRUD服务,还是应该将业务逻辑包含进去?
应该包含业务逻辑,这样性能有所提升
7.Thrift,Protobuffer分别是什么,一般用于什么场景?
8.什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么?
(1)Java序列化就是指把Java对象转换为字节序列的过程
(2) Java反序列化就是指把字节序列恢复为Java对象的过程。
(3)RMI中要实现Serializable 接口,serialVersionUID的用处是为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
9.Controller通过RMI调用服务是否有延迟?10条Long型的ID循环调用1000次,和本地调用之间的时间相差多少?
有延迟
明天计划的事情:学习Springboot
评论