四. Java中一些替代思路
1) RMI 也可以设置 timeout,因为底层无非都是基于Socket
2) RMI也可以实现无单点故障及负载均衡,参看 Clustered Remoting For Spring Framework Cluster4Spring 支持一对多调用,动态发现服务(dynamic services discovering)及远程错误监控, The Server Side 上有更多深入的讨论
3) 分布式内存共享 Coherence Data Grid, Openfire Cluster 就用了这个模块,不过这个框架不是开源的。
4) 分布式内存共享 Terracotta,这是一个开源的,Scala会采用这个
5) JGroups 可靠的组播服务,集群通讯首选的工具库,在其他语言无类似替代产品。JGroups介绍可参看前文 JGroups 简介、适用场合、配置、程序例子Demo等完全使用指南
6) Concurrent, Erlang中有轻量级的process, Java7中会有Doug Lea主导的fork/join
不过 Erlang里面还有Java中暂时无法替代的优势, 如Immutable变量, 无共享内存,Process交换数据通过消息传递实现等,这些特性在多核CPU下具有先天优势,相关资料也很多,就不这里重复了。
《构建可扩展的Web站点》一些观点
2008-07-24 00:00
Building Scalable Web Sites一书大家基本上都是冲着Flickr和Cal Henderson首席架构师的名头去的,最近看到有中文版了就订了一本。书中全部代码用PHP为例,但其实跟PHP关系不大。书中实用的章节不多,先看了远程服务一章。