一、一步步构建高并发分布式网站架构(1.1)

news/2024/5/10 5:51:55/文章来源:https://blog.csdn.net/weixin_39514326/article/details/100140327

1.1 分什么布

我尽量不把这类文章写成软件工程专业的死板教学用书。但是每章第一节的确都是构建一个健全系统不可或缺的概念知识。

其实在前言中,我就已经叨叙了为什么要使用分布式架构。简而言之,就是要采用“分而治之”的思想,将网站这个大系统分成不同的子系统,每个子系统各尽其职,承担负载。

分布式系统实际上是一个很广泛的概念,不仅指网站的构架。因为这本书主要是讲PHP网站(实际操作更是ThinkPHP5) 如何进行分布式系统的构建和配置,所以本书提到的分布式系统主要是指PHP网站的常见分布式架构。要更了解这个分布式系统,我们得先来看看现在互联网上大多数小网站采用的是什么样的“单主机架构”。

1.1.1 70%的网站

某乎上有这样的说法,互联网上90%的网站都是用PHP写成的(认真脸)。那么我们再估约,互联网上70%的网站可能都是用的一个主机这样的配置环境。那做为一个PHP程序员,LAMP / LNMP 这样的环境应该是再熟悉不过。我们这里就简单介绍一下,方便我们与分布式系统对比。

在这里插入图片描述
上图就很清晰地展现了一个最常见的PHP网站所运行在的环境。从客户端浏览器请求到收到页面的大致流程:

  1. 客户端向域名/IP的80端口通过HTTP协议发出请求,请求指定url;
  2. Nginx/Apache分析请求url,判断是静态资源则直接返回静态资源,判断是PHP脚本则向PHP请求解释PHP脚本;
  3. PHP脚本解释时,如果需要操作数据库,则会通过MySQL扩展与数据库产生链接;
  4. PHP将解释渲染而成的HTML(也可能是JSON等)返回给Nginx/Apache;
  5. 再由Nginx/Apache交回给客户端浏览器,用户就看到页面了。

没错,静态资源的存储、PHP脚本解析、MySQL数据库等等,这个网站的一切都在一个主机上发生了。当然,小网站使用这样的环境搭建没有任何错;但如果访问量到一定量级的网站仍旧使用这样的方式,那么其中任何一块的崩溃都可能导致整个网站宕机,没有Backup(备用)方案。并且如果要进行升级,那么不能针对瓶颈所在系统进行升级而只能对整个主机进行升级。这是不安全的,也是不划算的,况且单机性能是有极限的。

1.1.2 我们要做的20%

本书所讲的分布式系统其实也是基于这样简单的单主机的结构,毕竟我们网站主要跑的还是PHP程序。但是我们要针对这样的基础构架进行升级,把这整个系统的各个组成成分(比如数据库、比如静态资源)划分到更多的主机上去。于是,我们来看一个典型的PHP网站采用的分布式系统架构:

在这里插入图片描述

图上的具体机制,第一节就不做赘述,这里只总体了解架构。垂直拆分与水平拆分的概念也会在第三节讲到。

仔细对比这张图与上面的“单主机架构”图。可以发现,下图中的每一部分都是从原来的单个主机上剥离开来,形成单独的子系统。正是这样的子系统分走了不同服务该承受的负载压力。如果其中的一个主机出现了故障,通常比如是Web服务器或数据库,那么我们有很多其他的平行服务器继续提供服务,这样更加安全可靠。在遇到下一次瓶颈时,分析瓶颈所在子系统,为对应子系统升级(添加机器数量、增加配置)即可,新机器到子系统的添置、部署十分简单。

当然,不是对于每一个网站都要求各个子系统都一应俱全,这有时是不必要的。比如,大多数网站的瓶颈在于数据库,而在计算方面问题不大,那么就可以只采用分布式数据库解决当下的问题。这一点,在下一节的瓶颈分析中会讲到。而具体每个瓶颈的应对措施其实就是接下来几章的分章内容。

