大型网站技术架构:大型网站架构演化

news/2024/5/20 12:29:25/文章来源:https://blog.csdn.net/dangfulin/article/details/108814115

这是《大型网站技术架构》的系列读书记录。

一,大型网站软件系统的特点

1,高并发, 大流量。

在这里插入图片描述
在这里插入图片描述
每秒7亿次请求,阿里新一代数据库如何支撑?

PV(Page View)访问量,即页面浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,是多次打开或刷新同一页面则浏览量累计。
UV(Unique Visitor)独立访客,统计1天内访问某站点的用户数。网站通过cookies判断来访客户端身份,如果访问时cookies不相同,计数会加1。
IP(Internet Protocol)独立IP数,是指1天内多少个独立的IP浏览了页面。不同的IP浏览页面,计数会加1。 IP是基于用户广域网IP地址来区分不同的访问者的,所以多个用户(多个局域网IP)在同一个路由器(同一个广域网IP)内上网可能被记录为一个独立IP访问者。如果用户不断更换IP,则有可能被多次统计。
Session次数(网站访问量)Session会话是指在指定的时间段内在您的网站上发生的一系列互动,所以会话次数是一段时间内用户向您的网站发起的会话(Session)总数量。一次会话会浏览一个或多个页面。

2,高可用

7x24小时不间断服务。

解密阿里巴巴高可用架构技术——“异地多活”

一个阿里技术男经历的六年“双11”:技术改变阿里

回顾2019年5个重大宕机事件

3,海量数据

1 PB= 1024TB 1EB=1024PB

2017 How much data does google handle??

4,用户分布广泛, 网络情况复杂

用户分布范围广, 各地网络情况千差万别。

5,安全环境恶劣

由于互联网的开放性, 使得互联网站更容易受到攻击。

2019 年中国互联网网络安全报告出炉

6,需求快速变更, 发布频繁

为满足用户需求, 其产品发布频率是极高的。

7,渐进式发展

不是一开始就开发好的, 这也正好与网站架构的发展演化过程对应。

二,大型网站架构演化发展历程

大型网站的技术挑战主要来自于庞大的用户, 高并发的访问和海量的数据。

1,初始阶段的网站架构

——单服务器

应用程序、 数据库、 文件等所有的资源都在一台服务器上。
在这里插入图片描述

  • 比如使用LAMP架构。

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

——独立部署

越来越多的用户访问导致性能越来越差, 越来越多的数据导致存储空间不足。 这时就需要将应用和数据分离。
在这里插入图片描述

  • 应用服务器需要处理大量的业务逻辑, 因此需要更快更强大的CPU。
  • 数据库服务器需要快速磁盘检索和数据缓存, 因此需要更快的硬盘和更大的内存。
  • 文件服务器需要存储大量用户上传的文件, 因此需要更大的硬盘。

3,使用缓存改善网站性能

——使用缓存

大部分的业务访问集中在一小部分数据上,遵循“二八定律”。把这一小部分数据缓存在内存中,可减少数据库的访问压力、提高整个网站的数据访问速度、改善数据库的写入性能。
在这里插入图片描述

  • 缓存在应用服务器上的本地缓存:本地缓存的访问速度更快一些, 但是受应用服务器内存限制, 其缓存数据量有限, 而且会出现和应用程序争用内存的情况。
  • 缓存在专门的分布式缓存服务器上的远程缓存:远程分布式缓存可以使用集群的方式, 部署大内存的服务器作为专门的缓存服务器, 可以在理论上做到不受内存容量限制的缓存服务。

数据访问压力得到有效缓解,但应用服务器成为整个网站的瓶颈。

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

——使用集群与负载均衡

对网站架构而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器不断改善系统性能, 从而实现系统的可伸缩性。 应用服务器实现集群是网站可伸缩集群架构设计中较为简单成熟的一种。
在这里插入图片描述

  • 通过负载均衡调度服务器, 可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上。

5,数据库读写分离

——数据读写分离

虽然使用了缓存来改善网站性能,但是仍有一部分读操作(缓存访问不命中、 缓存过期) 和全部的写操作需要访问数据库,在网站的用户达到一定规模后, 数据库因为负载压力过高而成为网站的瓶颈。
通过配置两台数据库主从关系, 可以将一台数据库服务器的数据更新同步到另一台服务器上。 网站利用数据库的这一功能,实现数据库读写分离.从而改善数据库负载压力。
在这里插入图片描述

  • 应用服务器在写数据的时候, 访问主数据库, 主数据库通过主从复制机制将数据更新同步到从数据库, 这样当应用服务器读数据的时候, 就可以通过从数据库获得数据。
  • 为了便于应用程序访问读写分离后的数据库, 通常在应用服务器端使用专门的数据访问模块, 使数据库读写分离对应用透明。

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

——代理加速

