使用开源软件,设计高性能可扩展互动网站

news/2024/5/12 3:37:11/文章来源:https://blog.csdn.net/chinalinuxzend/article/details/1806555

原贴:http://blog.csdn.net/jim_yeejee/archive/2007/07/18/1697453.aspx

 设计高性能可扩展互动网站   <script src="http://blog.csdn.net/count.aspx?ID=1697453&Type=Rank" type="text/javascript"></script>   CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。

使用开源软件,设计高性能可扩展互动网站

上次我们以LiveJournal为例详细分析了一个小网站在一步一步的发展成为大规模的网站中性能优化的方案,以解决在发展中由于负载增长而引起的性能问题,同时在设计网站架构的时候就从根本上避免或者解决这些问题。

今天我们来看一下在网站的设计上一些通常使用的解决大规模访问,高负载的方法。我们将主要涉及到以下几方面:

1、 前端负载
2、 业务逻辑层
3、 数据层

LJ性能优化文章中我们提到对服务器分组是解决负载问题,实现无限扩展的解决方案。通常中我们会采用类似LDAP的方案来解决,这在邮件的服务器以及个人网站,博客的应用中都有使用,在Windows下面有类似的Active Directory解决方案。有的应用(例如博客或者个人网页)会要求在二级域名解析的时候就将用户定位到所属的服务器群组,这个时候请求还没到应用上面,我们需要在DNS里解决这个问题。这个时候可以用到一款软件bind dlz,这是bind的一个插件,用于取代bind的文本解析配置文件。它支持包括LDAP,BDB在内的多种数据存储方式,可以比较好的解决这个问题。

另外一种涉及到DNS的问题就是目前普遍存在的南北互联互通的问题,通过bind9内置的视图功能可以根据不同的IP来源解析出不同的结果,从而将南方的用户解析到南方的服务器,北方的用户解析到北方的服务器。这个过程中会碰到两个问题,一是取得南北IP的分布列表,二是保证南北服务器之间的通讯顺畅。第一个问题有个笨办法解决,从日志里取出所有的访问者IP,写一个脚本,从南北的服务器分别ping回去,然后分析结果,可以得到一个大致准确的列表,当然最好的办法还是直到从运营商那里拿到这份列表(update:参见这篇文章)。后一个问题解决办法比较多,最好的办法就是租用双线机房,同一台机器,双IP,南北同时接入,差一些的办法就是南北各自找机房,通过大量的测试找出中间通讯顺畅的两个机房,后一种通常来说成本较低,但效果较差,维护不便。

另外DNS负载均衡也是广泛使用的一种负载均衡方法,通过并列的多条A记录将访问随即的分布到多台前端服务器上,这种通常使用在静态页面居多的应用上,几大门户内容部分的前端很多都是用的这种方法。

用户被定位到正确的服务器群组后,应用程序就接手用户的请求,并开始沿着定义好的业务逻辑进行处理。这些请求主要包括两类静态文件(图片,js脚本,css等),动态请求。

静态请求一般使用squid进行缓存处理,可以根据应用的规模采用不同的缓存配置方案,可以是一级缓存,也可以是多级缓存,一般情况下cache的命中率可以达到70%左右,能够比较有效的提升服务器处理能力。Apache的deflate模块可以压缩传输数据,提高速度,2.0版本以后的cache模块也内置实现磁盘和内存的缓存,而不必要一定做反向代理。

动态请求目前一般有两种处理方式,一种是静态化,在页面发生变化时重新静态页面,现在大量的CMS,BBS都采用这种方案,加上cache,可以提供较快的访问速度。这种通常是写操作较少的应用比较适合的解决方案。

另一种解决办法是动态缓存,所有的访问都仍然通过应用处理,只是应用处理的时候会更多的使用内存,而不是数据库。通常访问数据库的操作是极慢的,而访问内存的操作很快,至少是一个数量级的差距,使用memcached可以实现这一解决方案,做的好的memcache甚至可以达到90%以上的缓存命中率。10年前我用的还是2M的内存,那时的一本杂事上曾经风趣的描述一对父子的对话:

