Chinaunix

标题: 【话题讨论】如何构建一个“三高”的大型网站(获奖名单已公布) [打印本页]

作者: arron刘    时间: 2013-09-24 10:31
标题: 【话题讨论】如何构建一个“三高”的大型网站(获奖名单已公布)
网站架构,一般认为是根据客户需求分析的结果,准确定位网站目标群体,设定网站整体架构,规划、设计网站栏目及其内容,制定网站开发流程及顺序,以最大限度地进行高效资源分配与管理的设计。其内容有程序架构,呈现架构,和信息架构三种表现。而步骤主要分为硬架构和软架构两步程序。网络架构是现代网络学习和发展的一个必须的基础技术。欢迎大家就如何构建一个三高(高可用、高性能、高可扩展性的)话题发表看法。

本期话题:
1、网站核心架构要素包含哪几方面?
2、网站架构设计过程中存在哪些误区?
3、常用的网站架构模式有哪些?
4、说说读完试读章节后您的感想。

活动时间:2013-9-24——2013-10-15

活动规则:
阅读我们提供的图书试读章节来参加活动,写试读心得或根据提供的话题参与讨论!

活动奖励:
针对以上任意问题跟帖回答,我们会在讨论结束后,择优挑选5名网友赠送《大型网站技术架构:核心原理与案例分析》这本书作为奖励。

奖品信息:
     大型网站技术架构:核心原理与案例分析

内容简介:本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。
本书不仅适用于指导网站工程师、架构师进行网站技术架构设计,也可用于指导产品
经理、项目经理、测试运维人员等了解网站技术架构的基础概念;还可供包括企业系统开
发人员在内的各类软件开发从业人员借鉴,了解大型网站的解决方案和开发理念。
图书试读链接:http://wenku.it168.com/d_001261543.shtml

本期活动获奖名单如下:
forgaoqiang
jimmy-_-lixw
hbsycw
chszs
qinyiwang

作者: forgaoqiang    时间: 2013-09-24 11:58
本帖最后由 forgaoqiang 于 2013-10-05 00:44 编辑


1、网站核心架构要素包含哪几方面?
网站构架应该包含对性能、UI、UE(用户体验)、业务流程等多方面的考虑。需要考虑构架所使用的技术(语言、操作系统环境),以及将要运行的硬件和网络环境,后台数据库的选择,中间件的选择等。在项目管理的角度上来看技术上的先进性、成熟性、适用性、经济上的合理性、盈利性、实施上的可能性、风险性都是设计的一些考虑因素。
2、网站架构设计过程中存在哪些误区?
这个应该还是有一些的比较容易出现的,个人认为常见的误区有:
①过早优化,WEB应用的一个特点就是增长性,很难一夜之间流量突增,因此要考虑当前的访问量的同时进行适当的可扩展性考虑,过早的优化将会浪费不必要的资源(人力财力)。
②使用最新硬件,硬件性能和价格是不成比例的,价格越高性能提升越有限,考虑合适的平衡点。WEB应用模式中更多的采用Scale Out(横向扩展)。
③相对第二条硬件,在技术上不宜采用最新最先进的技术。应该考虑权衡各个方面,应该优先采用成熟稳定的技术,比如大规模WEB应用,Java仍然是优先考虑的技术。
④所有的内容都要自己设计,这个是常犯的一个错误。前人总结好的一些基础构件完全可以采用,没有必要所有的内容都自己设计。
3、常用的网站架构模式有哪些?
正如本书试读章节中说道的,模式可以有
①分层和分割结构:
应用服务器是计算密集型,可以通过scale out进行横向扩展,而数据层服务器(数据库等)则是I/O密集型,可以通过分割数据,增加缓存等方法提高性能。
②分布式和集群
和第一条密不可分,将单台服务器无法处理的信息进行分布式处理,遇到大数据时完全可以使用Map-Reduce的思想,化整为零,分布式处理。分布式的同时可以多台服务器并行处理,集群增加了处理能力。
③异步和缓存
将一些对时间不敏感的操作进行异步和缓存,不需要每次都进行磁盘I/O,大大提高性能。