同样,每个子系统的位置、关联也不是按上图那样死板固定,而是有很灵活的方案可供选择。比如,做为静态资源的分流,既可以选择自己搭建静态资源服务器也可以选择云服务商提供的CDN服务,或者甚至资源文件很少不需要分流直接部署在Web服务器上;Redis也可以不仅仅作为Session的共享,在大规模访问的情境下还可以作为数据库缓存使用。一切都可以根据网站的实际情况进行定制,前提是了解各系统的运行互联机制,这些都会在后期章节Cover到。

作者
haoren
全栈开发 / 数据采集 / 数据监测 / 网站建站 / 小程序
mail: 532526447@qq.com
qq:532526447

您的赞赏是我的动力!谢谢


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

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

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

相关文章

一、一步步构建高并发分布式网站架构(1.2)

1.2 瓶颈分析 不同网站有不同的属于该类型网站的特定性能瓶颈。比如资讯类网站大部分在进行读数据库,文件存储类网站大部分在进行文件I/O操作,而如果网站业务是计算密集型,性能瓶颈一般在CPU。 1.2.1 Linux 下的性能监测 要找到网站的瓶颈…

一、一步步构建高并发分布式网站架构

前言 适合对象 我用LA(N)MP ✔ 我用ThinkPHP5 ✔ 我为小但逐渐发展网站工作 ✔ 我开发/管理的PHP网站遇到了瓶颈 ✔ 我会基本操作 ✔ 本文会带你了解一般的适合PHP网站的分布式系统的构建,对一个PHP程序员来说,应该易于理解、实现,希望能实…

测试网站访问速度的5个方法

网页载入速度对于一个网站来讲很关键,Google已经将一个网站的载入速度列入了网站关键字排名的考虑因素当中,也就是说如果你的网站有足够的内容,而且载入速度比别人的网站更快一步的话,那么你就是获得更好的排名。那么下面就赶快测…

远程访问Docker镜像内宝塔搭建的网站

应用场景 近日,因为要搭建很多测试网站环境,本着可偷懒的原则,采用的Docker来搞。并在Docker镜像中装入宝塔面板 操作流程 1、拉取镜像,装宝塔面板 这里选择的centos 8.0,安装宝塔。 报错情况: Error: …

8个免费下载文献的学术网站(亲测可用)

给大家推荐8个免费下载文献的学术网站,希望能帮到大家。 本文首发于公众号智慧科研。 1.Library Genesis Library Genesis号称是帮助全人类知识无版权传播的计划。网站上论文很多,下载方便,几乎每天都在更新。 网址:http://ge…

宝塔+wordpress服务器个人网站建站教程

一个非常简单且友好的个人网站建站教程 前期需要准备的工具: 一台云服务器(一般都包含了公网IP)。 我们采用的策略是宝塔wordpress安装。宝塔是一个对服务器网站资源管理的工具,而wordpress则是一个十分常用的基于php的网站模板。 安装宝塔 下载地址 https://www…

python爬取动漫网站的动漫

