`

设计高可用和高负载的网站系统

 
阅读更多

随着网站的运营,用户访问量和数据存储量会随着时间发生几何级变化,很快整个系统不堪重负,频繁出现问题。其实要设计一个高可用、高负载的系统还是有一定的规矩可循的,其手段无外乎向上扩展(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 电源外,最好拥有独立的发电设备。当然,对中小型网站而言,这过于奢侈了些。

分享到:
评论

相关推荐

    可扩展、高可用、负载均衡网站架构设计方案

    本文将详细介绍一个可扩展、高可用、负载均衡网站架构设计方案,该方案旨在解决高访问量网站的性能和可靠性问题。该方案包括以下几个方面: 一、基本需求 1. 高可用性:将停止服务时间降低到最低甚至是不间断服务 ...

    系统架构设计-负载均衡和高可用(Apache反向代理多种模式/KEEPALIVED+LVS)

    目录: 负载均衡技术介绍 ...高可用的系统设计 什么是系统高可用性? 高可用的模式 系统高可用设计 高可用设计案例 高可用方案及实践 Apache+Tomcat 高可用WEB集群 Keepalived +LVS 高可用应用集群

    基于LVS负载均衡的高性能Web站点设计与实现

    LVS是一种开源的负载均衡解决方案,它能够将网络流量有效地分发到多个服务器上,以提高系统的处理能力和可用性。本文将详细介绍如何设计和实现这样的系统。 1. **部署环境架构设计** 为了应对高并发访问,我们需要...

    MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)

    标题所涉及的知识点为“Mycat高可用...在基于Dubbo的分布式系统架构中,这种高可用负载均衡集群的实现变得尤为关键,因为它能够确保服务的高可用和系统的高性能,对于企业级应用而言,这是一个非常重要的技术支撑点。

    负载均衡F5-HA高可用理论知识手册

    本手册旨在提供全面、深入的理论知识,帮助读者理解如何利用F5技术实现系统的高可用性和稳定性。 **负载均衡** 负载均衡是一种网络技术,用于将流入的网络流量分配到多个服务器,以防止任何单一服务器过载,提高...

    可扩展、高可用与负载均衡网站架构设计方案.docx

    该方案基于负载均衡、数据库主从复制、监控系统和备份策略等技术,旨在提供一个高性能、安全、可靠的网站架构解决方案。 一、高可用性设计 1. 负载均衡:使用LVS(Linux Virtual Server)和Keepalived实现负载均衡...

    高并发高负载大型网站系统架构

    【高并发高负载大型网站系统架构】是指设计和构建能够处理大规模用户访问、高并发请求的网站系统。这种系统架构必须具备高安全性、高稳定性、高并发处理能力和高负载承受能力,以应对如淘宝等大型电商平台所面临的...

    企业级keepalived高可用实战与Nginx负载均衡视频教程.zip

    4. Keepalived与Nginx的集成:如何结合两者实现高可用性和负载均衡,确保即使在Nginx本身出现问题时,也能通过Keepalived进行快速切换。 5. 监控与调试:了解如何监控Keepalived和Nginx的状态,以及在出现问题时如何...

    Oracle RAC 10g高可用系统负载均衡测试与分析.pdf

    这些知识点对于数据库管理员和开发者来说非常重要,因为他们需要了解如何设计和实现高可用性的数据库系统。 Oracle RAC 10g高可用系统负载均衡测试与分析还涉及到数据挖掘技术,在高校教学数据的分析处理中,数据...

    构建高可用的LVS负载均衡集群

    LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉...为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

    负载均衡SLB高可用架构介绍.docx

    负载均衡SLB高可用架构是指通过负载均衡SLB产品来实现高可用的架构设计,该架构旨在提高应用系统的服务能力和可用性。本文将从四个层次来分析和说明负载均衡SLB高可用的架构设计。 第一层:应用处理层 应用处理层是...

    java面试题_高并发、高可用、分布式(9题)

    在Java面试中,高并发、高可用和分布式是考察开发者技术深度和广度的...通过深入理解并掌握以上知识点,开发者能够更好地应对Java面试中关于高并发、高可用和分布式的问题,也能在实际项目中构建出高效、稳定的系统。

    核心系统高可用性设计.doc

    高可用性设计是确保关键业务系统持续稳定运行的重要手段,主要目标是减少计划内和计划外的停机时间,增强系统应对故障的恢复能力。计划内停机通常由系统维护、升级或硬件替换等活动引起,而计划外停机则由硬件故障、...

    高负载系统架构设计概要

    综上所述,设计高负载系统架构时,需兼顾负载均衡、中间层处理、分布式缓存、文件服务器、数据库优化以及监控和容错等多个方面,通过这些技术手段,构建出能够处理大规模用户访问的稳定、高效系统。

    无负载均衡器的Linux高可用负载均衡集群系统.pdf

    【无负载均衡器的Linux高可用负载均衡集群系统】是一种创新的集群解决方案,旨在消除对独立负载均衡器的依赖,从而降低系统成本并提高效率。该系统尤其适用于那些需要高可用性和负载均衡功能但预算有限的中小企业。...

    MySQL与PostgreSQL数据库高可用分析实践.pdf

    * 高可用定义:系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计的准则之一。 * 高可用实现:通过“冗余”来实现高可用,包括数据同步、计算高可用和业务高可用三个方面。 二、MySQL高可用实践...

    高可用架构 第1卷高可用架构 第1卷-高可用架构社区

    高可用架构是指通过设计和构建能够容忍硬件、软件甚至网络故障的系统,来确保服务的持续性和稳定性。在互联网行业中,高可用架构是保障业务连续性、提升用户体验的关键。 1. **容错设计**:高可用架构的核心在于...

    架构设计参考 高可用架构

    "架构设计参考 高可用架构"这一主题旨在深入探讨如何构建能够承受高流量、确保服务连续性和提供优秀用户体验的系统。这是一份面向架构师、软件架构设计者以及对运维设计感兴趣的从业人员的学习资料。 首先,我们要...

Global site tag (gtag.js) - Google Analytics