4、说说读完试读章节后您的感想。
《大型网站技术架构:核心原理与案例分析》试读章节从第二章开始,先介绍了什么是模式,并介绍了大型网站应该使用一些模式。这里介绍了分层、分布式、集群、缓存、CDN等技术,和《大规模Web服务开发技术》有着异曲同工之妙,只是本书从更宏观的方面对网站构架进行了介绍,而不是细节的技术方面。
试读章节的第四章介绍了一些性能和测试方面的要求,给出了一些优化指导,将一些优化技术点到为止,比如CDN,资源文件合并,反向代理。
读了试读章节后最大的感触就是,这本书具有思想指导意义,从构架模式层次上对“三高”网站的建设进行指导,正如指导哲学指导自然科学一样。看了这本书再去对里面提到的具体细节技术进行学习,正如有了学习大纲和概要一样。


作者: arron刘    时间: 2013-09-24 14:30
恩恩。回复 2# forgaoqiang


   
作者: 魔煞血陨    时间: 2013-09-24 14:52
我觉得时间跟优化才是重点
作者: arron刘    时间: 2013-09-24 16:02
这个时间指的是什么时间?我有时候在思考,整出来一个特别牛逼的架构,是不是就不需要优化了。已经是最优的了。回复 4# 魔煞血陨


   
作者: Anxiang1129    时间: 2013-09-24 17:43
不太感兴趣
作者: wenhq    时间: 2013-09-24 20:08
明天早上继续看,看完试着写下感受!
优化要以用户体验为目标吧。
作者: jimmy-_-lixw    时间: 2013-09-25 00:27
本帖最后由 jimmy-_-lixw 于 2014-04-06 21:55 编辑

提示: 内容被隐藏或删除 内容自动屏蔽
作者: qingduo04    时间: 2013-09-25 06:40
话题很好,没接触过大型网站的路过
作者: qingduo04    时间: 2013-09-25 06:41
不过,这个三高(高可用、高性能、高可扩展性的)感觉使用所有的电子系统
作者: mordorwww    时间: 2013-09-25 10:14
qingduo04 发表于 2013-09-25 06:41
不过,这个三高(高可用、高性能、高可扩展性的)感觉使用所有的电子系统




适用于几乎所有行业,不过各行业有各行业的实现方法而已


就网站而讲,首先必须是用集群,有没有单机搞定的?
作者: Mylib    时间: 2013-09-25 10:21
先试读下看看
作者: jimmy-_-lixw    时间: 2013-09-25 13:49
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:19 编辑

支持讨论话题~
作者: action08    时间: 2013-09-25 14:50
回复 13# jimmy-_-lixw


    只要用户量上来了,一切就自然大了,{:3_200:}
作者: action08    时间: 2013-09-25 15:00
没做过相关的工作啊,不太能理解“高”网站是个什么概念哦
作者: bangde32    时间: 2013-09-25 17:48
菜鸟不说话
作者: qingduo04    时间: 2013-09-25 22:31
回复 13# jimmy-_-lixw


    更正一下,应该是IT系统。
比如电信行业的经分,boss,掌厅门户等,还有其他行业的系统。
作者: qingduo04    时间: 2013-09-25 22:37
回复 11# mordorwww


    单机的应该很少,除非不在乎高可用性,否则一台机子太容易出问题了。

作者: laputa73    时间: 2013-09-26 10:11
本帖最后由 laputa73 于 2013-09-26 10:17 编辑

考虑几个个典型的例子
页游  电子商务  团购
猜测一下
1.前端负载均衡
  象12306,x宝  C10M级别的感觉应该用到dns, F5这样的硬件吧,或者dpdk?
  小一些的C10k的 haproxy

2.web server/cache/proxy
nginx

3.web页面
jsp/php_fpm/ror

4.app
ngx_lua/jsp
nodejs/php_fpm/
erlang/python/perl

5.data
redis/hbase
mysql cluster


作者: hbsycw    时间: 2013-09-26 20:10
回复 5# arron刘

好的网站架构都是“进化”出来,没有适用一切的架构吧!有高性能网站架构模式或框架,但没有不变的高性能网站架构技术实现~


   
作者: hbsycw    时间: 2013-09-26 20:10
回复 5# arron刘

