您好, 访客   登录/注册

网站后端应用系统架构优化

来源:用户上传      作者: 余军 王宝华

  为了解决网站后端应用系统架构目前存在的问题,需要对网络结构和应用系统进行统一优化调整:
  1.实现动、静态文件分离,使用静态文件缓存提高网站访问效率,保护静态文件安全,避免程序问题影响静态页面正常浏览。
  2.使用全局文件系统对网站静态文件以及其他可归档管理的文件进行分类归档管理,使文件集中存储。
  3.对动态程序文件根据系统环境需求进行集群化部署,使用服务器集群和应用集群提供高效、高可用的应用系统环境。
  4.对现有数据库进行集中管理,从而减小数据库风险,提高数据库的性能,降低数据库维护管理成本。
  通过以上种种策略的部署与实施,从而达到整个网站各项应用和访问能够高效、稳定地运行,降低运营风险的目标,具体实现措施为:
  一、使用静态文件缓存提高网站访问效率,保护后端静态文件
  使用Linux下的Squid组建缓存服务集群,对网站的静态文件,如网页文件、样式表文件、页面脚本文件、图片文件、XML文件和其他类型静态文件进行缓存。对原本存储在发布服务器上的静态文件,根据访问请求,将文件根据索引保存在内存中,实现以下几点功能:
  1.硬盘上读取速度明显慢于内存,因此在内存中保存的数据可以以最快的速度返回给访问用户,通过内存索引,减少硬盘文件索引时间和文件读取时间,提高文件命中率,降低后端服务器IO的资源占用,保证高效地对外发布。
  2.Squid是使用反向代理技术,只向后端的源服务器请求数据,不允许通过其他途径对内存里的数据进行更改,因此不会因为网络应用漏洞导致文件内容被篡改,保障了网站静态文件的安全可靠。
  3.通过Squid中的Gzip模块,对缓存的静态文件进行压缩,减少静态文件占用的空间,进而减少静态文件访问对网络带宽的消耗,降低了网络使用成本。
  二、使用全局文件系统对网站静态内容集中存储、归档
  随着网站静态文件发布量逐年增大,其占用的存储空间也不断增大。静态文件发布所在的存储位置零散,文件存储规则各异,目录里的文件杂乱,导致网站历史数据无法集中保存。通过Linux全局文件系统(GFS)对网站静态文件集中存储、归档,可以提高网站应用服务器的使用效率,保障网站静态文件数据安全与完整。
  Linux全局文件系统是基于Linux集群的文件系统,全称是Linux Global File System。部署时使用3台服务器组成静态内容存储集群连接网络存储设备(IP SAN),同时使用同一逻辑分区,共享分区里的目录和文件,这样就能通过相互协商的方式同时对分区内的目录和文件进行写和读,在文件系统发生错误时,可以使用网络存储的快照与回溯对数据进行及时的恢复。
  当静态内容存储集群中的服务器发生写入冲突时,即同时对同一文件进行写入,集群会根据集群成员的投票结果,对异常的服务器采取离线重启的措施,这样可以避免2台服务器对同一文件写入造成的文件损坏,保障了文件的安全可靠。静态内容存储集群还可以根据访问的请求在线增加新的服务器,满足了静态文件不断增多、访问量日益增大的压力。
  在静态内容存储集群中,将原来分布于各个独立服务器上的静态文件集中保存到网络存储中,根据特定的规则对内容进行分类保存,这样既提供了统一的对外发布功能,又能对网站静态文件进行集中的存储,提高网站静态文件发布效率,还能对静态文件进行归档备份和管理,保障了静态文件的安全。
  三、对网站动态程序分类,部署应用程序集群
  由于网站的发展经历了数年,使用的网站程序系统种类繁多,每种网站程序系统又有不同的版本,它们对服务器、操作系统、系统环境的需求各异。为了保障网站应用程序系统高效稳定,经过对目前正在运行的网站应用程序系统整理分类,部署以下几类应用程序集群:
  1.Windows Server平台下的ASP、ASP.NET应用程序集群和JAVA应用程序集群,根据不同的程序分配不同的用户权限、应用程序池,确保每个应用之间不会产生干扰,同一套程序系统分别部署在两台甚至多台服务器上,使用应用负载均衡根据域名、请求路径等策略选择服务器,未被选中的服务器作为备用,随时接替发生故障的服务器。
  2.Linux平台下的PHP应用程序系统集群,使用Linux全局文件系统存储PHP程序文件,并且在每台服务器上部署高效率的Nginx,提供高并发的应用程序请求响应,使用FastCGI通过PHP-FPM执行PHP程序,PHP程序的变量保存在Memcache中共享给集群中所有的PHP程序。PHP应用程序集群可以根据网站的访问量逐渐增加服务器提高网站服务能力,确保了高效的PHP应用程序集群,前端再使用应用负载均衡根据域名、请求路径等策略同时转发所有PHP连接请求到所有的PHP应用程序服务器,提供高并发、高效率和高可用的PHP应用程序集群。
  四、对网站数据库服务统一部署,集中管理
  为了满足网站动态程序集群对高性能、高可用数据库服务的要求,根据数据类型部署了MySQL数据库集群、MS-SQL数据库集群和Oracle数据库集群,实现了对数据库的统一部署和集中管理,分别如下:
  1.使用MySQL Cluster集群服务组建MySQL数据库集群,通过配置MySQL服务,能够最大限度地使用每台数据库服务器资源,提供高效、高并发的数据库服务,集群中的每台服务器都可以作为其他服务器的在线备份,使用MySQL事务日志(bin-log)实现MySQL数据库的近线备份,并且编写Linux Shell在每天凌晨网站请求闲时在网络存储上进行离线备份,确保数据文件的安全可靠。
  2.通过Microsoft SQL Server组建MS-SQL数据库集群,配合数据库镜像服务器,验证数据库服务器的完整性,对集中部署的数据库做分区表,避免数据库文件过大导致数据库系统效率低;配合前端应用负载均衡为ASP、ASP.NET应用程序集群提供高效、稳定、安全的数据库服务,配置数据库维护计划对数据库文件进行近线和离线备份,确保数据库文件的安全。
  3.使用Oracle RAC数据库集群套件部署Oracle真正应用集群(Oracle Real Application Cluster)。部署时使用2台服务器通过网络存储为前端JAVA应用服务集群提供强大的数据库服务,也提供了大型数据仓储和数据分析服务,为网站的大型应用可靠稳定地对外服务提供了保障。
  通过以上的优化和调整,荆楚网目前能有效减少网页文件无法访问的出现几率,各个应用系统的整体可靠性提高了60%,应用系统的效率提高了30%,在满足现有系统高效运行的情况下,节约了7台服务器。同时,极大地降低了应用系统的故障时间和影响,为下一步进行服务器应用虚拟化集群部署提供了基本条件,也确保与提高了网站的服务水平。
  (余军:荆楚网;王宝华:武汉东湖学院)


转载注明来源:https://www.xzbu.com/1/view-224727.htm