大型网站技术架构之架构演化发展历程

news/2024/5/15 4:23:33/文章来源:https://blog.csdn.net/striveb/article/details/84837642

前言:大部分来自《大型网站技术架构》,小部分来自个人见识,欢迎指正。

1.初始阶段:

最开始的时候,基本上就只有一个服务器。所有的资源,如:应用程序、数据库、文件等都在一台服务器上。这个时候基本还没什么访问量,或者说是处于开发阶段,还没有正式上线部署应用,所以计算、运行等资源还不用太多。

2.应用数据和数据服务分离

 等到应用上线了之后,访问量会变得越来越多。这个时候一台服务器的不足之处或者说最开始的架构不合适的地方就会彰显出来。最明显的可能是存储和访问或响应速度,这个时候就要开始考虑优化最开始的架构和增加一些硬件资源了。可以将应用数据和数据服务分离,最简单粗暴的就是增加服务器,可以将资源拆分部署到不同的服务器,比如:应用服务器、数据库服务器和文件服务器。

当然,对于这三种服务器来说,各自的功能不同,所以对硬件的要求是不同的。比如应用服务器的话要处理大量的业务逻辑,所以对CPU要求比较高;文件服务器主要是存储用户上传的文件,所以对存储要求比较高,所以需要比较大的硬盘;而数据库服务器则对数据的写和读要求比较高,所以对内存要求比较高。

目前看来,这个架构还是比较稳定的,可以应对一定的访问量。但是一旦用户又多了起来,数据库的压力会比较大,导致访问可能延迟,所以还需要继续优化。

3. 使用缓存改善性能

在今天,缓存这个概念相信对于大家都不难理解,顾名思义就是缓存数据的,减轻数据库的压力。对于任何一个网站来说,总有一些业务是需求比较大,即有些功能用的比较多的,比如:对于淘宝来说,那些好评高的商品会访问比较多;对于百度,热门搜索会比较多,所以对于这部分数据,可以将他们放入缓存,减轻数据库的压力。

网站使用的缓存主要分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。本地缓存会跟应用争资源,所以不是很提倡。远程分布式缓存服务器可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器。

常用的缓存数据库有Redis,memcached,mangodb等,其中,Redis的应用是最广泛的,它是非关系型数据库,即nosql,其实可以理解为不止数据库,主要是存放键值对,性能非常好,可以大大减轻数据库压力。

使用缓存之后可以减轻数据库的访问压力,但是对于单一应用服务器来说,处理的请求是有效的,所以达到一定访问量的时候,应用服务器会成为整个网站的瓶颈。

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

当一个网站遇到瓶颈的时候,最简单的方式就是增加硬件资源,而对于增加硬件资源,最简单粗暴的就是增加服务器数量,搭建服务器集群。搭建服务器集群还要一个好处就是伸缩性比较好,后面可以直接再增加服务器即可。

可以通过负载均衡调度服务器分发不同的请求到任一应用服务器, Nginx可以实现负载均衡的功能,它还可以对不同的服务器设置不同的权重,即可以设置访问应用服务器的顺序。后面如果请求量再一次增大,可以直接添加新的应用服务器即可。

负载均衡器主要有下面几个作用:

  1. 通过设置过滤无效请求,可以使用lua或者C语言;
  2. 提供路由算法,合理分发请求到各个服务器;
  3. 限流,当用户请求过多的时候可以通过限流来防止服务器宕机。

5.数据库读写分离

在上面我们说过使用缓存减轻数据库压力,但是有时候一些特殊情况,比如缓存没命中(多线程情况下,参照:这个)或者缓存时间过期等,会导致一部分读操作和所有的写操作还是会访问数据库,这个时候数据库的访问压力还是很大。所以到了后期,我们需要优化数据库。比较常见的就是进行主从分离,将一台数据库的数据更新同步到另一台数据库。使用这个特点,可以实现数据库读写分离,改善数据库负载压力。

主从数据库分别执行写和读的功能,应用服务器写数据的时候,访问主数据库,然后主数据库同步数据到从数据库,等需要读取数据的时候,即访问从数据库。简单来说,就是主数据库主要执行insert、update和delete操作,而从数据库主要执行select操作。

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

随着网站业务的发展,用户规模越来越大,而不同地区、不同设备等因素所影响,导致网速也有所不同,可能会出现访问盐池,网站响应过久等不好的情况。为了提高访问速度,除了增加服务器的带宽,还可以通过反向代理和CDN提高网站访问速度。

这两者的基本原理都是缓存,区别在于CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己比较近的网络供应商的机房获取数据;而反向代理部署在网站的中心机房,当用户请求到达中心机房的时候,首先访问的是反向代理,反向代理会先查看本身是否具有响应用户请求的数据,如果有则直接放回给用户。

个人感觉CDN其实就是有点类似DNS,记录了一些服务器的IP,根据发出请求的IP,查找最近的服务器进行响应。CDN和反向代理一方面是为了提高用户访问速度,一方面也是为了减轻后端应用服务器的负载压力。 

7.使用分布式文件系统和分布式数据库系统、NoSql和搜索引擎

后面发展到一定程度的时候,基本上都会对资源进行分布式处理,根据业务,将不同业务的数据库拆分到不同的数据库服务器。而对于数据的存储和检索需求也越来越复杂,所以也会采取NoSql和搜索引擎。

8.业务拆分和分布式服务

现在的分布式和微服务非常火热,当一个网站发展到后期很庞大的时候,就离不开这两者。可以根据不同的业务或者产品线,将一个网站拆分为多个功能模块,部署到不同的服务器上,不同模块之间可以通过消息队列或者服务调用(如dubbo和zookeeper)等实现交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_744833.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高并发高流量网站架构

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有…

视频网站盈利模式与营销策划

