`

关于集群和分布式部署

 
阅读更多

EJB的RPC是同步调用可实现分布式计算,是SessionBean和EntityBean用的,而JMS是异步调用。RMI,和webservice也可以实现分布式计算。


举例说明,假设我们的系统有三个EJB组件:人事、财务、销售,都是开放远程接口,有A、B两台应用服务器,EJB分布式的概念就是可以在A上部署人事、财务的EJB包,在B上部署销售的EJB包,假如有一天用户发现负载不太均衡,就可能调整为在A上部署财务的EJB包,在B上部署人事、销售的EJB包,而程序不必修改。

而应用服务器集群是这样的,在A、B上都部署全部EJB包,当然还需要在服务器上进行一些集群的设置,这样一来,负载均衡就完全交给应用服务器来管理了。

至于集群是否足以替代分布式部署(注意:不是分布式计算),正是大家争论的焦点。

EJB解决的是分布式计算问题,不是群集问题,就算你用EJB,你照样无法做到缓存同步,Session同步,分布式和群集是两个不同的概念

主要看具体是什么集群。现在有些用F5之类的负载均衡器的应用也被叫做集群,还有双机热备(部分人也把它叫集群,其实只有一台机器在工作,另一台是备份机,平时不参与业务,只有主机不能提供服务的时候,备份机采工作)。还有用一些JVM集群缓存软件构件的集群。这些集群每台机器一般都需要单独部署。因为使用F5负载均衡和双机热备的,其实是一台台单机。JVM缓存我没有用过,不太清楚。不过估计应用服务器自己并不知道还有其他机器和自己同步。

标准的JavaEE集群一般分两种,war集群及EJB集群。war因为考虑到Session复制的问题,一般不推荐做大集群。不过用来做2-3台的廉价入门集群还是可以的。 
EJB集群一般在上面部署的都是EJB组件。不同厂商用不同的办法来保证有状态SessionBean的集群复制。比如Weblogic采用双机结对、Sun使用特殊的数据库同步。一般有一台专门的代理管理服务器负责对整个集群的管理,所以在这台管理器上进行部署就可以了。 
应用在集群上面跑和在单机上面跑是完全不同的两个概念。很多单机上可以使用的框架和设计模式在集群环境下是绝对不能使用的。比如单例模式。集群环境下根本无法再集群中只有一个单例,每个服务器都会有自己的单例。还有就是Spring,Spring目前是不能用于标准的JavaEE集群环境下的(因为spring里应用了很多singleton模式)。当然,有人推出了Spring的集群框架,不过我不太清楚是否好用。AOP配置集群的话,估计会很复杂。


别人说的,没实趼过...


标准的JavaEE集群,一般情况下是这样的。 
入口是一个负载均衡器(有时候也用apache之类的),然后是若干台web服务器(如Tomcat),再后边是EJB集群。最后是数据库。 
这是JavaEE集群模型的标准构造。JavaEE集群的核心是EJB集群。但是如果应用没有达到足够大的规模,且设计不好的话,会产生很多问题。这也是当初为什么老EJB架构被人诟病的地方。

单机应用是中小型项目的主流。我们在中小型项目中一般只用到事务处理,分布式、容灾等功能一般用不上。所以Spring才会发展这么快。但是企业在发展,当初用Spring开发的程序需要跑集群了,结果发现无法在集群上使用,所以才会出现用AOP方式对Spring添加集群和JVM分布式缓存来进行集群化的方案。但即使如此,很多单机下可以使用的代码,在集群下可能是根本无法跑的。单例、静态对象等等,在集群模式下会出现各种问题。 
所以,现在很多人都只用F5和Apache做分发器,后边跟一大堆互不往来的Tomcat之类的Web服务器。这么做最大的问题是无法使用缓存。因为如果使用缓存,那么其他机器更改了数据库的话,缓存无法刷新而形成脏数据。结果大大拖累了性能。 
如果你的应用是中小型低负载应用,那么可以只考虑单机。如果以后要使用集群,可以先用Spring集群(好像是叫Cluster4Spring)和JVM分布式缓存。如果应用大到必须分布式的程度,那么还是更换成EJB架构吧。

分享到:
评论

相关推荐

    分布式集群部署手册.pdf

    对常用分布式集群部署做了一个整合,包含Spring cloud,Spring cloud alibaba,Mysql集群,Redis集群等,对常用的集群做了一个整合以及快速部署。 文档采用latex编译,非常精美。

    mongodb的大型分布式部署

    因此,MongoDB支持多种分布式部署模式来提高系统的可扩展性和可靠性。 ##### 1.1 分片概念介绍 - **分片(Sharding)**:指将数据分布在多个物理服务器上的技术,每个分片持有部分数据。这种设计可以有效提高系统...

    集群与分布式的区别

    集群与分布式的区别 单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器...

    SQLServer的分布式部署方案探讨.pdf

    本文探讨了分布式数据库解决方案的实现,通过读写分离和负载均衡技术,降低单台服务器的压力,提高系统的稳定性和扩展性。读写分离的基本原理是让写数据库处理事务性操作,而读数据库处理查询操作。数据库复制被用来...

    Cognos分布式集群部署

    为了满足大型组织对高性能、高可用性的需求,Cognos支持分布式集群部署,能够有效提升系统的处理能力和服务质量。 #### 二、Cognos 8.3 分布式集群部署环境说明 **1. 安装软件版本:** - **Cognos版本:** 8.3 ...

    MySQL分布式集群部署

    为5台机器全部安装64位centos6.4并配置好网络: 数据库Master主服务器(两台):10.18.12.152,10.18.12.153 数据库Slave从服务器(两台,即sql及存储节点):10.18.12.154,10.18.12.155 MySQL-Proxy调度服务器:...

    minio分布式部署搭建文档及安装程序

    分布式部署是MinIO的核心特性之一,它允许你通过多台服务器创建一个高可用、高性能的对象存储集群。以下是一些关键点: 1. **节点配置**:MinIO分布式部署需要至少四个服务器或节点。每个节点都应配置为独立的...

    redis3分布式集群部署

    ### Redis 3 分布式集群部署详解 #### 一、Redis 概述 Redis (Remote Dictionary Server) 是一款开源的高性能键值对数据库。它以其卓越的性能和灵活性,在多种应用场景中发挥着重要作用,比如缓存、消息队列等。...

    Docker+K8S 集群环境搭建及分布式应用部署

    Docker的简单和高效使得容器化技术大受欢迎,而Kubernetes作为容器化应用的集群管理解决方案,则为大规模分布式应用的部署、管理和扩展提供了强大的支持。随着云计算和微服务架构的发展,Docker和Kubernetes的使用...

    WebLogic集群与分布式

    这份文档很可能是关于如何搭建和配置WebLogic集群的详细指南,涵盖了从安装准备到集群运维的各个环节。内容可能包括环境设置、服务器实例的创建、集群配置、网络设置、安全策略、应用部署以及故障排查等内容。对于...

    hadoop分布式部署教程

    ### Hadoop分布式部署教程知识点详解 #### 一、Hadoop分布式集群配置背景及意义 Hadoop是一种能够处理海量数据的大规模分布式存储与处理框架。它通过Hadoop分布式文件系统(HDFS)和MapReduce计算框架提供了可靠的...

    MySQL分布式集群部署文档集合

    本篇将详细讲解基于提供的文件名所涵盖的三个关键知识点:MySQL双机集群、MySQL AB Cluster以及MySQL分布式集群部署。 1. MySQL双机集群: 双机集群,也称为主备复制,是一种常见的高可用性解决方案。在这个配置中...

    分布式集群系统架构设计及应用部署.pdf

    分布式集群系统架构设计及应用部署是指在高并发访问量和海量数据环境下,通过部署分布式集群环境系统来解决由于瞬间并发访问量过大造成网站崩溃、服务暂停的问题。该系统架构设计采用了分布式模式,使用 Vue 和 ...

    Kafka分布式集群安装部署.doc

    为了确保Kafka的高可用性和可靠性,需要安装和部署分布式集群。本文将详细介绍Kafka分布式集群安装部署的过程和经验。 1. Kafka分布式集群安装部署的重要性 Kafka分布式集群安装部署是保证Kafka系统高可用性和可靠...

    Redis分布式集群部署安装及细节.docx

    Redis分布式集群部署安装及细节是Redis高级应用中的一部分,了解Redis集群的架构、安装、配置和管理是非常重要的。本文档提供了详细的Redis集群安装和配置指南,旨在帮助读者快速部署和管理Redis集群。

    redis+tomcat+nginx分布式部署

    在现代Web应用开发中,随着用户数量的增长和业务需求的变化,单体架构往往难以满足高性能、高可用性的要求,因此分布式部署成为一种常见的解决方案。本文将围绕“Redis + Tomcat + Nginx”的分布式部署模式进行深入...

    区域妇幼信息系统的分布式部署.pdf

    在分布式部署的上下文中,集群部署指的是将多个服务器组织起来作为一个统一的整体对外提供服务,这种方式可以显著提高系统的可用性和负载能力。对于区域妇幼信息系统,集群部署能确保系统在大量数据和高并发访问情况...

    quartz集群 分布式

    在分布式环境中,Quartz集群能够实现任务的高可用性和负载均衡。Spring Quartz则是将Quartz与Spring框架整合,使得任务调度变得更加方便。 一、Quartz集群原理 Quartz集群的基本思想是多个Quartz Scheduler实例...

    第六讲-缓存接入之多级缓存实现及分布式部署落地实践.pdf

    分布式部署采用服务集群模式,通过负载均衡服务器如openresty来分散请求,实现多台服务器协同工作,有效提升了系统的处理能力和容错性。压力测试在此过程中起到了关键作用,能够检验不同部署策略下的服务性能。 接...

Global site tag (gtag.js) - Google Analytics