解读大型网站的演变过程

有一次去图书馆看书,遇到一个刚毕业不久,在图书馆学习php,我就和他聊天,他期间问到一个问题“如何开发一个大型网站”,这个问题吓不倒我呀,我了解一些了,当时就和他连说带比划了一次,回家了我仔细又想了想,觉得还是写篇文章记录下

任何网站都是从一个小网站 演变成 一个复杂的网站的(后面我们用成熟的网站表示大型网站)

才开始一个网站不可能非常成熟的,都是随着用户量的增长,业务功能的不断扩展逐渐完善的

第一:最初的网站架构

这个时候应该是最简单的架构了,应用程序,文件,数据库,web软件 都放在一台服务器上了,如下图(这就是我现在的基本架构了,嗯哼,就是小网站了)

第二:应用程序,文件,数据库分离

随着业务的发展,一台服务器已经满足不了性能要求了,所以这个时候将 应用程序,文件,数据库分别放在单独的服务器上

第三:可以适当使用缓存改善网站性能

提升硬件的配置同时,我们也可以使用软件做性能优化的,这里我们重点说的是数据库缓存,目前可以使用memcache/redis等软件

第四:使用集群改善应用服务器性能

应用程序是网站的入口,业务量很多的时候,请求量很大,单台应用服务器就承受不聊了,通常我们可以使用负载均衡服务器来分发请求(也可以说是应用程序集群了),我比较熟悉或者一直使用的就是nginx了,如下图

下面这段话是从别人看到的,我觉得概括的挺对的,我个人还是主要使用nginx,haproxy了解过,

常用的负载均衡技术硬件的有F5,价格比较贵,软件的有LVS、Nginx、HAProxy。LVS是四层负载均衡,根据目标地址和端口选择内部服务器,Nginx和HAProxy是七层负载均衡,可以根据报文内容选择内部服务器,因此LVS分发路径优于Nginx和HAProxy,性能要高些,而Nginx和HAProxy则更具配置性,如可以用来做动静分离(根据请求报文特征,选择静态资源服务器还是应用服务器)。

第五:数据库读写分离

随着用户量的增加,数据库会逐渐成为瓶颈,常用的手段是读写分离(具体的含义大家可以百度google),还有常用的拆表(水平拆表和垂直拆表,我比较喜欢说 分表 和 分库),mysql数据库还有个partition,没玩过,只听DBA说过了

水平拆表:为了解决单张表的压力问题。一个表拆成多张表,例如用户表,根据uid 分表(例如 uid % 10)

垂直拆表:为了解决表与表的IO竞争,将相关表放入一个库,例如商品表和订单表放入另一库,用户表放入另一个库

第六:应用程序业务拆分

随着业务的发展,项目非常大,代码也非常臃肿了,这时候业务急需分事业部,例如问答,博客,论坛等都分成独立部门

就需要分业务了,

第七:使用CDN,squid,varnish等提高网站性能

我说下cdn,squid和varnish请各位有兴趣自己查阅相关资料

CDN就是内容分发网络,为什么存在?是因为对于网络公司,一般 自己的服务器都会在一个地方,例如上海机房,例如杭州机房了,但是网站是对全国来至全世界提供服务的,所以网站的访问速度是非常重要的指标,cdn服务商就是在全国很多地方都有机房,每当用户访问 网站 CDN会直接从最近的机房返回网页内容了

目前我个人博客有使用七牛CDN,浅谈 举家搬迁静态文件到CDN

CDN服务的详细介绍我会在另一篇文章介绍,请关注博文

总结 成熟大型的网站都是在不断优化的,都是随着业务的发展慢慢变化的

原文地址:解读大型网站的演变过程

时间: 2024-10-29 19:09:01

解读大型网站的演变过程的相关文章

解读大型网站系统架构的演化

2014-09-26 09:53 李平 LEE的博客 字号:T | T 大型网站的架构是根据业务需求不断完善的,根据不同的业务特征会做特定的设计和考虑,本文只是讲述一个常规大型网站会涉及的一些技术和手段. AD:2014WOT全球软件技术峰会北京站 课程视频发布 前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计思想也发生了很大的变化,就连技术人员也

大型网站架构的发展演变过程

大型网站架构的发展演变过程 原文地址 什么是大型网站 如何定义一个网站是不是大型网站,一般我们会从两个纬度去考衡,访问量以及数据量,二者缺一不可. 我们以javaweb为例,来搭建一个简单的电商系统,从这个系统中来看系统的演变历史:要注意的是,接下来的演示模型,关注的是数据量.访问量提升,网站结构发生的变化, 而不是具体关注业务功能点.其次,这个过程是为了让大家更好的了解网站演进过程中的一些问题和应对策略. 假如我们系统具备以下功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

大型网站架构改进历程:存储的瓶颈(五)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了. [编者按]本文转自博客园的 夏天的森林,在看这篇之前,大家可以移步看 大型网站架构改进历程:存储的瓶颈(一).(二).(三).(四). 上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种

一步步构建大型网站架构

原文转自:http://kb.cnblogs.com/page/99549/ 之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑.Flickr的架构.YouTube的架构.PlentyOfFish的架构.WikiPedia的架构.这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能是狭隘的. 今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的

一步步构建大型网站架构(转)

之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑.Flickr的架构.YouTube的架构.PlentyOfFish的架构.WikiPedia的架构.这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能是狭隘的. 今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但马克思告诉我们事物是在发展中不断前进的,网站架构也是随着业务的扩大.用户的需求不断完善的,下面是一个网站架构逐步发展

[转]大型网站架构的优化与架构演变(整理)

=============大型网站架构的优化===================== 一个小型的网站,比如个人 网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简 单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬 件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简

大型网站系统与Java中间件实践

大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著   ISBN 978-7-121-22761-5 2014年4月出版 定价:65.00元 340页 16开 编辑推荐 到底是本什么书,拥有这样一份作序推荐人列表:阿里集团章文嵩博士|新浪TimYang|去哪网吴永强|丁香园冯大辉|蘑菇街岳旭强|途牛汤峥嵘|豆瓣洪强宁|淘宝陈皓/林昊-- 这本书出自淘宝技术部总监之手,他也是淘宝近10年来历次技术飞跃的参与者.贡

【转】大型网站架构演变和知识体系

大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中 将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,:),文中的不对之处也请各位多给点建议,让本文