好的网站架构都是“进化”出来,没有适用一切的架构吧!有高性能网站架构模式或框架,但没有不变的高性能网站架构技术实现~


   
作者: ballbillow    时间: 2013-09-27 00:40
1、网站核心架构要素包含哪几方面?
高可用,可扩展,

2、网站架构设计过程中存在哪些误区?
盲目使用过于前卫的技术;过早考虑性能问题

3、常用的网站架构模式有哪些?
接入层负责均衡,就近访问;逻辑层无状态,可扩展;存储层高可用,异地分布

4、说说读完试读章节后您的感想。
简单看了下,第二章的模式总结过于文字化,最好能辅助一些实例
作者: hbsycw    时间: 2013-09-27 09:17
本帖最后由 hbsycw 于 2013-10-12 23:36 编辑

本期话题很好,积极参与:

1、网站核心架构要素包含哪几方面?
   答:网站核心架构要素包含哪几方面,个人认为,其实就是三高:高可用(Hight Availability)、高性能(Hight Performence)、高可扩展(Hight Scalability)。为什么核心架构是这三个方面呢?因为WEB的开放性,要求能够提供24X7的网络服务,因此,高可用是第一位的;其次是高性能,因为WEB的开放性,特定时段会有大量用户访问,而资源总是有限的,如何以有限的资源承载最大的用户数,其实,就是高性能;而高扩展性,其实是高可用和高性能的规模延续。那么,如何做到高可用、高性能架构?答案就是集群(Cluster)。首先,为了避免单点故障,理论上硬件节点配置都要大于等于2,这样即使某台机子因为硬件故障,也能保障WEB服务不中断,达到高可用(当然,这样的冗余配置是以成本增加为代价);其次,高性能,这涉及到合适的软硬件方案选型(采用什么编程语言,SERVER中间件,数据库,可以使用什么硬件等),分层架构(WEB SERVER+APP SERVER+DB SERVER),应用去状态化,静态化,缓存等,这一块的技术手段很多,需要经验积累;而高可扩展,是为了应对业务的发展需求,理想状态通过增加机器节点,就可以解决问题。如果一个架构师,真对这三个方面有所领悟,那么架构一个高并发网站技术上应该就没什么问题啦,剩下的应该就是对业务需求度的把握和投入成本率的权衡。

2、网站架构设计过程中存在哪些误区?
   答:1 规划不足,缺乏长远设计规划:多数网站架构缺乏清晰的长远规划,多数只是对软硬件方案做个技术选型,就算架构;
       2 重视硬件,轻视软件架构:认为只要有一台好的机器硬件(比如F5),架设一个高性能网站就没问题,未能认识WEB架构的重要性;
       3 业务需求把握不足:未能合理把握业务需求,特别是业务上线后的快速扩张,导致前期架构失败;
      
3、常用的网站架构模式有哪些?
   答:常用的网站架构模式有:单点集中式 和 多点分布式。具体网站的技术架构可以采用:集群;分层、分割;应用去状态化;分布,消息中间件;静态化,缓存等。

4、说说读完试读章节后您的感想。
   答:大型网站技术架构一直是比较前沿的IT技术,对于开放的互联网来说,这一块具有相当的挑战性。首先,市面上,缺乏这样专门论述的好书,特别感谢作者的无私奉献!其次,从试读章节可以深刻感受到作者资深的经验和思维的深度,对架构技术有系统论述,我认为这是一本很好的书,拭目以待!



作者: vical    时间: 2013-09-29 10:39
本来想看,可是还要IT168的帐号才能看,什么玩意~
作者: jimmy-_-lixw    时间: 2013-09-29 11:43
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:23 编辑

感兴趣,搬小板凳来听课。
作者: zzz2738    时间: 2013-09-29 13:34
单机搞定了的也不是没有,俺就做过,不过谈不上上高可用,被攻击被中毒就挂了。现在怎么的也要集群了。回复 11# mordorwww


   
作者: jimmy-_-lixw    时间: 2013-09-29 14:16
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:24 编辑

