大型Java Web系统服务器选型问题探讨

  一位网友在JavaEye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力。由于架构模式和部署调优一直是Java社区的热门话题,这个问题引发了很多热心网友的讨论,其中一些意见对其它大型Web项目也有很好的指导意义。在讨论之初jackson1225这样描述了当前的应用的架构和部署方案:

  目前系统架构如下:

  web层采用struts+tomcat实现,整个系统采用20多台web服务器,其负载均衡采用硬件F5来实现;

  中间层采用无状态会话Bean+DAO+helper类来实现,共3台weblogic服务器,部署有多个EJB,其负载均衡也采用F5来实现;

  数据库层的操作是自己写的通用类实现的,两台ORACLE数据库服务器,分别存放用户信息和业务数据;一台SQL SERVER数据库,是第三方的业务数据信息;

  web层调用EJB远程接口来访问中间件层。web层首先通过一个XML配置文件中配置的EJB接口信息来调用相应的EJB远程接口;

  该系统中一次操作涉及到两个ORACLE库以及一个SQL SERVER库的访问和操作,即有三个数据库连接,在一个事务中完成。

  这样的架构其实很多公司都在使用,因为Struts和Tomcat分别是最流行的Java Web MVC框架和Servlet容器,而F5公司的负载均衡是横向扩展常见的解决方案(例如配置session sticky方案)。由于这个系统中有跨数据源的事务,所以使用Weblogic Server EJB容器和支持两阶段提交的数据库驱动就可以保证跨数据源的事物完整性(当然,容器管理的分布式事务并非是唯一和最优的解决方案)。

  但是随着Rod Johnson重量级的著作《J2EE Development without EJB》和其中的Spring框架的流行,轻量级框架和轻量级容器的概念已经深入人心。所以对于jackson1225提出的这个场景,大多数网友都提出了置疑,认为这个系统滥用了技术,完全是在浪费钱。网友们大都认为SLSB(无状态会话Bean)完全没有必要出现在这个场景中,认为SLSB通过远程接口访问本地资源会有很大的性能开销,这种观点也是Rod johnson在without EJB中批判EJB 2.x中的一大反模式。

时间: 2024-08-03 12:49:07

大型Java Web系统服务器选型问题探讨的相关文章

java web判断服务器是否是本机

1,如何获取浏览器的ip Java代码   /***       * 获取客户端ip地址(可以穿透代理)       * @param request       * @return       */       public static String getClientIpAddr(HttpServletRequest request) {             String ip = request.getHeader("X-Forwarded-For");          

javaweb-java web 系统如何实现功能模块的热插拔?

问题描述 java web 系统如何实现功能模块的热插拔? 在java web 系统中,有时需要根据业务的变化动态的增加或者减少相关的功能模块,如何实现在增加或者减少功能模块时无需重新启动服务器,达到动态的检测到项目功能的变化. 解决方案 使用脚本引擎,动态加载.比如用js作为插件.

java web-web系统页面展示中文简体怎么翻译成繁体。

问题描述 web系统页面展示中文简体怎么翻译成繁体. 有多个java web系统,想提供给港澳台地区使用,不知道怎么把他们都翻译成繁体,或者有什么收费系统能实现? 解决方案 建议调用google翻译来进行.简体翻译成繁体比较麻烦,需要语义的理解,相当于翻译.因为简体字对应不同含义的多个繁体字. 比如游泳.游玩:皇后.后面:头发,发财(游泳.遊玩:皇后.後面:頭髮,發財)等等.简单的转换显得太不专业. 解决方案二: 客户端js就可以做翻译,自己整个简繁体对照表,然后遍历dom内容进行翻译,不过意义

javaee-web系统服务器读取电脑上连接的扫描设备

问题描述 web系统服务器读取电脑上连接的扫描设备 WEB系统 在局域网内有很多电脑,电脑上面用过网线连接了扫描设备(扫描标签),当电脑访问服务器的时候,服务器获取扫描到的信息 解决方案 需要客户端处理吧 服务器不能处理 解决方案二: 这个需要电脑上有个客户端软件,获取扫描信息,然后发送HTTP给web 服务器 解决方案三: 也就是说现在还得写个cs系统?

Java Web 项目 自定义的配置文件存放位置

问题描述 现在手头上在开发一个java web项目,服务器为tomcat,目前在进行代码重构,需要把所有设计到的配置文件都归到conf文件夹中,项目负责人将项目结构如下:POinion --src --conf --lib --WebRoot但是如果把配置文件都归在conf文件夹中,源代码访问该如何定位到这个conf文件夹中的文件呢?我尝试用this.getClass().getResourceAsStream(filename)发现访问不到,通过 this.getClass().getReso

服务器-BS系统 java web打印word文件或者word文件流

问题描述 BS系统 java web打印word文件或者word文件流 BS系统.在服务器存有多个word文件.要求在页面点击打印直接打印. 用户点击打印能够选择打印那些文件,并且能够控制份数. (PS:文件是用户上传的,无法写死) 解决方案 客户端安装word,然后下载打印,否则没办法做到精确.浏览器有自己的打印设置.

大型web系统数据缓存设计

1. 前言 在高访问量的web系统中,缓存几乎是离不开的:但是一个适当.高效的缓存方案设计却并不容易:所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型.常见缓存系统的特点和数据指标.缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速.系统的了解相关知识. 2. 数据库的瓶颈 2.1 数据量 关系型数据库的数据量是比较小的,以我们常用的MySQL为例,单表数据条数一般应该控制在2000w以内,如果业务很复杂的话,可能还要低一些.即便是

阿里云服务器云数据库免费体验(Java Web详细实例)

版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.效果展示 博主部署了两个war包到阿里云服务器上,一个是没有连接数据库的,另外一个是连接了数据库的. (由于阿里云服务器免费使用15天,下面链接约2016年3月9日后无效) (1)无数据库版访问地址:http://120.25.235.171:8080/web_exception_project-0.0.1-SNAPSHOT/login.jhtml  只能用luoguo

局域网-tomcat安装在server服务器上并部署java web项目,自身能访问但其他机器访问失败

问题描述 tomcat安装在server服务器上并部署java web项目,自身能访问但其他机器访问失败 在64位的server服务器上(IP:18.1.1.231)放了tomcat6.0.37,免安装版,在其上部署了java web项目SYXM,打开服务器的浏览器中,http://localhost:8080/SYXM,http://18.1.1.231:8080/SYXM,http://127.0.0.1:8080/SYXM,都可以访问 但是在自己的台式机上(IP:192.168.150.4