1 2 3 4 5 6 7 8 下一页 当并发用户数明显的开始增长,你可能会不满意一台机器所能提供的性能,或者由于单个JVM实例gc的限制,你没法扩展你的Java应用,在这样的情况下你可以做的另外的选择是在多个JVM实例或多台服务器上运行你的系统,我们把这种方法称为水平扩展。 请注意,我们相信能够在一台机器的多个JVM上运行系统的扩展方式是水平扩展方式,而非垂直扩展方式。JVM实例之间的IPC机制是有限的,两个JVM实例之间无法通过管道、共享内存、信号量或指令来进行通讯,不同的JVM进程之间最有效的通讯方式是Socket。简而言之,如果Java EE应用如果扩展到多个JVM实例中运行,那么大多数情况下它也可以扩展到多台服务器上运行。 随着计算机越来越便宜,性能越来越高,通过将低成本的机器群组装为集群可以获得超过那些昂贵的超级计算机所具备的计算能力。不过,大量的计算机也意味着增加了管理的复杂性以及更为复杂的编程模型,就像服务器节点之间的吞吐量和延时等问题。 Java EE集群是一种成熟的技术,我在TSS上写了一篇名为“Uncover the Hood of J2EE Clustering”的文章来描述它的内部机制。 从失败的项目中吸取的教训 采用无共享的集群架构(SNA) Figure 3: share nothing cluster 最具备扩展性的架构当属无共享的集群架构。在这样的集群中,每个节点具备完全相同的功能,并且不需要知道其他节点存在与否。负载均衡器(Load Balancer)来完成如何将请求分发给这些后台的服务器实例。由于负载均衡器只是做一些简单的工作,例如分派请求、健康检查和保持session,因此负载均衡器很少会成为瓶颈。如果后端的数据库系统或其他的信息系统足够的强大,那么通过增加更多的节点,集群的计算能力可以得到线性的增长。 (责任编辑:admin) |