儿子:爸爸,我想要1G的内存。

爸爸:儿子,不行,即使是你过生日也不行。

时至今日,大内存的成本已经完全可以承受。Google使用了大量的PC机建立集群用于数据处理,而我一直觉得,使用大内存PC可以很低成本的解决前端甚至中间的负载问题。由于PC硬盘寿命比较短,速度比较慢,CPU也稍慢,用于做web前端既便宜,又能充分发挥大内存的优势,而且坏了的话只需要替换即可,不存在数据的迁移问题。

下面就是应用的设计。应用在设计的时候应当尽量的设计成支持可扩展的数据库设计,数据库可以动态的添加,同时支持内存缓存,这样的成本是最低的。另外一种应用设计的方法是采用中间件,例如ICE。这种方案的优点是前端应用可以设计的相对简单,数据层对于前端应用透明,由ICE提供,数据库分布式的设计在后端实现,使用ICE封装后给前端应用使用,这路设计对每一部分设计的要求较低,将业务更好的分层,但由于引入了中间件,分了更多层,实现起来成本也相对较高。

在数据库的设计上一方面可以使用集群,一方面进行分组。同时在细节上将数据库优化的原则尽量应用,数据库结构和数据层应用在设计上尽量避免临时表的创建、死锁的产生。数据库优化的原则在网上比较常见,多google一下就能解决问题。在数据库的选择上可以根据自己的习惯选择,Oracle,MySQL等,并非Oracle就够解决所有的问题,也并非MySQL就代表小应用,合适的就是最好的。

前面讲的都是基于软件的性能设计方案,实际上硬件的良好搭配使用也可以有效的降低时间成本,以及开发维护成本,只是在这里我们不再展开。

网站架构的设计是一个整体的工程,在设计的时候需要考虑到性能,可括展性,硬件成本,时间成本等等,如何根据业务的定位,资金,时间,人员的条件设计合适的方案是件比较困难的事情,但多想多实践,终究会建立一套适合自己的网站设计理念,用于指导网站的设计工作,为网站的发展奠定良好的基础。 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_831792.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高并发高流量网站架构

原贴:http://www.fulin.org/paper/paper.html 申请北京师范大学学士学位论文 高并发高流量网站架构 唐福林 03281077 第 2页 共 51页 高并发高流量网站架构 Architecture of Website with High Page view and High concurrency 院系&#xff1a;信息科学学院 专业&#xf…

浏览量比较大的网站应该从哪几个方面入手?

原贴&#xff1a;http://www.phpx.com/happy/viewthread.php?actionprintable&tid135353标题: [问题] 浏览量比较大的网站应该从哪几个方面入手&#xff1f; [打印本页]作者: 游戏人间 时间: 2007-6-15 04:23 PM 标题: 浏览量比较大的网站应该从哪几个方面入手…

mixi.jp:使用开源软件搭建的可扩展SNS网站

原贴&#xff1a;http://networld.tianyablog.com/blogger/post_show.asp?BlogID40003&PostID5915800&idWriter0&Key0mixi.jp&#xff1a;使用开源软件搭建的可扩展SNS网站作者&#xff1a;弥勒菩萨 提交日期&#xff1a;2006-7-4 8:46:00 | 分类: | 访问量&#…

亿万用户网站MySpace的成功秘密

原贴&#xff1a;http://networld.tianyablog.com/blogger/post_show.asp?BlogID40003&PostID9013974&idWriter0&Key0亿万用户网站MySpace的成功秘密作者&#xff1a;弥勒菩萨 提交日期&#xff1a;2007-3-26 16:40:00 | 分类: | 访问量&#xff1a;268 <scrip…

[转]说说大型高并发高负载网站的系统架构

原贴&#xff1a;http://blog.csdn.net/heiyeshuwu/archive/2006/04/29/697498.aspx<script type"text/javascript">function StorePage(){ddocument;td.selection?(d.selection.type!None?d.selection.createRange().text:):(d.getSelection?d.getSelectio…

