关键词:
浅谈网站架构
作为一个从事后台开发已经2年的程序员来讲,大部分时间都忙于业务逻辑分析,往往忽略了业务之上的架构层面的设计。
本文作为网站架构知识的补充,不仅开拓了眼界,也对以后的程序设计益处多多。下面我们就一起来看看网站架构的演变历史。
网站架构的演变大致分为如下几个阶段:
1
初始阶段的网站架构
网站在最初开始时没有太多人访问,用一台服务器就完全可以胜任,此时的网站架构如下图所示。
应用程序,文件存储,数据库所有的资源都在一台服务器上。也就是经典的LAMP架构模型(Linux操作系统+部署在Apache上+MySql存储+PHP开发)。
2
应用服务和数据服务分离
网站有了越来越多的用户,不断增长的访问量导致网站性能越来越差,数据库存储空间也越来越不足,此时由初始架构演变为应用程序与数据服务分离的架构,如下图所示。
各个服务器对硬件的资源要求各不相同:
-
应用服务器由于处理大量业务逻辑,因此需要更强大的CPU;
-
数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;
-
文件服务器需要存储大量的文件,因此需要更大的硬盘。
3
缓存改善网站性能
网站访问也遵循二八定律:80% 的业务访问集中在 20% 的数据上。
既然大部分的业务访问集中在一小部分数据上,那么把这一小部分数据缓存在内存中,自然可以提高网站性能,加入缓存后的网站架构如下图所示。
网站使用的缓存分为两种:
-
缓存在应用服务器上的本地缓存;
-
缓存在专门的分布式缓存服务器上的远程缓存。
那两者的区别有哪些呢?
本地缓存访问速度更快,但是受本地服务器内存限制,缓存数据有限。
远程分布式缓存一般使用集群的方式,部署大内存服务器作为专门的缓存服务器,可以理论上做到不受内存容量限制的缓存服务。
4
应用服务器集群
加入缓存后,数据访问压力缓解,但是单一服务器可以处理的请求有限,在访问高峰期,这会成为网站的瓶颈。
所以对于网站来说,既然可以通过增加一台服务器的方式改善负载压力,那就可以以同样的方式持续增加服务器不断改善系统性能,从而实现系统的可伸缩性。应用服务器集群则应运而生。此时网站架构如下图所示。
通过负载均衡将请求分发到应用服务器集群,如果用户访问量持续增长,那么就在集群中加入更多的服务器,使服务器的负载压力不再成为整个网站的瓶颈。
5
数据库的读写分离
随着网站用户不断增多,服务器搭建了集群便不再是网站的瓶颈,数据库反而会因为负载过高而成为瓶颈。
由于大部分主流数据库都有主从热备的功能,通过配置两台数据库的主从关系,可是实现数据库之间的数据复制,从而实现数据库的读写分离,减轻数据库压力。
此时网站架构如下图所示。
读写分离:
应用服务器在写数据时,访问数据库,主数据库通过主从复制机制将数据更新到从数据库,当应用服务器读数据的时候就可用通过从数据库读取数据。
6
CDN和反向代理
CDN和反向代理本质也是缓存。加入CDN和反向代理会有效加速网站访问速度。此时网站架构如下图所示。
CDN一般部署在网络提供商的机房,使得用户在请求网站服务时,可从最近的网络提供商机房获取数据。
反向代理则部署在网站的中心机房,当用户请求到达中心机房后,先访问反向代理服务器,获取反向代理服务器中的缓存的资源,直接返回给用户。
7
分布式文件系统和分布式数据库
单一服务器都满足不了大型网站持续增长的需求,这时数据库要使用分布式数据库,文件系统使用分布式文件系统。此时网站架构如下图所示。
分布式数据库是网站数据库拆分的最后手段,只有在单表数据特别大时才使用。一般更常用的是业务分库,将不同业务的数据库部署在不同机器上。
8
使用NoSQL数据库和搜索引擎
随着网站运营越来越久,业务增长越来越大,数据的产生也就越来越大。此时对数据的检索和存储也就越来越复杂,那就需要采用非关系数据库技术-NoSQL数据库和数据库查询技术-搜索引擎。此时网站架构如下图所示。
9
业务拆分
大型网站业务日益复杂,会使用拆分的手段将整个网站分为不同的产品线。在技术角度上讲,就是讲网站拆分成许多不同的应用,每个应用都要独立部署。此时网站架构如下图所示。
应用之间可以通过超链接建立关系,如在首页导航栏添加各个应用的链接地址。也可以通过消息队列进行数据分发,进行业务调用。
10
分布式服务架构
随着业务拆分越来越细,存储系统则越来越大,可能会出现不同的应用系统需要执行许多相同的业务操作的情况。那将这些共用的业务提出出来,独立部署。通过分布式服务调用共用业务服务完成具体的业务操作。此时网站架构如下图所示。
大型网站架构演化到这一步,也就是时下流行的分布式架构。但架构发展并不会止步于此,目前许多大型网站都开始有自己的云计算平台,将计算作为一种资源出售。一些中小网站不需要再关心技术架构问题,未来的网站架构肯定还会继续发展下去,会继续适应未来持续增长的业务需求。
网站架构概述大致分为以上几个阶段,后续我们会针对网站架构优化方面再做分享,主要从网站的性能、可用性、伸缩性、扩展性、安全性这几个方面入手,继续讨论网站架构方面所遇到的问题,分享架构优化的知识。
参考资料:《大型网站技术架构》----李智慧
关注一下,我写的就更来劲儿啦
浅谈javaweb架构演变
一 JavaWeb架构演变 在java架构模式中,我们可以将MVC架构模式抽象为如下结构: 1.View层。View层即UI层,可采用的技术如JSP,Structs,SpringMVC等 2.Controller层。Controller表示控制器层,可采用的技... 查看详情
浅谈数据中心架构演变
谈到数据中心的架构和建设,我们不难想到最初的三层架构,即完全硬件化的架构。650)this.width=650;"title="1.png"src="https://s1.51cto.com/oss/201711/21/b9c77e346a1d04980b5c0418c6ac47df.png-wh_500x0-wm_3-wmp_4-s_1810635125.png"alt="b9c77e346a1 查看详情
大型网站架构演变和知识体系
...,讲述了淘宝网的架构演变过程,感觉挺好的,之前就对网站架构比较感兴趣,所以也会多关注一些架构方向的文章。本篇文章也是看到后感觉很棒,由于转载的并不是真正的作者,所以也就无法贴出真正作者地址了。以下是该... 查看详情
网站平台架构演变史
...的产品已经做了11个年头了,在餐饮业可以说数一数二,网站架构从原始的单一应用一直演变至今,已经十分庞大了,不说完美,但是可支撑的业务量已经十分强大。最近受邀参与了他们的架构分享会,在此我也总结一下大致内... 查看详情
大型网站架构的发展演变过程(代码片段)
大型网站架构的发展演变过程 原文地址什么是大型网站如何定义一个网站是不是大型网站,一般我们会从两个纬度去考衡,访问量以及数据量,二者缺一不可。我们以javaweb为例,来搭建一个简单的电商系统,从这个系... 查看详情
转载:大型网站架构演变和知识体系
...据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由... 查看详情
大型网站架构演变史(含技术栈与价值观)
这篇文章是参考李智慧的《大型网站技术架构:核心原理与案例分析》和现蘑菇街CTO曽宪杰的《大型网站系统与Java中间件实践》写的一篇读书笔记。前言何谓大型网站?大型网站的特点是什么?大型网站架构发生演变的源动力... 查看详情
网站业务架构演变过程
有一天,我突发奇想创建了一个站点,基于LNMP架构,起初只有我自己访问,后来因为我点儿正,访问量越来越大,所以最终导致下面的架构演变。1.单台机器因为只是一个小站,访问量一天也没有多少uv(100以内),所以用一台1... 查看详情
互联网技术架构演变过程-软件架构设计学习第四天(非原创)
文章大纲一、演变过程思路图二、何为大型网站三、架构体系演进四、架构总结五、参考文章一、演变过程思路图二、何为大型网站1.大型网站特性既然说的是大型网站架构,那么架构的背后自然是解决人因面对大型网站特性而... 查看详情
大型网站架构演变
1、简介大型网站架构的演进最开始都是由小及大慢慢演变过来的,任何一个好的架构都不是设计出来了,是经过业务发展迭代而来的,这个观点我是赞同的。对于网站架构技术非常有兴趣,一直持续关注学习架构技术,本次想... 查看详情
(转载)中大型网站架构演变之路
标签:网站架构 大型网站架构原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lizhenliang.blog.51cto.com/7876557/1951651前言网上有很多文章类似于... 查看详情
大型网站架构-1.架构的演变过程
...发之路。 2.第二阶段:应用服务和数据服务分离随着网站的第一次上线,我们的网站如果运营得不错的话,在这之后应该会逐渐积累人气,业务也会随 查看详情
《大型网站技术架构》读书笔记——大型网站软件系统架构演变(代码片段)
大型网站软件系统特点大型网站架构演化发展进程大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据。初始阶段的网站架构大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站... 查看详情
从100pv到1亿级pv网站架构演变
一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。1:积累是必不可少的架构师... 查看详情
从100pv到1亿级pv网站架构演变(转)
http://www.linuxde.net/2013/05/13581.html 一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中... 查看详情
网站平台架构演变史
上篇文章大致降了网站架构的一个大致发展趋势,这篇咱们讲讲数据库。数据库在大并发的情况下是最容易出现问题的,往往都是由于写操作引发的网站访问缓慢或者崩溃,之前说过12306就是这个问题。大并发的时候,打个比方... 查看详情
网站系统架构演变
...的感觉。二、背景说明? 我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,... 查看详情
mysql在大型网站的应用架构演变
写在最前:本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变可扩展性架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下&... 查看详情