本站小编为你精心准备了中小型网站服务器架构设计研究参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
摘要:传统的网站中,为了提高性能使用更多CPU、更大内存、更强的磁盘阵列的小型机,这无疑会使网站初期就要投入大量成本。由于成本的原因,中小型网站不可能选择昂贵的小型机。介绍一个中小型网站的架构设计,使用多台普通服务器搭建网站能够实现高可靠性、高性能、可伸缩性等特征。
关键词:服务器;高性能;可伸缩性
随着互联网的普及,越来越多的个人、机构、企业接入互联网。对于一些机构和企业来说,建设网站可以展示自身,开展相关业务,这几乎是当前这个时代必不可少的部分。对于这些网站来说,首先,应该要有较高的可靠性,在成本允许的范围内减少一年中的故障时间。除了选择可靠性高的服务器、磁盘阵列外,提高可靠性最有效的方法是使用双机或多机热备份。其次,要有较高的安全性,安全性包括保密性、完整性、和可用性。保密性就是要确保重要信息不被非授权地窃取,这主要依赖于软件系统的设计与实现;完整性要确保信息不被伪造、篡改、删除以及意外丢失,这除了软件系统的设计外,在服务器上可以通过双机备份,异地数据备份实现;服务器上的可用性主要体现在能抵抗各种类型的拒绝服务攻击(DenialofService)。第三,服务器架构应具备可伸缩性,对于企业或机构来说,初期可能业务量少,用户访问量少,需要的服务器性能也低,随着时间的推移,更多的用户访问,需要更强的服务器能力。这时需要增加服务器来分担用户访问负荷,这一过程中架构不应有大的调整,特别是软件部分不应有大调整,因为软件的重新开发需要消耗大量的人力。
1服务器的架构设计
1.1整体架构设计
架构如图1所示,服务器类型分为反向服务器、Web服务器、数据库服务器。对于初期小型网站来说,可以根据情况将这三种类型的服务器部署到一台物理服务器上,以节约成本。当需要扩展时,将其分布到多台物理服务器上。
1.2操作系统的选择
目前在网站建设中最常见的操作系统是Linux和WindowsServer系统,Linux的优点体现在它是开源免费的软件,不需要额外支付软件许可费用。同时多数服务器软件如Redis、Nginx、MyCat等在Linux平台上有更好的表现。Windows的优势主要体现在其操作日常人们的操作习惯类似,没有特殊情况应选择Linux操作系统。
1.3服务器软件的选择
多数支持HTTP协议的Web服务器都能支持反向(Reverseproxy),如Nginx、Apache、Squid、Lighttpd等,其中Nginx拥有更好的性能、内存占用少,特别是Nginx社区比较活跃,软件功能模块也多,特别是在高并发情况下比Apache有更好的性能[1-2],所以推荐使用Nginx。
1.4Web服务器的选择
Web服务器的选择更加依赖于软件架构的设计,目前常见的后端开发技术有PHP、Java等,如果使用PHP开发可以选择php-fpm或者Apache,如果使用Java技术,多使用Tomcat。
1.5数据库服务器的选择
对于中小型网站来说,多使用免费的MySQL作为数据库,当然也可以根据实际情况使用Oracle、PostgreSQL等。
2服务器相关技术设计
2.1Nginx反向设计
配置如下所示,在根的位置(/)将所有的请求转发到反向abc(upstreamabc)上,可根据实际情况调整,比如将静态的HTML和JPEG调整到特定的服务器上。要注意根据软件的情况将HTTP报头传到后端,主要配置如下所示:反向可以HTTP请求分配后多个后端服务器上,达到负荷分担的效果。同时,如果某个服务器发生故障,会被剔除出去,实现多机热备份的功能[3]。Nginx有多种负荷均衡方式,默认情况下采用轮询的方式,另外还可以使用ip_hash和权重等方式。特别要注意的是除了采用ip_hash方式,其他的方式会导致同一用户的请求分配到不同的服务器上,这时应考虑使用Session共享技术,保证数据的正确性[4]。
2.2文件同步设计
当有多台web服务器时,需要保证文件内容的同步。Unison是一个多平台上的文件同步工具,能够自动完成两台服务器目录文件的同步,它支持SSH、RSH和Socket等多种网络协议的同步。Unison安装后会在用户目录下生成一个名为.unison的隐藏目录,在其中存放配置文件、日志文件等。default.prf是其配置文件,关键配置如下:如果是快速检查,unison会根据文件生成的时间来确定版本的先后,是否需要同步。否则会对比两个文件的异同,多数情况下使用快速检查即可。配置好后利用,利用cron计划任务定期调用unison即可,要注意非快速检察花费时间非常长,不适合频繁调用。
2.3数据库主从复制设计
对于一般的中小型网站推荐使用免费的MySQL数据库,主从复制就是一台MySQL数据库服务器担任主服务器(Master),多台服务器担任从服务器(Slave),可以向主服务器中读或者写数据,但只能对从服务器执行读操作。从服务器根据主服务器发来的日志信息,和主服务器保持同步[2]。但这种同步是非实时的,比如向主服务器写入一条数据,立刻读从服务器,不会得到更新后的数据,这是开发软件的人员要注意的地方。因为从服务器是依赖主服务器的日志才能更新数据库,因此要打开日志查看主服务器的日志状态,并记录日志位置,然后在从服务器上将日志调整到与主服务器相同的位置即可。
2.4读写分离的设计
数据库实现主从复制后,这对软件开发者不是透明的,因为写数据是一个服务器,读数据又是另一个服务器,那么可以使用数据库中间件技术屏蔽这些差别。MyCat就是其中的佼佼者,它能够实现分库分表,读写分离,故障服务器剔除等。软件开发者将不再需要考虑读写分离的软件在其中添加一个读服务器一个写服务器,主要配置如下:
2.5session共享设计
使用Nginx反向,可能会出现同一用户的请求分发到不同的服务器上,这样必须保证用户数据的一致性。储存在数据库的数据是多台服务器共享的,不会出现不一致的情况,而用户的session数据是在服务器上存储,不能多机共享,因此反这种情况必须实现session共享。现在常见的是使用缓存数据库如Redis、Memcache。相对来说Redis功能比较丰富,除了支持Key/Value类型的数据外,还支持list、set、hash等数据类型,另外redis还能把数据持久化到硬盘中。Memcache的只能将K/V类型的数据存在内存中,程序异常结束将失去所有数据。这里我们以Memcache+PHP为例,实现安装好Memcache,以及PHP中的Memcache模块,在PHP的配置文件PHP.ini中完成如下配置
3结语
传统的网站中,为了提高性能使用更多CPU、更大内存、更强的磁盘阵列的小型机,这无疑会使网站初期就要投入大量成本。使用多台普通服务器搭建网站能够实现高可靠性、高性能以及易拓展性,这种方案更加适合于中小型网站的建设。
参考文献
[1]凌质亿,刘哲星,曹蕾.高并发环境下Apache与Nginx的I/O性能比较[J].计算机系统应用,2013,22(6):204-208.
[2]邢志峰.MySQL主从复制的研究与应用[J].电子技术与软件工程,2017(15):188.
[3]李绪成,刘鑫.大型网站应用架构对比研究[J].软件工程,2017,20(11):30-32.
[4]杨美珍.基于PHP的多服务器共享SESSION的方法[J].信息通信,2013(6):108-109.
作者:梁剑 石岩岭 单位:太原工业学院计算机工程系