设计高可用和高负载的网站系统的几个注意事项

所属分类: 网络编程 / 相关技巧 阅读数: 493
收藏 0 赞 0 分享
其实要设计一个高可用、高负载的系统还是有一定的规矩可循的,其手段无外乎向上扩展(Sacle Up 硬件扩展)或者向外扩展(Scale Out 软件扩展),这两种方案在某一阶段时期,会显著改善网站的性能,但不久之后,问题依旧。本文参考网上相关资料,试图提供一个可行的 "有限" 解决方案。

早期

1. 对业务应用进行垂直分割,将不同的业务边界划分出来。程序员常说的 "多层体系" 只是纵向解决了不同编程层次的划分,相对于业务而言,并没有做出什么处理。现在 SOA 大行其道,除了人们认识到面向服务带来的互联、扩展性以外,它也将不同服务的变化区分开来,各自拥有独立的实现和存储机制。每个服务使用不同的数据库或数据表,从一定程度上减轻了以往单个数据库频繁造成的 "锁" 和 I/O 瓶颈问题。

2. 将网站系统中的动态内容和静态资源分离出来,使用单独的更加高效的服务器(诸如 Apache + Linux)提供静态信息。多数情况下,流量的极大部分来源于图片、视频等,用多台服务器同时提供页面显示除了可以提高页面响应和现实速度外,同时他将流量分解到多台服务器上。另外,我们应该避免使用动态解析 (ASPNET_ISAPI.dll / HttpModule / HttpHandler) 来处理静态数据的过滤和路径重写。

3. 使用缓存机制,包括使用诸如 ASP.NET Cache、PageCache、创建静态页面等手段。设计良好的缓存机制能极大提高系统性能和响应速度。

4. 使用 64 位数据库系统。SQL Server 2005 在 64 位系统上可以使用更多的内存(最高64GB),而且在多 CPU 下也拥有更好的性能。有了更大的内存,我们甚至可以将某些常用且极少变化的表(比如分类目录表等)设置为内存表以提高响应速度。

5. 关闭操作系统的某些安全设置,比如 Windows 2003 预防 DDOS 攻击的一些设置,也可以避免一些意外的访问瓶颈。

运行期

6. 建立多数据库体系。使用单个或多个用于数据更新的数据库服务器,然后利用数据库的复制和订阅功能同步到其他多台专门用于显示的数据库服务器上,这样可以有效减少因为更新带来的数据库访问等待。当然,这种体系并不适用所有的业务。

7. 对大数据表进行分区。现在的主流数据库基本都支持数据表分区功能,我们可以横向分区,将不同时期的数据存放到多个分区表中;也可以纵向分区,将不常用的字段放到其他分区表中。分区表并不会影响到我们的开发模式,无须对代码进行调整,但数据表尺寸从 TB 减小到 GB 所带来的好处是无法忽略的。

8. 使用负载均衡等手段提升性能。包括DNS负载均衡、代理服务器负载均衡、地址转换网关负载均衡、协议内部支持负载均衡、NAT负载均衡、反向代理负载均衡等,负载均衡作为最常用的上扩手段,其效果也非常明显。

9. 使用 SAN 等专用的存储系统来提高 I/O 性能。SAN 使用光纤通道连接多个存储设备,可以改善多个服务器硬盘之间使用网线传输数据的性能问题。此外,SAN 还可以动态调整存储容量,更加有利于系统备份和恢复。

10. 电力备份。如果是自主机房,除了配置 UPS 电源外,最好拥有独立的发电设备。当然,对中小型网站而言,这过于奢侈了些。
更多精彩内容其他人还在看

图片的色彩空间问题

不知有多少朋友遇到此类问题:在PS里处理好的图,发到论论坛上以后发现图片颜色大变,变得灰蒙蒙,失去了层次,色彩生硬,还有点发青
收藏 0 赞 0 分享

计算机中的字符串编码、乱码、BOM等问题详解

这篇文章主要介绍了计算机中的字符串编码、乱码、BOM等问题详解,对文件编码、vim乱码、什么情况下会出现乱码、字符编码的发展历史、字符集和编码的区别、汉字ANSI编码的发展历史、BOM头等问题做了全面总结、详细介绍,需要的朋友可以参考下
收藏 0 赞 0 分享

markdown简介和语法介绍

这篇文章主要介绍了markdown简介和语法介绍,本文重点介绍了常用的一些markdown语法,可以做为一个简明版的入门指南,另本文还提供了一个在线学习markdown的简明教程,需要的朋友可以参考下
收藏 0 赞 0 分享

程序员开发项目是选择效率还是质量呢?

这篇文章主要介绍了程序员开发项目是选择效率还是质量呢?本文对这个每个程序员都会遇到的一个问题做了讲解,需要的朋友可以参考下
收藏 0 赞 0 分享

12种实现301网页重定向方法的代码实例(含Web编程语言和Web服务器)

这篇文章主要介绍了11种实现301网页重定向方法的代码实例,文中包含9种编程语言和3种WEB服务器配置方法,共计12种,需要的朋友可以参考下
收藏 0 赞 0 分享

命令行下的2款网页截图工具推荐

这篇文章主要介绍了命令行下的2款网页截图工具推荐,分别是针对IE浏览器的IECapt和针对Firefox浏览器的PageSaver,需要的朋友可以参考下
收藏 0 赞 0 分享

分享下程序员/设计师能用上的 75 份速查表

速查表可能是图片,也可能是 PDF 文件,希望你能在这个列表中找到你所需要的,
收藏 0 赞 0 分享

Geohash的原理、算法和具体应用探究

这篇文章主要介绍了Geohash的原理、算法和具体应用探究,Geohash可以实现当前手机应用中的查找附近的人功能,需要的朋友可以参考下
收藏 0 赞 0 分享

程序员编程从初级到中级的10个秘诀

在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。
收藏 0 赞 0 分享

关于换行和回车的图文小结

不知道大家用这么多年的电脑,写了这么多的程序,对换行和回车有没有一个认识
收藏 0 赞 0 分享
查看更多