在与数十家视频网站进行信息网络传播权交易过程中,在研究视频网站内容和盈利模式基础上,综合自己在传统媒体和新媒体领域十几年的策划和营销经验,我发现:视频网站的盈利模式其实早就形成多种体系,但是盈利之路艰难&…

如何搭建自己的网站

当你看到我这个博客的时候,我猜你应该是学习计算机的朋友,你可能会写一些漂亮的前台界面,或者能写一个小的web项目,但是你可能不知道怎样让自己的这个界面或者项目,只通过一个网址,任何人都可以随时随地进行…

怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解

注意域名,动静分离的网站,只对静态文件的域名做了cdn 怎么看网站有没开启CDN? 要看一个网站是否开启CDN,方法很简单,只要在不同的地区ping网址就可以,比如在山东济南ping www.jb51.net 得到的IP地址是111…

字节一面:网站显示不出来,怎么排查?

大家好,之前有读者在字节一面的时候,被问了这么一个问题:在浏览器输入 URL 并回车后,如果页面迟迟没有出现,怎么去排查问题?我的回答:最直接的办法就是抓包,排查的思路大概有&#x…

卧槽,这才是最强Python刷题网站!

大家好,最近经常有粉丝问零基础/基础薄弱,要怎么开始学习python,今天来给大家分享一些python的学习方法,先给大家推荐一个粉丝反馈用起来不错的免费python学习&练习网站https://www.nowcoder.com/link/pc_gzh_pyahzsq_python一…

一夜成名的航班追踪网站,什么来头?

明敏 鱼羊 发自 凹非寺量子位 | 公众号 QbitAI一款本来名不见经传的“小众民航好物”,一夜爆红。其实时追踪航班的功能,昨夜吸引30万人齐齐涌入,直接把这小破网站搞得流量爆炸,一度崩溃。如果你睡得比较早,现在可以再一…

漫画:网站访问缓慢怎么办?

什么是CDN?CDN 全称 Content Delivery Network,翻译过来叫做内容分发网络,核心作用是给互联网内容传输“加速”。什么是全站加速?全站加速,英文Whole Site Acceleration,缩写WSA,融合动态加速与…

自助建站平台实力比拼:凡科、微企点、建站之星、宝华建站、微魔方、上线了...

2019独角兽企业重金招聘Python工程师标准>>> 随着互联网快速发展,网站建设受到越来越多的关注。优秀的企业网站能够为企业形象代言,也可以成为产品或服务宣传的重要窗口、企业收集反馈客户意见的重要渠道、搭建产品信息的数据库等。相较于独立…

大型网站架构演变

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

宝塔面板设置wordpress主题网站伪静态的最简单的方法

WordPress日记 2018-02-27 WP主题开发 4,224 次 最近网站更换了服务器,安装了宝塔面板,安装好以后发现安装管理网站还是非常的直观方便的,但是有一点让我折腾了好久,那就是网站设置伪静态固定连接后,总是出现404错误…

支付宝网站支付即时到帐(一) 参数的文档地址

必备物品:企业支付宝账号 官网 : https://open.alipay.com/platform/home.htm 第一步 创建网站应用 并完善信息 这一步很简单 添加上网站支付的功能 第二步 找到即时到帐的文档 https://docs.open.alipay.com/62/103566 上面有获取pid的方法 https…

SEO关键词排名下降,5个方法帮你恢复排名!

作为一名SEO人员我们每天的工作除了做推广以为,最主要的内容就是监控关键词的排名,很多初入SEO行业的小伙伴特别紧张,如果并不是大面积的关键词排名下降,还请大家放轻松,你可以通过下面5个方法来恢复你的关键词排名&am…

怎样解决Internet Explorer无法访问网站的现象

去掉"自动检测设置"的复选框 1 打开Internet Explorer浏览器,点击右上角齿轮 2 点击Internet选项 3 点击连接 4 点击局域网设置 5 将“自动检测设置”的勾去掉,单击“确定” END 指派IP地址和DNS服务器 1 打开网络和共享中心 2 活动…

一例千万级pv高性能高并发网站架构

一个支撑千万级PV的网站是非常考验一个架构是否成熟、健壮(本文不涉及软件架构的层面,有兴趣也可以讨论)。现抛出一个系统层面的架构,不保证是最优的方案,但也许适合你。理由是再优秀的架构都不具备通用性,需要根据每种应用特点针…

大型网站框架从单台服务器到群集的演变过程

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结 果,而没有很详细的讲为什么需要做这 样的演变,再加上近来感觉有不少同学都很难明白为什…

study-19: LAMP企业网站集群架构搭建(自己实战)

一,架构图 二,安装软件 1,WEB-A (192.168.1.241): 1)安装LAMP(MYSQL安装到make && make install即可) 2)安装rpcbind:yum install rp…

WebStack-Laravel 和宝塔导航网站部署

中国所有网站上的人才。。。没有一个教程是完整的。。 效果网站: nav.yzdzy.com www.liuan.wiki 安装宝塔教程 无 命令行工具: 感谢阿里云 升级镜像命令 官方地址 先看下后面要用 https://developer.aliyun.com/composer 我写一份完整的教程 …

html 树形结构_合排名的网站结构是怎样的?

网站结构是网站的骨架,就像人也有骨架一样,及其重要。在搜索引擎打分规则中,网站的得分占比还是非常大的,我们下面会给大家分享下网站结构优化建议。什么是网站结构网站的结构,可以理解为网站的内容分类。通常可以从网…

前嗅ForeSpider教程:网站登录配置

当我们在采集中碰到:所采集的网站数据需要登录,才可以看到所需信息时,则需要在软件中模拟登陆环境,采集数据,此时需要配置登录信息。今天小编就教大家:如何进行网站登录配置,具体步骤如下&#…