八卦一下。。。整个rmi的问题

08-04-15 Ericx
闲来没事。。看了看ehcache的源代码。。。
发现他的distribute cache支持是采用的rmi作为组播或Notification的实现方式。。。我不怎么理解rmi哈,反正如果让我做的话,我肯定会用传统的网络实现,rmi有什么好处呢?有没有研究过其他distribute 组件的朋友,rmi这东西好像很久没有登上舞台了哈,,
是老外爱鼓弄这古董技术,还是国内人偏重于应用开发,对这些基础技术不怎么了解很正常??

知道的朋友指点下哈。。rmi这东西我还在看01年O reilly的Java RMI。。。
好像是有点老哈

Ericx
2008-04-16 12:32
使用JMS也是个选择阿,为什么偏偏要用rmi?

banq
2008-04-16 18:25
RMI是一个同步通讯方式,EJB集群以及远程客户端调用都是基于RMI,RMI是EJB基础。

JMS是异步通讯方式,同步和异步取决于应用场景。

Ericx
2008-04-18 20:50
不过国内好像搞这东西的不是很多哈,,怎么总感觉没人提起呢。。
看来还是搞搞,为以后搞EJB 的原理打点儿基础阿。。。
有没有高手指点一下啊

banq
2008-04-19 08:57
RMI确实是Java很重要的一个基础概念,它实际是Proxy模式的体现,使用RMI,我们可以在编程时,无需关心A服务器对象如何调用B服务器对象,而在编程时,看成这些对象是在一个JVM中调用,部署运行后,实际是就多台服务器上运行,这就大大简化了编程的工作量,说白了,RMI可以将对象在多台服务器之间传送,通过RMI调用对象,可以象普通在本地调用对象一样,这是分布式计算和OO结合的一个了不起的技术,EJB就是利用了这些优点。

至于你感觉国内搞不是很多,那是因为使用EJB就有RMI了,只有在一些特殊情况下,比如我可能只需要EJB的分布式多计算机计算功能,不需要其分布式事务等功能,那么就可能需要直接使用RMI了,这就是组件的个性化使用,象一些分布式缓存也是使用RMI达到多服务器的集群,现在开始谈云计算cloud computing,RMI类似模式是缺少不了的,这也是OO思想在大型计算机群中的一个基础模式。

国内用不多还有其他原因,比如都是单机使用,都是围绕数据库的集中式主机系统,负载都集中到了数据库,成天想着如何提高中心数据库处理能力,没有想到使用性价比高的分布式计算,更没有想到将数据库系统变成OO系统,这两个条件缺一不可,分布式+OO就是一个崭新划时代的架构,很多人还停留在上个世纪。

另外,RMI和Web服务区别在于,RMI只能运行在Java平台,但是RMI无疑性能要高,没有XML的转换,高性能换来兼容性。

[该贴被banq于2008-04-19 10:20修改过]

Ericx
2008-04-29 19:48
Java RMI 是通过rmic生成stub和skeleton,通过静态编译成class在client和server端使用,而现在的思路就是cglib实现动态代理。无论是动态还是静态,其设计思想是一样的,好多ejb的设计理念都是从早期rmi演变过来,仔细想想,这些东西还是蛮有意思的。不知banq读过server component patterns 没有,从那本书到rmi,仿佛真正把ejb这一套东西的思路搞清楚了,还是蛮有意义的。。
现在还在研究,以后还要向banq多多请教

Ericx
2008-04-29 19:50
没事还可以自己搞个小的ejb container实现。。。呵呵。。还有很长的路要走啊

relive2008
2008-04-30 10:21
我也想写一个EJB实现,目前在研究人家代码

Ericx
2008-04-30 16:51
楼上的在看哪个container?
ejb2 还是ejb3
有时间交流一下阿

banq
2008-05-04 10:51
相关主题:
TSS4最新文章:为什么我们在一个分布式缓存系统中需要整合高适用性的消息系统。
Why should you combine Reliable Messaging with Distributed Caching?

http://www.theserverside.com/tt/articles/article.tss?track=NL-461&ad=637736HOUSE&l=ReliableMessagingDistributedCaching&asrc=EM_NLN_3557717&uid=2633129

分布式缓存是当一台服务器缓存中数据变化,以最快最简单方式通知其他使用该数据的服务器内存,以便及时更新,目前在这方面存在很多挑战,本文作者提出了这样一个新课题模型,当然基础技术基于RMI。

采取通常的JMS来作为分布式缓存之间的消息管理器有些问题:比如顺序问题,到达目标点的消息如果前后次序不一,可能会引起Exception。

一个更细腻更紧密的、高性能的 协调消息系统应该是这样:
manages data in distributed main memory and combines this with the event management semantics found in high performance messaging.
在分布式主机内存之间管理数据,并且和事件Event driven architectures(EDA)管理高度结合。

我们将这种基于类的中间件技术称为数据网格'data fabric' (也可以称为 Data Grid 注意不是基于关系数据库).


数据网格Data Grid 能够管理巨量数据在一个分布式主机内存中以一种稳定的 或可时序信息移动。
the data fabric manages large quantities of fast moving data along with steady state or historical information primarily in distributed main memory

相关话题:分布式事务

http://www.jdon.com/jivejdon/thread/33942.html

[该贴被banq于2008-05-04 11:06修改过]

[该贴被banq于2008-05-04 14:44修改过]

[该贴被banq于2008-05-04 14:48修改过]

Ericx
2008-05-04 21:03
EDA也是个好东西啊。。
以前写过一个基于Excutor的EDA 实现,感觉还是蛮不错的,可惜自己经验不足,不能再去优化了。。

如果真的这样,rmi+eda,分布式缓存之间的消息管理效率就会更高。。
最近在看ehcache的源代码,想具体看看他是怎么实现分布式缓存的

猜你喜欢