在用户分布广泛、网络情况复杂的情况下,为了提供更好的用户体验, 留住用户, 网站需要加速网站访问速度。 主要手段有使用基本原理都是缓存技术的CDN和反向代理。
使用CDN和反向代理的目的都是尽早返回数据给用户, 一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
在这里插入图片描述

  • CDN部署在网络提供商的机房, 使用户在请求网站服务时, 可以从距离自己最近的网络提供商机房获取数据。
  • 反向代理则部署在网站的中心机房, 当用户请求到达中心机房后, 首先访问的服务器是反向代理服务器, 如果反向代理服务器中缓存着用户请求的资源, 就将其直接返回给用户。

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

——使用分布式存储系统

虽然已经对应用服务端与数据服务端做出了优化,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也是一样,需要使用分布式文件系统。
分布式数据库是网站数据库拆分的最后手段, 只有在单表数据规模非常庞大的时候才使用。 不到不得已时, 网站更常用的数据库拆分手段是业务分库, 将不同业务的数据库部署在不同的物理服务器上。
在这里插入图片描述

8,使用NoSQL和搜索引擎

——优化存储与搜索

随着网站业务越来越复杂, 对数据存储和检索的需求也越来越复杂, 网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。
在这里插入图片描述

  • 应用服务器则通过一个统一数据访问模块访问各种数据, 减轻应用程序管理诸多数据源的麻烦。

NoSQL和搜索引擎都是源自互联网的技术手段, 对可伸缩的分布式特性具有更好的支持。

9,业务拆分

——业务拆分部署

为了应对日益复杂的业务场景, 通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物交易网站就会将首页、商铺、 订单、 买家、卖家等拆分成不同的产品线, 分归不同的业务团队负责。
具体到技术上, 也会根据产品线划分, 将一个网站拆分成许多不同的应用, 每个应用独立部署维护。
在这里插入图片描述
应用之间可以用以下方式建立联系:

  • 通过超链接建立关系(在首页上的导航链接每个都指向不同的应用地址) 。
  • 通过消息队列进行数据分发。
  • 通过访问同一个数据存储系统来构成一个关联的完整系统,

10,分布式服务

——抽取公共服务

随着业务越拆越小,存储系统越加越大,应用系统整体复杂度急剧增加, 部署维护越来越困难。 由于所有应用要和所有数据库系统连接,导致存数据库接资源不足。
将这些应用的共用业务提取出来,独立部署,由它们连接数据库, 提供共用业务服务。应用系统的其他业务服务只需通过分布式服务调用共用业务服务完成具体业务操作。
在这里插入图片描述

三,大型网站架构演化的价值观

网站的价值在于它能为用户提供什么价值, 在于网站能做什么, 而不在于它是怎么做的, 所以在网站还很小的时候就去追求网站的架构是舍本逐末, 得不偿失的。

1,核心价值

——随网站所需灵活应对

不是从无到有搭建一个大型网站,而是能够伴随小型网站业务的逐步发展,慢慢地演化成一个大型网站。

2,驱动力量

——网站的业务发展

创新的业务发展模式对网站架构逐步提出更高要求, 才使得创新的网站架构得以发展成熟。

四,网站架构设计误区

1,一味追随大公司的解决方案。

经验值得借鉴,但不要盲从。

2,为了技术而技术。

技术应满足实际的业务,不要一昧追求新技术。

3,企图用技术解决所有问题。

技术架构服务于业务架构,当技术上解决不了问题时,考虑改变业务架构。

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

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

相关文章

vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别(上)

http://www.cnblogs.com/iceicebaby/archive/2012/02/21/2361558.html 一:先来看看 新建网站 里面的 ASP.NET 网站的建立过程 我们采用 3层架构 如果我们想把整个项目放到 D:\web网站建设 这个文件夹来,那么我们建立Web层的时候,Web层的地…

vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)

地址:http://www.cnblogs.com/iceicebaby/archive/2012/02/21/2361686.html 二:下面是 通过 新建项目 来创建 ASP.NET web 应用程序 下面我们创建 数据库DAL层 和 实体类层 Model 他会自动生成 DAL 文件夹 我们继续 Model 层。方法同上,就不…

部署网站出错,定义了重复的“entityFramework”节点

网站在本地运行正常,部署到服务器,访问出现以下 “entityFramework”节点只定义了一个,但它认为是有多个,最终把该节点屏蔽后网站才能正常运行。没弄明白原理。。。

说说大型高并发高负载网站的系统架构

