首页
关于
标签合集
友情链接
Search
1
一些简单方面的Linux生产随机密码shell
351 阅读
2
美超微主板IPMI使用教程
326 阅读
3
Ubuntu系统开启root登陆权限
252 阅读
4
linux下502自动重启脚本
231 阅读
5
利用廉价VPS做反代,保护你的真实服务器
186 阅读
OS
促销资讯
管理系统
网站运维
网文资讯
登录
Search
标签搜索
网站架构
linux
网站运营
centos
mysql
google
nginx
ssh
apache
服务器
kloxo
vps
架构分析
PHP
特价VPS
xen
shell
数据库
lamp
vpn
装逼爱好者
累计撰写
163
篇文章
累计收到
20
条评论
首页
栏目
OS
促销资讯
管理系统
网站运维
网文资讯
页面
关于
标签合集
友情链接
搜索到
3
篇与
的结果
2011-07-18
大规模网站架构技术原理透析
跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家里2台笔记本和1台服务器组成的局域网环境里作些实验。我进入IT行业的时间,大约是97,98年吧,那时候PC客户端软件最为盛行,做软件开发是一份很体面也很喜欢的工作。我从Win3.1上的VC1.5开始一直到VC6.0,然后转为.Net开发,基本上都是从事客户端软件开发。本人的性格是危机意识向来严重,所以深感互联网必将盛行,传统软件必将走向没落,于是转向了WEB开发。记得以前去某Portal网站应聘的时候,主考官就问我:你认为客户端开发和互联网开发有什么不同。我当时的回答是:互联网开发比客户端软件开发简单多了,我再也不用考虑那么多的用户环境因素了,一点部署,何时何地都可用。很多年过去了,我再想起当初我的回答,依然觉得那个回答是正确的。就产品开发层面来讲,互联网开发确实简单多了。这里首先澄清一个概念,我所说的互联网开发并不是指所有的B/S应用,例如B/S方式的银行内部业务系统。我所说的互联网应用是指在互联网上服务于公众的应用。企业级的业务系统,它的特点是业务逻辑是比较复杂的,但用户一般不太大;互联网应用则相反,业务逻辑一般很简单,但面对的是海量用户。既然互联网应用开发的业务逻辑不复杂,但为什么大型网站都投入了那么多的技术人员呢?主要是因为运营的环境太复杂,这种复杂性形成的原因以下:1、公开性网站的服务是公开的,任何人都可以来访问,所以就会直接面对大量的不良用户,系统数据的安全面临很大的风险,一旦系统被攻入,结果将是灾难性的。2、访问量大访问量大,就意味着网站必须能够承受高并发大流量的考验,如果网站的服务能力和健壮性等达不到要求,你的系统就会被冲垮。3、用户体验用户体验要好,除了产品设计的因素之外,就要求访问网站的速度要快,具有高可用性,别用一会就挂。网站各子系统如何进行部署,如何提高系统的健壮性和高可用性,如何实现网站的安全,如何提高访问速度,如何进行负载均衡,甚至于采用什么的硬件设备,另外,网站发展的不同时期会可能会采用不同的架构,如何实现架构的平滑过渡,如何使目前的架构具有弹性,具备可扩展的能力,这都是大型网站必须解决的问题,也是小网站成长过程中迟早会遇到的问题。我后面的文章将会逐步就这个话题展开。网站机构包括网站的软件架构和系统架构两部分,软件架构主要是指子系统和逻辑层的划分结构;系统架构,一般是系统部署结构。系统架构师的知识体系比较庞杂,所谓的见多识广,多数是由运维工程师成长起来的,他们开发能力不强,编码不多,但动手能力很强,脚本编写非常熟练,经常会做各种类型的实验,密切跟踪最新技术最新产品的相关信息。当然,一个大型的网站,需要一个架构师团队,他们各自承担擅长领域的架构设计,比如安全架构、存储架构等等。我觉得一般的开发人员还是很难走上这条路的,这份工作需要经验,需要不断实践,但如果开发人员一旦走上了这条路,会有很大的发展,主要源于开发人员的思考习惯和技术的深度。我的这系列文章,开发人员可以作为参考,比如如何开发可分布式部署的系统,另外很多朋友都是身兼数职,从开发到实施,到部署全部包办。我个人深感精力有限,所以又特意找了几个朋友从Unix/Linux系统和Windows系统不同角度进行探索,以造福正在摸索中的朋友,有兴趣的朋友也可以参与。其实,这部分内容我一直在写,比如PHP深度探索系列,写了大量的关于apache的内容,我已经大体把apache代码阅读了一遍,很费时间,进度缓慢,但我想这有助于我们理解apache的配置和调优。在介绍网站架构之前,我们先介绍一些网站架构中最基础和常见的概念,以便更好的理解后面的有关负载均衡和分布式存储等技术。第一个,首先讲讲CDN。1、CDN是什么CDN(Content Delivery Network),就是内容发布网或者内容分发网,它的主要目的:通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,从而提高用户访问网站的响应速度,提升用户体验,同时能够分散访问压力,把本来用户集中访问分散到各地去。网站的内容提供商(比如新浪、搜狐、网易等等)使用CDN,就可以在宏观层解决一部分大流量、海量用户并发等令人头疼的问题。2、CDN的组成内容发布网(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务,达到用户所要求的服务距用户仅有”一跳”(Single Hop)之遥。我们通常的内容发布模式都是将网站数据放到一处,然后应对来自世界各地的访问,我们多数考虑的是软件部署架构,很少考虑网络硬件架构。与之形成对比的是,CDN则强调了网络在内容发布中的重要性。通过引入主动的内容管理层的和全局负载均衡,CDN从根本上区别于传统的内容发布模式。内容提供商承担了他们不该干也干不好的内容发布服务。3、互联网服务的产业链纵观整个宽带服务的价值链,内容提供商和用户位于整个价值链的两端,中间依靠网络服务提供商将其串接起来。随着互联网工业的成熟和商业模式的变革,在这条价值链上的角色越来越多也越来越细分,出现了内容运营商、托管服务提供商、骨干网络服务提供商、接入服务提供商等等。在这一条价值链上的每一个角色都要分工合作、各司其职才能为客户提供良好的服务,从而带来多赢的局面。从内容与网络的结合模式上看,内容的发布已经走过了ICP的内容(应用)服务器和IDC这两个阶段。IDC的热潮也催生了托管服务提供商这一角色。但是,IDC并不能解决内容的有效发布问题。内容位于网络的中心并不能解决骨干带宽的占用和建立IP网络上的流量秩序。因此将内容推到网络的边缘,为用户提供就近性的边缘服务,从而保证服务的质量和整个网络上的访问秩序就成了一种显而易见的选择,这就是CDN服务模式。CDN的建立解决了困扰内容运营商的内容”集中与分散”的两难选择,无疑对于构建良好的互联网价值链是有价值的,也是不可或缺的最优网站加速服务。4、CDN服务提供商ChinaCache是中国最大的CDN服务提供商,是不是唯一未可知也。要想成为CDN服务提供商,恐怕要摆平电信、网通、铁通等等运营商,这得需要什么样的能力和背景不得而知。它的服务节点在全球已经超过130个,其中国内节点超过80个,覆盖全国主要6大网络(所谓6线机房,就是这么来的)的主要省份,象各大门户网站,比如新浪、网易等等都是租用了他们的服务。所以,你无论是在南方,或者北方,还是在北美,访问这些门户网站,感觉速度都很快,最主要的原因之一就是CDN发挥了效果。一般小网站是用不起这服务的,所以慢点就慢点了吧,可以租用互联互通的6线机房,如果网络足够宽的话,用户也可以忍受。如果想继续提升用户体验的话,就需要做一些网站镜像,部署在具有代表性的几个大城市,比如华南可以部署在广州,华东可以部署在上海,华北可以部署在北京,不过内容镜像的过程,就需要自己去部署和维护。还有的网站,采用内容分割的方式,比如建立针对各地的分站,业务情况不同,可能部署的策略不同。CDN可以认为是基础网络建设的一种策略。前面介绍了cdn的一些原理和概念,以及提供cdn基础网络服务的途径。cdn看起来对于静态内容的,比如html,js,image是非常合适的,通过cdn的部署,用户只需要一跳就可以访问到网站的内容。那对于动态内容怎么办呢?我回答一下:动态内容按照存在形态可以分为三类。第一类:内容长时间不需变化,这类内容一般是通过网页静化技术,实现动态内容转换成静态内容,从而达到cdn部署,典型的就是内容类网站,比如新浪、搜狐、网易等等的内容发布系统cms,内容的增删改等管理工作被准实时同步到各个节点。第二类:内容可能会短时间内发生变动,但是最终会稳定。比如论坛、博客等应用,这类服务提供的内容按照一定的时间间隔,实现批量静化,当然也有实时静化,像Mop的大杂烩、网易社区就是使用了这样的策略。第三类:内容会实时变化,非常个性化。比如邮箱应用,这类服务提供的内容无法实现静化,只能通过实行分区域部署和负载均衡等手段进行优化。对于提供cdn服务的厂商来讲,静态内容的cdn自然没有问题,对于第三类服务,只能从通信链路层进行相应的优化。对于很多网站的伪静化,有的出于Seo的考虑,有的出于安全性的考虑,手段基本上是rewrite Url。它只不过是一种外在的表现形式,与Html静化是两回事,它依然是一种动态内容。1. 负载均衡的分类负载均衡技术在网站运营过程中应用非常普遍,技术也很成熟。负载均衡技术按照软硬件形式分为软均衡和硬均衡。软均衡就是基于软件技术的均衡,硬均衡是基于硬件技术的均衡;按照网络协议划分又分为四层均衡和七层均衡。四层均衡就是基于OSI网络层的数据均衡,七层均衡是基于OSI应用层的数据均衡。各种均衡方式在大型网站中均有采用,而且大多数情况下,是多种均衡方式的组合。2. DNS轮询均衡这种方式,算是比较独立的一种方式,不在上述划分之列,但使用比较广泛,一般用在网站最前端。你可以做个试验,在dos命令行中运行nslook命令。比如:nslookup www。163。com,你会看到命令给出了一堆解析后的IP地址。这些地址就是www.163.com这个域名绑定的多条A记录。我们从浏览器发起的访问请求http://www.163.com/,那么你输入的域名首先需要经过DNS服务器进行解析,Dns服务器的解析的过程就是按照A记录的顺序,依次分配IP地址。Dns轮询方式实现均衡就是利用这个原理,在一个域名下面绑定N个IP地址,访问请求被均衡到不同的设备。Dns轮询方式提供的IP地址,在大型网站中往往是一个集群的地址,可能是均衡交换机也可能是均衡服务器。对于小网站的话,挂接多台服务器也没有问题。DNS轮询均衡的优点:1、零成本:只是在Dns服务器上绑定几个A记录,域名注册商一般都提供;2、部署简单:就是在网络拓扑进行设备扩增,然后在Dns服务器上添加记录。DNS轮询均衡的缺点:1、流量分配不均:Dns解析过程其实环节很多,而且是一种层层缓存的机制,你的dns服务器虽然进行更新,但是客户机、以及网络上其它的dns服务器不会实时更新,所以流量很难保证100%的平均。目前,dns服务器都提供了多种手段可以调整dns轮询分配的策略,但是确实无法保证很完美的均衡。2、健康检查:Dns服务器中A记录地址中的某一台服务器宕机,DNS服务器是无法知道的,仍旧会将访问分配到此服务器。所以需要人员或者工具进行实时检测,在某台机器宕机之后,把备份机推上生产线,如果想要从A记录地址摘除某个地址,这个通知过程需要几个小时甚至更久才能扩散到所有的客户机。Dns轮询方式推到服务的最前端还是很有效的,它通过最原始的方式,把访问用户映射到不同的服务集群上。对于大型网站来讲,对外服务的IP地址是不可能经常变动的,而且后端的集群一旦宕掉,可以迅速推上冗余集群。再加上,一般都是经过CDN部署,服务被拆分到各个局部,所以在运营过程中不会产生太大的影响。3. OSI七层模型我们接下来讲讲七层均衡。要理解四七层均衡的原理,就先要回忆一下大学课本里学的网络七层模型(OSI)。OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。OSI七层模型是一个很好的理论模型,但是在实际应用中都做了裁剪。尤其是TCP/IP的盛行,把7层结构压成了4层,所以很多人都批评OSI七层模型过于复杂,但是作为一个完整的全面的网络模型,还是被大家非常认可的。OSI的7层从上到下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。OSI 7层的功能描述:(1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。(2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。在接收方将标准的ASII转换成接收方计算机的字符集。示例:加密,ASII等。(3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。(5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。(6)数据链路层:他定义了在单个链路上如何传输数据。这些协议与被讨论的歌种介质有关。示例:ATM,FDDI等。(7)物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。出处:51CTO http://developer.51cto.com/art/200903/115670_1.htm
2011年07月18日
9 阅读
0 评论
0 点赞
2011-07-12
网站架构方案应包括哪些方面
网站架构方案应包括如下几个方面:网络管理系统:包括网络结构、服务器架构与有关硬件设备部署的整合设计。应用管理系统:包括web服务、数据库服务、应用服务、邮件服务的整合设计;业务管理系统:包括网站内容管理、社区论坛、资源管理、视频点播、短信娱乐、广告管理等业务内容的整合设计;网络安全系统:包括数据存储备份恢复、系统监控、流量分析、应用审计等网络安全的整合设计;文档目录可以划分为:一、概 述 5二、需求分析 52.1 异构系统 62.2 异构应用 82.3 异构数据 82.4 网站结构 92.5 内容海量 102.6 内容深度 102.7 服务深度 102.8 发布系统 112.9 网络安全 112.10 信息安全 11三、方案整体规划 113.1设计目标 113.2实施规划 12四、网络解决方案 134.1 拓扑结构图 144.2 硬件选型、分布与规划 144.2.1 数据库服务器 144.2.2 web发布服务器 154.2.3 cgi服务器 154.2.4 内容管理发布服务器 154.2.5 内容管理生成服务器 154.2.6 数据存储设备 154.2.7 安全设备 164.2.8 防病毒 164.2.9 原有服务器与置换服务器比较 164.3 新增硬件配置清单 18五、软件解决方案 185.1系统架构 185.2系统软件整合 195.3 网站内容管理系统 205.3.1网站内容管理系统介绍 205.3.2网站后台管理系统 215.3.3网站采编应用系统 225.3.4网站调查投票子系统 255.3.5站点内容全文检索子系统 265.3.6文章评论系统 265.3.7网站论坛、聊天室子系统 265.3.8网站会员认证管理子系统 315.3.9网站广告发布子系统 32六、网站音视频管理系统 326.1用户需求分析 326.2 产品概述 336.3技术特点 336.4基础构架和运行环境 346.5 功能描述 344.3.6 拓扑结构图 394.3.7音视频系统组成 39七、项目实施进度安排 427.1项目领导小组 427.2 项目实施小组 427.3质量监督小组 437.4系统集成实施进度计划及工作日程表 43八、培训、支持和服务 448.1 培训服务 448.1.1 基本操作培训 448.1.2 系统管理培训 448.1.3 培训安排 458.1.4 培训内容 458.2 技术支持服务 458.2.1 硬件平台技术支持 458.2.2 应用软件平台技术支持 458.3 售后服务 46九、小结 46附录 47硬件产品说明 47hp dl 580 47hp dl 380 49
2011年07月12日
14 阅读
0 评论
0 点赞
2011-07-12
网站架构设计原则-小规模低性能低流量
到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,”过早优化是万恶之源”),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如 JobsDigg.com ),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。拥抱熟知的技术动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说 Python 牛,但自己只懂 PHP ,那就 PHP 好了,如果熟悉 .net ?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。架构层次清晰化起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是非常痛苦的事情。Web Server <–> (AppServer)<–>Cache(eg. Memcached)<–>DB层次清晰化的一个体现是(以 LAMP 架构为例):即使只有一台机器,也应该起个 Memcached 的实例,效果的确非常好–一般人儿我不告诉他…不要把什么都压到 DB 上,DB 一旦 I/O 压力走到磁盘上,问题要暴露出来是很快的。没错,DB 本身也会利用自己的 Cache,但 DB 的Cache 和 Memcached 设计出发点毕竟不一样。数据冗余? 有必要很多人并不是数据库设计专家,如果应用要自己设计表结构什么的,基本都是临时抱佛脚,但三个范式很多人倒是记得牢,这是大多数小型 Web 站点遇到的一个头疼事儿,一个小小的应用搞了几十个表… 忘掉范式这个玩意儿! 记住,尽可能的冗余数据,你在数据层陷入的时间越多,你在产品上投入的就会越少。用户更关心的是产品的设计。前端优化很重要因为流量低,访客可能也不多,这时候值得注意的是页面不要太大,多数流量低的站点吃亏就在于一个页面动辄几兆(我前两天看到一个Startup的首页有4M之大,可谓惊人),用户看个页面半分钟都打不开,你说咋发展? 先把基本的条件满足,再去研究前端优化。功能增加要谨慎不是有个 80/20 原则么? 把最重要的精力放在最能给你带来商业价值的地方。有些花里胡哨的功能带来很大的开销,反而收效甚微。记住,小站点,最有价值的是业务模式,而不是你的技术有多牛。技术是为业务服务的,不要炫技。有些网站不停的添加功能,恰恰是把这些新功能变成了压死自己的稻草。从开始考虑性能这一点是可选的,但也重要。设计应用的时候在开始就应考虑 Profile 这件事情。一套应用能否在后期进行有效优化和扩展,很大的程度限制在是否有比较合适的 Profile 机制上。需要补充的是,对性能的考虑必然要把有关的历史数据考虑进来。另请参见网站运维之道的容量规划以及其它小帖子。好架构不是设计出来的这是最后要补充的一点。好的架构和最初的设计有关系,但最重要的是发展中的演化:发展–>发现问题–>反馈–>解决问题(执行力)–> 改进->进化到下一阶段–新问题出现(循环)有些站点到了某个阶段停足不前,可能卡在执行力这个地方,来自用户的反馈意见上来了之后,没有驱动力去做改进。最后也是死猪不怕开水烫了。最怕听到的就是”业务不允许”的托词,试想如果不改进业务都没了,那业务还允许么? 其实就是一层心理障碍。这篇文章有浓重的山寨风格,所以,你不要太认真。如果在用短、平、快的方式构建某些山寨网站的话,可参考其中对你有益的点,不赞同的地方可以直接忽视掉,就没必要费力留言进行争论了。作者: Fenng 网址: http://www.dbanotes.net/arch/small_site_arch.html
2011年07月12日
12 阅读
0 评论
0 点赞