发表于: 2020-02-17 22:30:55

0 995


今天做了什么


完成深度思考

1.springcloud Eureka 
Eureka:Netflix开发的服务发现框架, 本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka和zookeeper


2.部署两台Service,如何在WEB中随机访问任意一台Service? 

通过随机数选择一台Service进行加载;


3.RMI的简单介绍 

RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。


4.什么是RMI,什么是RPC,两者之间的区别是什么? 
RPC(Remote Procedure Call Protocol)远程过程调用协议,一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC是跨语言的通信标准,是协议,SUN的RMI、微软的DOCM是对该协议的不同实现,二者都为编程人员提供了应用RPC技术的程序接口(API)。
(1)RPC跨语言,而RMI只支持Java。
(2) RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型,而RPC 不支持对象的概念, 可以说 RMI 是面向对象方式的 Java RPC 。

主要原因在于都是对SOA思想的一种实现


5.Service和Service之间可以互相调用吗?是应该统一Controller调用Service,还是应该Service调用Service? 

Service和Service之间可以互相调用;统一Controller调用Service,面向服务的架构思想,将Service作为单独的服务,达到解耦的目的,是项目更加清晰,如果service之间相互调用,与其产生的目的不相符。


6.Service对外暴露的接口粒度应该是怎么样的,是只提供基础的CRUD服务,还是应该将业务逻辑包含进去? 

面向服务的架构体系,以springRMI来说,是粗粒度的service,不是只提供基础的CRUD服务,包括一定的业务逻辑,作为一个Server功能;是与微服务所不同的。(我的理解)


7.Thrift,Protobuffer分别是什么,一般用于什么场景? 

google的Protobuf和Apache的Thrift,相当于二进制编码的两种工具,达到序列化的作用;解决RPC跨语言服务时的序列化问题,而不是像现在使用java去继承Serializable接口。


8.什么是序列化和反序列化,在RMI中是否要实现 Serializable 接口, serialVersionUID的用处是什么? 
序列化:把对象转换为字节序列的过程称为对象的序列化;
反序列化:把字节序列恢复为对象的过程称为对象的反序列化;
RMI需要实现Serializable接口,对象需要序列化;

Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的;确保RMI传输,反序列化时,实体类版本一致; 否则就会出现序列化版本不一致的异常,即是InvalidCastException。


9.Controller通过RMI调用服务是否有延迟?10条Long型的ID循环调用1000次,和本地调用之间的时间相差多少? 

Controller通过RMI调用服务有延迟;10条Long型的ID循环调用1000次,查询单条数据100次,相差在0.1s左右(0.07s居多)。


明天要做什么

进入任务九



返回列表 返回列表
评论

    分享到