最近学了一下爬虫,就写段代码来试一下成果如何.(目的是爬取某动漫网站上的一部动漫darling in the franxx) 版本是python3.7 import requests import refrom selenium import webdriverimport osheaders{user-agent : Mozilla/5.0 (Windows …

《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码

Swift 2.0学习笔记——使用Web网站编写Swift代码 原创文章,欢迎转载。转载请注明:关东升的博客 Swift程序不能在Windows其他平台编译和运行,有人提供了一个网站swiftstub.com,左栏是代码编辑窗口,右栏是运行结果窗口。…

百家号怎么加网站链接进行引流,方法让你轻松掌握

互联网推广模式方法一直在变,平台也在变,当然推广思维模式也要跟着变。现在大家对网站seo优化似乎失去了信心,原因是百度新算法大幅度提升 自家产品,不愿意给企业站或者个人网站倒流了。那么作为推广运营的我们,势必也…

水产百科网站(SSM,MySQL )

【项目包含内容】 【视频运行指导教程目录】 视频:https://www.bilibili.com/video/BV1Xa4y1v7dx/ 【项目运行工具】 Eclipse JDK1.8 TOMCAT8 MYSQL 链接:https://pan.baidu.com/s/1BJCnUCTlqzVA6zEJpNxgYw 提取码:f2ni 【部分项目…

学习网站推荐

正文: 菜鸟教程https://www.runoob.com/ 对于要学习某一门流行编程语言来说,我首推这个网站。这个网站相比于在我看过的来说呢,是看起来比较舒服的一个,里面涵盖大多数编程语言等,如Python、Java、C、C、JavaScript、…

电影影视网站对接微信公众号 日引流500+的实例教学

哈喽,大家好, 今天写一个关于电影网站对接公众号,日引流500的教程。首先自己百度找一个电影网站,获取网站的TOKEN和URL对接地址。 token: qweqwe URL: http://e.66hai.com/api.php/wechat注意:还需要一…

Vue项目实战-小商城的基本功能的实现-移动网站开发实例

1.项目的效果图 以下效果图是在谷歌浏览器的手机适配模式看到的。 主页展示 新闻资讯展示 详细新闻资讯展示 图片列表展示 缩略图展示 商城展示 2.工具技术准备 工具:vscode。 技术:Vue.js,node.js,MUI,Mint-UI. 3.项目目录的详情 4.项目配置文件 …

企业实战 -大型网站架构概述

文章目录 企业实战 -大型网站架构概述网站架构的发展历程初始阶段的网站应用和数据分离使用缓存改善网站性能缓存技术: 使用应用服务器集群改善并发处理能力数据库读写分离使用反向代理和CDN加速网站响应使用分布式文件系统和分布式数据库系统使用NoSQL和搜索引擎业务拆分分布式…

Android 设计相关网站推荐

这篇文章给大家介绍几个设计相关的网站&#xff0c;因为博主除了软件开发以外还比较喜欢设计&#xff0c;据我观察了解程序员普遍审美都是比较差的&#xff0c;所以这次给大家推荐几个我认为比较好的用来帮助开发和提升审美的网站。 <1> MaterialPalette&#xff1a;Mat…

PHP开发电脑网站支付宝支付详细流程(沙箱测试篇)

先附上我开始做沙箱测试的时候写的笔记 &#xff08;1&#xff09;准备工作 1、蚂蚁金服开放平台的商户账号&#xff08;个人账号不行&#xff09; 2、php5.5以上的开发环境 &#xff08;2&#xff09;具体流程 1、demo下载 进入蚂蚁金服开放平台的首页&#xff0c;选择文…

Thinkphp5开发电脑网站支付宝支付详细流程(线上测试篇)

在沙箱测试篇讲过的我在这里就不再做重复&#xff0c;详情请见上一篇PHP开发电脑网站支付宝支付详细流程&#xff08;沙箱测试篇&#xff09; 在沙箱测试的时候使用的是沙箱环境中的配置&#xff0c;现在进行线上测试&#xff0c;需要创建应用 1、创建应用 登录蚂蚁金服开放…

数据采集之爬取2019最好大学网站前四列排名保存为csv文件格式简单案例 BeautifulSoup

数据采集之爬取2019最好大学网站前四列排名 保存为csv文件格式 简单案例 BeautifulSoup 目录&#xff1a; 第一步 观察网页 第二步 使用requests、 BeautifulSoup解析数据 第三步 代码呈现结果 开始&#xff1a; 第一步 观察网页 第二步 使用request、 BeautifulSoup解析…

钉钉扫码登录第三方web网站,及得到用户详情信息

1 注册应用 &#xff08;1&#xff09;授权页面logo地址&#xff1a; 扫码设备显示的图片 &#xff08;2&#xff09;回调域名&#xff1a;用户扫码成功确认后跳转的页面&#xff08;等待页面&#xff09;&#xff0c;携带code(临时授权码&#xff09;和status&#xff08;防止…

政府网站普查,国办标准VS省市标准,谁更严格?谁的合格率更高?

政府网站普查政策实施多年&#xff0c;标准变化多次&#xff0c;目前实施的标准是2019年4月份发布的国务院办公厅制定的《政府网站与政务新媒体检查指标》和《政府网站与政务新媒体监管工作年度考核指标》。 随着普查的常态化&#xff0c;国务院每年根据国办标准抽查一次&…