搜索
您的当前位置:首页正文

基于nginx、tomcat、redis的高性能Java+Web开源架构

来源:小奈知识网
软件设计应用研发基于nginx、tomcat、redis的高性能Java Web开源架构陈玲 / 泸州职业技术学院摘 要:Java Web最常用的服务器是Tomcat,但是Tomcat处理静态资源能力有着缺陷,本文介绍了使用tomcat集群加nginx作为web服务器,同时nginx做负载均衡,加上redis内存数据库作为session存储和数据库缓存的架构方案,所有这些技术均为开源软件,免除了授权的问题。关键词:Tomcat;nginx;redis;开源Tomcat快速、高效、易于部署,并且开源,Tomcat间自动实时复制session信息,配置简单。但该方案是Java Web最常用的开源服务器。但是在处的效率比较低,在高并发场合下表现并不好。另一种方案理静态资源上,Tomcat相对于现在流行的高是利用nginx的基于访问IP的hash路由策略,保证访问的IP性能Web服务器,如nginx、lighttpd尚有不小的差距。因始终被路由到同一个tomcat上。以单服务器Tomcat集群为此,在追求高并发、重负载的场合,可以在Tomcat集群前例,需要修改Tomcat的三处端口。首先是修改Tomcat的关加上nginx处理静态资源以及负载均衡。同时,对于高并闭端口,每个Tomcat不能重复:发的场合,数据库的查询性能很容易成为瓶颈,使用连接池技术加上内存数据库redis作缓存可以大幅度的提升查询然后修改Tomcat的监听端口,同样不能重复:性能。中,即使某些操作系统可以使用超过4G,JVM的也限制了第三处端口修改Tomcat的连接端口:最多只能够使用2G内存。Tomcat容器的默认配置吞吐量也置,修改server.xml文件。最后Engine元素增加jvmRoute属性maxSpareThreads=\"75\"2 nginx作负载均衡和动静态分离enableLookups=\"false\" disableUploadTimeout=\"true\" nginx是一个高性能的HTTP和反向代理服务器,处理connectionTimeout=\"20000\"静态资源的能力得到了众多高并发Web站点的考验,nginxacceptCount=\"300\" maxThreads=\"300\"maxProcesso可以按照调度规则实现动态、静态页面的分离,可以按照rs=\"1000\" minProcessors=\"5\"轮询、ip hash、URL hash、权重等多种方式对后端服务useURIValidationHack=\"false\" compression=\"on\" 器做负载均衡。使用nginx在Tomcat的前端作反向代理,compressionMinSize=\"2048\"nginx处理如html、css、js、图片等静态资源,而将动态的compressableMimeType=\"text/html,text/xml,text/请求转发给Tomcat集群进行处理,从而充分的结合nginx和javascript,text/css,text/plain\"Tomcat的长处,分别处理静态和动态资源。redirectPort=\"8443\"nginx的负载均衡配置配置如下所示:/>upstream web_server {其中URIEncoding=”UTF-8”表示可以解析含有中文#ip_hash;的URL,acceptCount是等待队列,maxThreads为最大线程server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; 数,即最大并发数。单个Tomcat处理能力有限,在现在的server 127.0.0.1:8081 max_fails=3 fail_timeout=30s; 服务器配置情况下,常常不能够利用完CPU和内存就达到}最大负载,此时,可以使用Tomcat的纵向集群,即单台服其中参数max_fails=3,表示允许在30秒内后端服务器务器运行多个Tomcat。如果还不能达到高并发的需要,那有3次失败,如果大于3次,则将该后端服务器标记为不可么就需要使用Tomcat的横向集群,即多台服务器运行多个用,该参数主要用过于对后端服务器进行健康检查。Tomcat。3 redis做session存储集群方案可以使用Tomcat自带的cluster方式,多个Web服务集群最大的难点就是如何能在集群中的多个◆中图分类号:TP311.52下转第298页》》》》》》Computer CD Software and Applications296计算机光盘软件与应用22期内页-出版.indd 2962015-01-01 12:03:38软件设计应用研发的GetGoodsList()这个函数。其实来说三层架构里面类范,让层和层二者间的依赖性得以降低,让系统的可扩展的功能保持相对完整的状态,使用它的功能时,能对其性得以强化。另外三层架构具有强的复用性、开发周期也直接调用,促使程序的结构简便,复用性也非常强,进变少。进行现代程序设计的目的即为确保实践效果的实行维护也简单。数据库进行迁移、有时进行密码更正,现,于最短的时间内实施应用,获取最高的经济价值,系此时仅仅对数据访问层里面数据库连接类DBConn.vb里的统各种功能模块处于每层里面都存在已经定义的接口,给连接字符串函数ConnStr()作出更正就行了。其他层为予别的功能模块进行调用,此类设计架构让团队并发试开访问数据库均是调用的连接字符串函数ConnStr(),进发得以实现,程序的复用性得以提升,开发成本明显减而促使程序的修改量以及出错几率变小。进行整个设计少。UI工作者仅仅考虑用户界面的体验及其操作,开发设的时候,让项目逻辑结构显得更为全面,根据系统需求计工作者只要重视业务逻辑层的设计,数据库设计工作者功能对数据库结构进行合理设计,分功能模块由页面开不用麻烦于复杂的用户交互。所有开发人员的任务清晰,始进行设计,还要进行业务逻辑层算法代码以及数据访能大力提升开发进度。问层代码的编写。5 结束语4 三层架构的应用程序设计总结利用三层架构设计思路对Web程序设计有着重要的意三层架构的优点主要表现于依赖性不大以及扩展性义,以其灵活、高效的优势获得了软件开发者的一致认强。如果分层系统没有各种逻辑关系紧密连接、相互关联可。在未来的程序中,三层架构思想应用将会更加广泛,制约、彼此间相互依赖不可替代,要求在改变的同时,就展现更高的价值,同时在设计过程中有一些问题需要注系统产生很大的影响。三层架构就每层各自的职责作出规意,提前进行规避,才能够设计出最完美的程序。参考文献:[1]刘娜,王如龙.基于ASP.NET的校园网上商店的研究与实现[J].电脑知识与技术(学术交流),2007(09).[2]岳敏,刘遵仁.基于.NetFramework的N层分布式企业应用架构的研究[J].大众科技,2006(03).[3]张秋余,贾志龙,杨玥.基于.NET的分布式软件框架的研究与应用[J].兰州理工大学学报,2006(05).[4]章利,范滨多,曹乐松.基于ASP .net动态网站的设计与实现[J].信息技术,2007(01).[5]王涛,陈曦,王伟胜.基于Web的新疆资源生态环境数据库应用系统的设计与实现[J].计算机工程与应用,2004(23).作者单位:南昌大学 科学技术学院,南昌 330029《《《《《《上接第296页节点之间保持数据的一致性,Session是这些数据中最重要Web应用并发数增大后,数据库I/O容易成为整个系统的一块。Tomcat集群可以通过Tomcat自带的session复制,的瓶颈,一般可以通过数据库拆分,建立数据库集群来解将session同步复制到每一个Tomcat中,但如果集群内节点决该问题,但数据库集群的建立无疑需要较大的成本,同较多,容易引起session广播风暴。还有种方案是将session时必须要由水平很高的DBA进行实施。如果使用内存数据放到一个数据库中集中存储,这就要求该数据库具备非常库对传统数据库做缓存,实现查询缓存(以sql为key缓存高的性能,使用redis内存数据库可以很好的满足Tomcat集查询结果)和数据缓冲,由于内存的访问速度远远超过硬群的需求。盘,可以极大的提升查询效率。同时也可以将一些更新频在Tomcat 的conf/context.xml 文件里增加如下内容:率较低但查询频率较高(如基础数据表、配置文件)等数5 结束语所有技术均为开源软件,建议使用的服务器操作系统为4 redis用作数据缓存Linux,可以节省软件使用的授权成本。参考文献:[1]曾超宇,李金香.Redis在高速缓存系统中的应用[J].微型机与应用,2013(12).[2]任世宗,李润知,张茜.基于Nginx的可扩展负载均衡Web站点部署[J].中国教育网络,2014(08).作者单位:泸州职业技术学院,四川泸州 646005Computer CD Software and Applications298计算机光盘软件与应用22期内页-出版.indd 2982015-01-01 12:03:38基于nginx、tomcat、redis的高性能Java Web开源架构

作者:作者单位:刊名:英文刊名:年,卷(期):

陈玲

泸州职业技术学院,四川泸州,646005计算机光盘软件与应用

Computer CD Software and Applications2014(22)

1.曾超宇,李金香 Redis在高速缓存系统中的应用[期刊论文]-微型机与应用 2013(12)2.任世宗;李润知;张茜 基于Nginx的可扩展负载均衡Web站点部署 2014(08)

引用本文格式:陈玲 基于nginx、tomcat、redis的高性能Java Web开源架构[期刊论文]-计算机光盘软件与应用 2014(22)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top