发表于: 2018-02-09 22:41:40
1 710
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
①:小课堂
大家好,我是IT修真院成都分院第九期的学员,一枚正直纯洁善良的java程序员
1.背景介绍
什么是RMI
RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。
2.知识剖析
什么是分布式
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等
运行机制
在与远程对象的通信过程中,RMI使用标准机制:stub和skeleton。远程对象的stub担当远程对象的客户本地代表或代理人角色。调用程序将调用本地stub的方法,而本地stub将负责执行对远程对象的方法调用。
RMI的工作流程
RMI远程调用步骤: 1,客户对象调用客户端辅助对象上的方法
2,客户端辅助对象打包调用信息(变量,方法名),通过网络发送给服务端辅助对象
3,服务端辅助对象将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象
4,调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象
5,服务端辅助对象将结果打包,发送给客户端辅助对象
6,客户端辅助对象将返回值解包,返回给客户对象
7,客户对象获得返回值
对于客户对象来说,步骤2-6是完全透明的
深度思考
JAVARMI和SPRINGRMI的区别
拓展思考
区别
在Spring环境使用RMI时,可以省略以下几点:
1、接口类不需要继承Remote,方法不需要抛出RemoteException异常对象。
2、实现类不需要继承UnicastRemoteObject。
3、RMI服务自动注册。
memcache和redis的区别
什么是reidis
Redis是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希表、链表、集合、有序集合以及基于这些数据类型的相关操作。
区别: 1.由于Redis只使用单核,而Memcached可以使用多核
2. redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化.而memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
3.redis在数据支持上要比memecache多的多,Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
总结:有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。
更多讨论
问题:
1.rmi为什么要跑RemoteException
由于远程方法的本质还是网络通信,只不过隐藏了底层实现,网络通信是经常会出现异常的,所以接口的所有方法都要抛出RemoteException来说明此方法是有风险的;
2.rmi是否算是应用层的协议
应用层的协议定义了运行在不同端系统上的应用程序进程如何相互传递报文,所以rmi是应用层的协议
3.rmi有什么好处,写在一起也可以实现功能
首先rmi是java首先百分之百存java的网络分布式系统的核心解决方案之一,所以这个问题是问分布式有什么好处.分布式可以避免单点故障,将负载从单个节点转移到多个节点从而提高性能,提高单个请求的访问速度, 所以将各处的资源进行整合,而这对于用户是透明的
4.实现rmi要开两个ide吗
这个无所谓,只要你将多个service运行暴露给远程对象调用就行了
明天计划的事情:(一定要写非常细致的内容)
进行知识的回顾.
遇到的问题:(遇到什么困难,怎么解决的)
null
收获:(通过今天的学习,学到了什么知识)
对RMI更熟悉了.
评论