支持话题讨论,继续观看大家讨论。
作者: ylky_2000    时间: 2013-09-30 13:55
本期话题:
1、网站核心架构要素包含哪几方面?
2、网站架构设计过程中存在哪些误区?
3、常用的网站架构模式有哪些?
4、说说读完试读章节后您的感想。
很多三高,高脂肪、高血脂、高血压。。
三高音。。。。
国庆后继续吐槽。。。。
作者: emperor    时间: 2013-09-30 17:07
如此高深的医学论述大型碰撞,俺表示亚历山大,百般无语。。
作者: jimmy-_-lixw    时间: 2013-10-04 09:29
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:25 编辑

看来越来越精彩,越来越激烈地讨论.
作者: jimmy-_-lixw    时间: 2013-10-04 09:35
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:27 编辑

好分享,好分享精神,支持免费分享精神。
作者: Purple_Grape    时间: 2013-10-06 22:00
网站“三高”,跟架构有直接关系,但是直接讨论网站架构,又太虚了,楼主高明。

坐等大神跟贴。
作者: fengzhanhai    时间: 2013-10-07 10:42
回复 28# ylky_2000 博主真够逗的,笑死我了


   
作者: fengzhanhai    时间: 2013-10-07 10:43
回复 21# hbsycw
言之有理哦,呵呵,顶一个
   
作者: fengzhanhai    时间: 2013-10-07 11:26
回复 1# arron刘 具体网站的架构的设计需要考虑网站的规模及企业自身发展的实际情况。不能以偏概全,不要天真的认为牛逼的技术用到自身网站上就牛逼了,如果企业没有牛逼的人可能最后剩下的只是苦逼而已。不管怎样个人认为适合自己公司的架构才是一个好架构,适合自身公司的技术才是好技术,不能一味跟风而上。对于一个网站并非一定要三高,也可能一高或者两高就可以满足其企业自身的需求,那为什么还要弄个三高呢,任何东西太完美了都是需要付出代价的。
最后关于版主的大作试读章节敝人拜读了一下,感觉这本书总体来说在结构设计上比较合理,在创作风格、具体实现技术上描述比较富有逻辑使读者理解起来比较容易,呵呵不像教科书那样呆板,让人费解~
其他,对于在试读章节中提到的一些新的技术名称及在不同的阶段的定义感觉比较有意思。但是其中有一个地方,作者在介绍分布式时我感觉作者提到有一些地方内容严格上讲不应该划分到分布式范畴内去探讨,严格意义上最多称之为伪分布式。希望斑竹不要生气,我只是觉得作为一本好书,所有的内内都应该值得推敲~
作者: chszs    时间: 2013-10-10 16:24
本帖最后由 chszs 于 2013-10-10 17:11 编辑
hbsycw 发表于 2013-09-26 20:10
回复 5# arron刘

好的网站架构都是“进化”出来,没有适用一切的架构吧!有高性能网站架构模式或框架, ...


确实是进化而来,但是互联网大型网站经过这十多年的发展,总体架构大家都比较相近。毕竟技术就那么些种,方案也就那么一些。
作者: chszs    时间: 2013-10-10 16:25
hbsycw 发表于 2013-09-27 09:17
本期话题很好,来观各路高人高见~


同意,很有趣的话题。
作者: chszs    时间: 2013-10-10 17:06
1、网站核心架构要素包含哪几方面?
一般来说,公认的网站核心架构要素包括性能、可用性、伸缩性、扩展性、安全性等方面。但是,不同的公司关注点有所不同,对于某些公司,还可能会认为SEO也是其核心架构要素之一;或者另有些公司,还可能会认为成本是其核心架构要素之一。

2、网站架构设计过程中存在哪些误区?
(1) 误区一:为技术而技术
新技术常常意味着Bug和不够稳定。一味追求时髦的新技术,可能会将网站的发展引入歧途。
(2) 误区二:以互联网巨头的解决方案为标准
大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就容易画虎不成反类犬。
(3) 误区三:用技术搞定一切问题
技术可以解决业务的问题,业务方面的问题也可以通过其它非技术的手段去解决。