转载请保留出处:俊麟 Michael’s blog (http://www.toplee.com/blog/?p71) Trackback Url : http://www.toplee.com/blog/wp-trackback.php?p71 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理…

MySQL在大型网站的应用架构演变

MySQL在大型网站的应用架构演变 http://www.tuicool.com/articles/VZF3aiF 【编者按】作为最流行的开源数据库,MySQL被广泛应用在Web应用程序以及其它中小型项目上。然而不可忽视的是,在许多大型IT公司中,MySQL在高度优化和定制化后&#x…

MySQL 在大型网站的应用架构演变

写在最前: 本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段…

Android开发中混淆后Gson序列化、反序列化的那些坑,网站开发前后端分离

为什么呢? 因为反序列化创建对象本质还是利用反射, 会根据 json 字符串的 key 作为属性名称, value 则对应属性值. 如何解决 将序列化和反序列化的类排除混淆 使用 SerializedName 注解字段 SerializedName(parameter) 通过注解属性实现了 序列化的结果中, 指定该属性 ke…

Hexo+Coding搭建自己的博客网站系列1-本地环境部署

前言 我的博客:https://fitz1318.top/ 最近我终于实现了自己很久之前关于搭建自己专属的博客网站的目标,现在把搭建期间的过程和走过的坑记录下来,如果你对搭建自己的网站有兴趣,不妨可以参考一下我的文章。 首先我说下自己的版本…

Hexo+Coding搭建自己的博客网站系列2-部署博客到Coding上

前言 欢迎浏览我的网站https://fitz1318.top/ 最初,我是选择部署到Github上的,但是最后在弄百度收录时出现了问题,Github Pages屏蔽了百度爬虫,这样子你的博客就没办法被百度收录了。 注册并新建仓库 Coding的网址 &#xff0c…

Hexo+Coding搭建自己的博客网站系列3-详述站点全局配置文件

Hexo 目录如下图 欢迎浏览我的博客:https://fitz1318.top/ 这是Blog文件的目录。从上到下依次解释 node_modules:hexo整个项目的环境依赖,hexo初始化时自动生成的。public:存放的是整个项目的页面,样式,及逻辑代码。scaffolds:s…

【教程】Hexo+Coding搭建自己的博客网站系列5-Next6.7版本主题深度美化

在我进行主题优化的时候,参考了网上很多文章,但是随着Next版本的变迁,越来越多个性化设置已经被集成到Next中。所以我写了这篇关于Next6.7版本主题优化的方案。有时间和精力的话,这篇文章也会随着Next版本变迁持续更新.欢迎浏览我…

前端开发值得收藏的网站

工作空闲时间,作为前端开发人员,还是希望利用好这段宝贵的时间多学习一些前端资源,了解当前前端知识体系,从整体上对当前行业有一个由浅入深的了解和掌握。后续还会慢慢更新好用的前端相关网站,加油! 1.Co…

服务器电脑无限重启,win10电脑蓝屏无限重启_网站服务器运行维护

win10电脑锁屏时间设置_网站服务器运行维护win10电脑锁屏时间设置方法是:1、首先点击【windows】,点击【设置】;2、然后点击【系统】选项,选择【电源和睡眠】选项;3、最后设置锁屏时间即可。第一步:进入Win…

设计响应式网站-Bootstrap(1)

1.Bootstra介绍 2011年,twitter的“一小撮”工程师为了提高他们内部的分析和管理能力,用业余时间为他们的产品构建了一套易用、优雅、灵活、可扩展的前端工具集--BootStrap。Bootstrap由MARK OTTO和Jacob Thornton所设计和建立,在github上开…

财经资讯网站--某联社参数破解

本文仅供学习,如有侵权或问题联系博主,感谢阅读 目标链接:aHR0cHM6Ly93d3cuY2xzLmNuL2RlcHRoP2lkPTEwMDA 抓包分析: 可以看到加密参数只有一个sign,像这种sign的一搜肯定一堆。所以我拿sv去搜了,看着像m…

源码或学习网站

网站 项目管理网站 开源中国:码云 CSDN: Coding GitHub 阅读 教程 |Android Studio 发布开源项目到JCenter 源码 1:APKBUS:使用MVP模式简单地展示知乎日报主页及内容, Github:AZhiHu 2 高仿知乎日报 3 ZhihuDailyPurify - 知乎日报净化 4 菜…

网站开发预备知识

1.网络系统开发模式 (1)B/S:brower/server 浏览器/服务器 (2)C/S: client/server 客户端/服务器 2.URL (1)全称:Uniform Resource Locator 统一资源定位符(网址&#xf…

网站收集

一、生活类 1. 蛙蛙工具——找工具 这是一个便捷的在线工具集合网站,集合了数百种实用工具。它的工具查询是非常便捷的,在便民查询中,我们可以查询电话号码的归属地,身份证的所在地,邮政编码的查询等等,蛙…

去除手机浏览器访问CSDN网站的提示

文章目录前言一、烦人的提示二、寻找解决方法三、编写脚本1.去除打开APP提示2.自动展开3.复制代码四、完整代码五、效果展示总结前言 有时候想用手机查查程序问题,用手机浏览器访问总是弹出打开App、登录烦人的提示 一、烦人的提示 用手机看几篇文章,打…

XUESQL-自学SQL网站上的练习题

SQL学习及习题答案( XUESQL) 1.SELECT 查询 请列出所有电影的ID,名称和出版国 SELECT title,id,美国 as country FROM moviesSQL Lesson 7: 外连接(OUTER JOINs) INNER JOIN 只会保留两个表都存在的数据(还记得之前的交集吗&a…