你知道大型网站的系统架构是如何演变的吗?

正文内容

处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构设计系列,首先我们今天讲讲大型网站架构设计是如何演变的,跟着我一起出发吧。

一、大型网站系统的特点

高并发,大流量:需要面对高并发用户,大流量访问;

高可用:系统24小时不间断的提供服务;

海量数据:需要存储、管理海量的数据,需要使用大量的服务器;

用户分布广泛,网络情况复杂:很多大型网站都是为全球用户服务,用户的分布范围广泛,各地网络情况差异大;

安全环境恶劣:互联网的开放性,导致网站更容易受黑客的攻击;

需求快速变更,发布频繁:相比传统软件,互联网产品为了快速适应市场,满足用户的需求,产品发布的频率是极高的;

渐进式发展:与传统行业软件不同,互联网产品不是事先就规划好了整个产品的全部功能,几乎每个大型互联网网站都是从一个小网站,慢慢根据市场和用户的改变而慢慢渐进发展成大型网站的;

二、大型网站架构发展历程

大型网站的技术挑战主要来自三个方面:庞大的用户体系,高并发的访问以及海量数据的存储管理。基于这三点,我们就来看看,整个架构设计方面是如何演变的。

初始阶段:这个阶段一般网站用户量也不多,访问量都不大,数据量也不多,因此一般一台服务器就能搞定,应用程序,数据库和文件都可以部署在一台服务器上,架构图如下:

应用服务和数据服务分离阶段:随着用户数量的增加,越来越多的用户访问导致性能越来越差,数据也越来越多导致存储空间不足,此时我们就需要考虑将应用和数据分离,此时网站需要3台服务器:应用服务器+数据库服务器+文件服务器,架构设计如下图:

使用缓存改善性能阶段:随着数据库压力越来越大,我们需要考虑从数据上优化性能,大家都知道80%的业务访问集中在20%的数据上,既然大部分业务集中访问这少部分数据,那为何我们不考虑把这部分数据缓存在内存中呢,不就可以减小对数据库访问的压力了嘛;

数据库读写分离阶段:网站在使用了缓存之后,使部分数据可以不通过数据库就能完成,但是对于数据库的修改操作,还是需要访问数据库的,这个时候,数据库的负载压力过高,能为网站的性能瓶颈,此时我们就要考虑数据库的读写分离了,数据库的读写分离是建立在主从热备的基础上的,基本目前大多数主流数据库都支持主从热备,通过配置两台或者多台数据库的主从关系(1主1从,1主多从,多主多从),实现数据的读(从库)写(主库)分离,主库主动将数据同步到从库。

分布式文件系统和分布式数据库系统阶段:当读写分离之后如果还不能满足网站的需求,那就只能考虑最后的手段了:分布式数据库,网站常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理机上。

业务拆分阶段:分而治之思想,将整个网站业务划分为不同的产品线,根据不同的产品线划分将网站拆成不同的应用,每个应用独立部署维护如一个电商网站可以分为:首页,订单,商品,活动,优惠卷,个人中心,购物车等等多个应用,应用之间可以通过消息队列来传递数据。

三、网站架构设计的误区

一味追求大公司的解决方案:大公司的架构和成功案例当然值得借鉴,但是不能盲从;

为了技术而技术:技术是为业务而存在的,在技术选型和架构设计中一定要结合具体业务,脱离业务的架构毫无意义;

企图用技术解决所有问题:技术是用来解决业务问题的,而业务本身的问题,是可以通过业务去解决,而没有必要企图用技术是解决;

四、总结

设计网站架构时一定要从小开始,架构随业务演变而演变,切记不要在业务还是0的时候去追求1的架构设计,那样的架构只会舍本逐末,得不偿失;

你花了·来阅读,阅读增长见识,

希望对你有帮助,点个再走吧~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912B0B18700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券