您好, 访客   登录/注册

基于SSH框架的高并发与高可用网站架构的设计与开发

来源:用户上传      作者:张鹏

  摘要:互联网技术的逐步成熟使得越来越多的用户进入网络,享受网络给自己生活带来的便捷。但是,用户的增多给许多商业网站提出了新的挑战。如何在大用户量访问网站时,保证网站的流畅度和稳定性,成为判断一个商业网站是否成功的显著标志。该文基于SSH框架提出了一种高并发、高可用网站架构以解决上述问题。首先利用SSH技术构建服务器端,利用集群理念,延伸服务器数量,形成服务器集群。通过Nginx技术实现多服务器间的负载均衡,减轻大访问量单一服务器上的压力,保证服务器的高可用性。同时,使用RabbitMQ消息队列的异步处理机制,对访问高峰期请求进行削峰处理,减少响应所需时间,提高网站高并发处理能力。
  关键词:负载均衡;高并发;高可用;消息队列
  中图分类号:TP311文献标识码:A
  文章编号:1009-3044(2020)27-0100-02
  开放科学(资源服务)标识码(OSID):
  1 引言
  互联网技术日趋成熟带来了大量用户的网站访问需求,高并发[1]和高可用已经成为对于一个成熟的商业网站必备的要求。而以往的单服务器网站面对高并发的情形时,极易导致单位时间内服务器压力骤增,既无法及时响应用户请求,而且容易导致服务器崩溃,降低系统可用性。面对以上问题,本系统采用集群理念,延伸服務器数量,形成服务器集群[3],保证在一台服务器宕机的情况下,仍有其他服务器可用。并且通过Nginx技术实现多服务器间的负载均衡[2],实现网站的高可用性。同时,使用RabbitMQ消息队列[4-5]的异步处理机制,对访问高峰期请求进行削峰处理,减少响应所需时间,提高网站高并发处理能力。
  2 系统分析与设计
  网站整体架构如图1所示,当网站遭遇高并发时,大量的用户请求从浏览器端进入到后台服务器。此时Nginx会根据服务器权重优先级进行请求分配,实现负载均衡,减轻单服务器处理压力。为保证在高并发时,网站达到减少服务器响应时间、增强用户体验度的目标,网站架构中加入消息队列服务器,通过其异步处理功能,使得网站系统在不影响响应速度的同时,利用消息驱动机制,降低数据库压力,最终形成一个高并发、高可用的网络架构。
  2.1 服务器的设计
  服务器端采用SSH框架技术进行设计,如图2所示,采用SSH框架[6-8]进行服务器设计的优点在于各个框架可以发挥各自在Web应用各层上的特点,互相协同,实现“低耦合、高内聚”的软件系统设计思想。在JavaEE分层设计结构中,Hibernate框架主要负责数据持久层,进行数据库的交互处理工作;Struts框架专注于控制层工作,对用户请求响应进行控制调度;而Spring框架利用其IOC和AOP技术,贯穿于各层当中,负责整个Web项目中类的集中管理,通过IOC容器进行各类的实例化创建工作。并且借助于AOP技术[9]实现核心业务与辅助业务相分离,真正做到各模块间低耦合的设计效果。
  2.2 Nginx技术与服务器集群的分析与使用
  当大量的用户请求从浏览器端进入到后台服务器时,如图3所示,Nginx会根据服务器权重优先级进行请求分配,将用户请求进行分流,减轻单位时间单体服务器的请求处理压力,实现负载均衡,减轻单服务器处理压力。同时,Nginx在处理静态文件的吞吐量优于tomcat,通过Nginx的反向代理功能,实现动态资源请求与静态资源请求相分离,即诸如css、png.js等静态资源交由Nginx处理,而诸如jsp、servlet等动态资源交由tomcat处理,从而达到动静分离的效果。本网站架构充分利用集群理念,延伸服务器数量,形成服务器集群,保证在出现某一个服务器宕机的情况下,能够实现运行不断档,形成一个高可用性网站架构。
  2.3 消息队列服务器的设计
  当传统的网络架构中遭遇高并发的情形时,如图4所示,大量的用户请求会直接与数据库进行互动,导致数据库瞬时压力骤增,从而接受响应的时间增加,严重影响用户体验。本网站架构中使用RabbitMQ作为消息队列使用,如图5所示。消息队列的引入使得用户请求在到达消息队列服务器时立即返回,之后由消息队列的消费者进程获取刚刚的数据,异步写入数据库。因消息队列服务器在处理速度与伸缩性上均优于数据库,所以响应速度得到大幅改善。
  2.4 缓存机制的设计
  在大并发量的情况下,大量的数据需要进行读取操作,如果每次程序都需要向数据库直接做查询操作,则其所带来的性能开销显而易见,频繁的网络传输也会大大降低系统的整体性能。因此cache的引入对于解决高并发问题非常有效,它能让数据在本地内存中保留一个镜像,下次访问时只需从内存中直接获取,对于网站整体性能提升明显。
  在hibernate框架中,一级缓存存在于Session中,属于事务级数据缓冲。一旦事务结束,一级Cache也随之失效。同时,如图6所示,本网站架构中增加第三方的数据库连接池C3PO。因为建立数据库连接时会消耗一定时间,所以采用数据库连接池技术预先建立多条数据库连接,并在将来持续使用,从而节约掉建立数据库连所需时间,C3PO的引入对于高并发随机访问数据库时的效率提升有很大帮助。
  3 实验
  测试部分中,本文将上述所设计集群服务器架构与传统的单体服务器架构相对比。通过JMeter发起海量并发数据请求,对两种不同的架构进行压力测试,验证其是否满足高并发与高可用网络架构要求。表1展示了数据访问性测试用例内容。
  为了保证数据访问测试的可信度,本文分别从4个维度,对比两种不同类型架构数据访问所需耗时。表2展示了在4种不同性能指标下,两种不同类型架构的性能数据。
  如图7所示,通过对比测试,本文网站架构在TP90、TP95、TP99各维度中均大幅度优于传统架构,网络请求耗时相比之前更少、响应速度更快、用户体验流畅度更优。满足一个高并发与高可用网站架构要求。
  4 总结
  本文是基于SSH框架提出了一种高并发、高可用网站架构。主要是在面临海量用户请求业务场景时,可以保证服务器快速响应、运行平稳,无差错。本文在SSH构建服务器的基础上形成集群,并辅之以Nginx高性能技术、RabbitMQ消息队列和缓存机制等。经过压力测试,网络请求耗时显著减少,证明了本文所述框架的有效性。
  参考文献:
  [1]潘乐,胡鑫,余伟,等,一种高并发服务处理的优化方法[J].信息技术与信息化,2020(3):22-24.
  [2]张宇星,马明栋,王得玉.基于Nginx负载均衡的动态改进算法[J].计算机技术与发展,2020,30(3):73-76,81.
  [3]王瑛,基于Java应用的高并发高可用集群服务器的设计与实现[J].电子技术与软件工程,2019(20):139-140.
  [4]余永城,翁秋华,段卿,等.RabbitMQ在气象通信系统中的应用研究[J].计算机技术与发展,2020,30(4):216-220.
  [5]陈思媛,易国洪,金旺.智能停车系统中消息中间件的设计与实现[J].武汉工程大学学报,2020,42(2):224-230.
  [6]何晶,以SSH框架与iQuery技术为基础的Java-Web开发应用探讨[J].计算机产品与流通,2019(11):104-105.
  [7]潘恺晔.基于SSM框架的CRM系统的实现[J].山东农业工程学院学报,2019,36(8):20-21,102.
  [8]张健.基于SSH框架技术重构OA管理系统的实现[J].信息技术,2019,43(7):106-109,115.
  [9]唐念刚,张勇.AOP技术在Web系统日志和事物管理中的应用[J].电子设计工程,2017,25(16):42-45.
  【通联编辑:闻翔军】
转载注明来源:https://www.xzbu.com/8/view-15343696.htm