专栏名称: 架构文摘
每天一篇架构领域重磅好文,涉及一线互联网公司的互联网应用架构、大数据、机器学习等各个热门领域。
目录
相关文章推荐
架构师之路  ·  如果Kimi抄我的内容,能告它侵权吗? ·  3 天前  
美团技术团队  ·  没猜错的话,你在等美团技术年货 | ... ·  3 天前  
架构师之路  ·  如何发现架构中的耦合(5大场景)?(第36讲) ·  3 天前  
架构师之路  ·  小红书的产品经理,麻烦您进来看一下... ·  5 天前  
架构师之路  ·  uid分库,uname究竟怎么查询(5种方法 ... ·  6 天前  
51好读  ›  专栏  ›  架构文摘

中大型网站技术架构演变过程

架构文摘  · 公众号  · 架构  · 2018-06-09 09:00

正文

1、大型网站的特点


  • 高并发,大流量:PV量巨大。即页面浏览量;用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。

  • 高可用:7*24小时不间断服务。

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

  • 用户分布 广泛,网络情况复杂:为全球用户提供服务,用户分布范围广。

  • 安全环境恶劣:黑客攻击多。

  • 需求快速变更,发布频繁:快速适应市场,满足用户需求。

  • 渐进式发展:慢慢地运营出大型网站。


2、大型网站架构演变过程


  • 初始阶段网站架构



一台Server就刚需—应用程序、数据库、文件等所有资源都集中在一台Server上,典型案例:基于LAMP架构的PHP网站。


  • 应用和数据服务分离



三台Server平天下—业务发展,单台不再适应业务的发展,将应用和数据分离后成三台Sever(应用服务器、文件服务器与数据库服务器)。分离后三台Server对硬件资源的需求各不相同:应用服务器需要更快更强大的CPU,而数据库服务器需要更快的硬盘和更大的内存,文件服务器则需要更大的硬盘。


  • 使用缓存改善网站性能



3+N的Server模式—减少数据库访问压力,提高网站的数据访问速度。缓存又可以分为:本地缓存和远程缓存(可以是分布式的),本地缓存访问速度快,但数据量有限;远程分布式缓存可以集群,因此容量不受限制。


  • 使用应用服务器集群改善网站并发处理能力



集群—解决高并发、海量数据问题的常用手段,实现系统的可伸缩性。通过负载均衡调度器,可将用户访问分发到集群中的某台Server上,应用服务器的负载压力不再成为整个网站的瓶颈。


  • 数据库读写分离



随着用户量的增加,数据库成为最大的瓶颈,改善数据库性能常用的手段是进行读写分离以及分表,读写分离顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步。分库分表则分为水平切分和垂直切分,水平切换则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中。


  • 使用反向代理和CDN加速网站响应



CDN和反向代理的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,而反向代理则部署在网站的中心机房。使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。


  • 使用分布式文件系统和分布式数据库系统



用户一天天增加,业务量越来越大,产生的文件越来越多,单台的文件服务器已经不能满足需求。需要分布式的文件系统支撑。


  • 使用NoSQL和搜索引擎



NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。


  • 业务拆分



随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分,如百度分为新闻、网页、图片等业务。每个业务应用负责相对独立的业务运作。业务之间通过消息进行通信或者同享数据库来实现。


  • 分布式服务



这时我们发现各个业务应用都会使用到一些基本的业务服务,例如用户服务、订单服务、支付服务、安全服务,这些服务是支撑各业务应用的基本要素。我们将这些服务抽取出来利用分部式服务框架搭建分布式服务。


出处:

https://juejin.im/post/5aeea414f265da0ba266e242



架构文摘

ID:ArchDigest

互联网应用架构丨架构技术丨大型网站丨大数据丨机器学习

更多精彩文章,请点击下方:阅读原文