3、常用的网站架构模式有哪些?
大型网站面临高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,很多公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而逐渐形成了通用的大型网站架构模式。
(1) 分层模式
一般来说,网站系统可分为应用层、服务层、数据层。其中,应用层可细分为视图层(即表现层)和业务逻辑层。
通过分层,可以更好地将一个庞大的软件系统切分成不同的部分,便于分工合作开发和维护;各层之间具有一定的独立性,只要维持调用接口不变,各层可以根据具体问题独立演化发展而不需要其他层必须做出相应调整。
(2) 分割模式
根据业务的功能和服务进行分割,包装成高内聚低耦合的模块单元,既有助于软件的开发和维护,又便于不同模块的分布式
部署,从而提高网站的并发处理能力和功能扩展能力。
(3) 分布式部署模式
常用的分布式方案有以下几种:
· 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署;
· 分布式静态资源:网站的静态资源如JS、CSS、Logo图片等资源独立分布式部署,并采用独立域名,即人们常说的动静分离;
· 分布式数据和存储:把大型网站所需的海量数据做分布式存储;
· 分布式计算:把后台业务做分布式处理等等。
(4)  集群模式
将独立部署的服务器集群化,即多台服务器部署相同应用构成一个集群,通过负载均衡器共同对外提供服务。
(5) 缓存模式
缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段,大型网站架构设计在很多方面都使用了缓存设计。
(6) 异步模式
大型网站架构中,系统解耦合的手段除了前面提到的分层、分割、分布等,还有一个重要手段是异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。  
(7) 冗余模式
网站需要7×24小时连续运行,但服务器随时可能出现故障,故需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上。

除以上之外,还有自动化、安全架构模式等。

4、说说读完试读章节后您的感想。
书是好书,而且也是牛人编写的,渴望一读。

作者: chszs    时间: 2013-10-10 17:10
补充一点:我从网上收集,整理了一个试读版本,包含了2、4、5章,内容比LZ的要多一些。LZ提供的试读版仅17页,我的有38页。
大型网站技术架构:核心原理与案例分析(试读).pdf (2.79 MB, 下载次数: 101)
作者: forgaoqiang    时间: 2013-10-10 23:16
感谢分享~~

chszs 发表于 2013-10-10 17:10
补充一点:我从网上收集,整理了一个试读版本,包含了2、4、5章,内容比LZ的要多一些。LZ提供的试读版仅17页 ...

作者: chszs    时间: 2013-10-12 10:55
回复 40# forgaoqiang

呵呵,能看到的内容还是不多,如果是正式版就更好了。
作者: forgaoqiang    时间: 2013-10-12 12:47
恩 是呀 电子版的打印出来看也不错

当然 努力回复下 应该能获得奖励的~

回复 41# chszs


   
作者: chszs    时间: 2013-10-13 12:51
回复 42# forgaoqiang


    书是好书。
作者: qinyiwang    时间: 2013-10-15 16:52
这方面我并不熟悉,只能路过打个酱油再围观一下高手的言论。
针对一条发表点评论4、说说读完试读章节后您的感想。
总体内容清晰,也易读懂,能对读者帮助很大。
在内容方面,这第二章和第四章多数内容像在写论文时那种加的标题、语言、配图,看了以后觉得好严肃啊,尤其第四章,若有更多生动的例子就更好了。比如淘宝双十一,之前活动时服务器有过崩溃,后来的哪怕访问和交易激增,服务器也保持相对稳定的状态,如果加上中间有哪方面改动,这块内容更能吸引读者阅读了;
另外第二章的新浪微博作为例子,讲到改进了模式、启用了多个数据中心等等。有没有涉及更具体的数据库方面?假如有选择更换了DB以适应访问量这样算不算很大的改进呢?
作者: jimmy-_-lixw    时间: 2013-10-16 16:35
本帖最后由 jimmy-_-lixw 于 2014-10-06 17:29 编辑

学习网站的架构设计。
作者: hbsycw    时间: 2013-10-22 18:32
三高还没结束?
作者: qinyiwang    时间: 2013-11-27 09:49
谢谢,今天收到本书《大型网站技术架构》-核心原理与案例分析
作者: hbsycw    时间: 2013-11-28 14:18
谢谢,我也收到了,呵呵~




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2