[转]开发大型高负载类网站应用的几个要点

原贴&#xff1a;http://blog.csdn.net/heiyeshuwu/archive/2007/01/04/1473941.aspx[转]开发大型高负载类网站应用的几个要点 <script src"http://blog.csdn.net/count.aspx?ID1473941&TypeRank" type"text/javascript"></script> 开发…

镜像(备份)网站的几种方法!

原贴&#xff1a;http://blog.chinaunix.net/u/13329/showart.php?id81153镜像(备份)网站的几种方法&#xff01; 镜像(备份)网站的几种方法&#xff01; 一、如果有root权限 方法1: (经过测试&#xff0c;这种方式最快!) rsync -vazu -e ssh ./* root211.152.111.111:/…

flv在线录制、视频转换网站开发文档

原贴&#xff1a;http://www.1hao8.com/show.asp?id7316flv在线录制、视频转换网站开发文档 Mencoder简介&#xff1a; Mencoder是Mplayer自带的编码工具&#xff08;Mplayer是Linux下的播放器&#xff0c;开源&#xff0c;支持几乎所有视频格式的播放&#xff0c;现在有windo…

如何评价一个网站的人气(Link Popularity Check)

如何评价一个网站的人气(Link Popularity Check) 通过一些大型搜索引擎的隐含命令来评价网站的"人气"。 提高网站在Google中的排名(1)——面向搜索引擎的网站设计提高网站在Google中的排名(2)——面向搜索引擎的广告模式提高网站在Googel中的排名(3)——面向搜索引擎…

Digg 网站架构

原贴:http://www.dbanotes.net/techmemo/digg_arch_cache_and_shard.htmlDigg 网站架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/techmemo/digg_arch_cache_and_shard.html 本篇描述一下 Digg 的网…

Tailrank 网站架构

原贴:http://www.dbanotes.net/review/tailrank_arch.htmlTailrank 网站架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/review/tailrank_arch.html 每天数以千万计的 Blog 内容中&#xff0c;实时的…

PlentyOfFish 网站架构学习

原贴:http://www.dbanotes.net/arch/plentyoffish_arch.htmlPlentyOfFish 网站架构学习 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站…

Yupoo! 的网站技术架构

原贴:http://www.dbanotes.net/arch/yupoo_arch.htmlYupoo! 的网站技术架构 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo!…

郁闷少年架设某大型网站服务器之全部过程

原贴:http://www.cublog.cn/u/19818/showart.php?id118957郁闷少年架设某大型网站服务器之全部过程 郁闷少年架设某大型网站服务器之全部过程 *版权所有 所有:郁闷少年&&二娃家园 网站:http://www.mingfor.com 发布:mingfu 联系:msn:linuxmingfor.com 日期:2006-04-04…

网站运维之道 关于可用性

原贴:网站运维之道 关于可用性 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_availability.html 这是前一段时间投稿给《程序员》的一篇文章。标题中的"道"有些大了&#…

网站运维之道 监控与报警机制

原贴: http://www.dbanotes.net/web/web_operations_monitoring_and_alert.html 网站运维之道 监控与报警机制 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_monitoring_and_alert.h…

网站运维之道 之容量规划

原贴&#xff1a; http://www.dbanotes.net/web/web_operations_capacity_planning.html 网站运维之道 之容量规划 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_capacity_planning.…

网站运维之道 之知识管理与积累

原贴:http://www.dbanotes.net/web/web_operations_knowledge_management.html网站运维之道 之知识管理与积累 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_knowledge_management.h…

网站运维之道 之自动化管理

原贴:http://www.dbanotes.net/web/web_operations_automatic.html网站运维之道 之自动化管理 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/web/web_operations_automatic.html 还是继续这个网站运维的…

手机之家网站架构--对话高春辉

原贴:http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html手机之家网站架构--对话高春辉 作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/imobile_web_arch_gaochunhui.html 这次去北京参…