web高负载技术架构图_如何为Web应用程序构建高负载架构

web高负载技术架构图

为Web产品选择正确的体系结构是在考虑其开发过程中需要解决的关键问题。 首先,它应该是可伸缩的并且能够处理高负载。 尤其是当您要创建功能正常的网站,在线预订服务或电子商务解决方案时。

还记得人们如此钟爱的祝福星期五吗? 您是否知道有时网站和Web应用程序无法抵御如此大量的用户涌入并造成大量损失?

也许,当您不得不等待很长的时间才能加载网页或最终批准交易时,您也会感到恼火。 并停止与为您提供糟糕客户体验的公司开展业务。

页面和部分内容的缓慢加载,崩溃,随机错误,与Internet的断开连接可能是缺乏高负荷体系结构的可能后果。 这就是为什么创建可以处理高负载的软件系统很重要的原因。 即使您的Web项目很小,但有时可能会有大量用户涌入,或者您可能需要弹性扩展。

看一下有关高负载的一些事实:

  • 当一台物理服务器无法有效执行数据处理时,开始出现高负载
  • 如果一个实例同时服务10,000个连接–这是高负载
  • 高负载大约可同时为成千上万的用户提供服务
  • 如果您在AWS(Amazon Web Services),Microsoft Azure或Google Cloud Platform上部署Web解决方案,则您将维持高负载架构

如果您的Web解决方案不能承受高负载,则可能会遇到以下问题:

  • 页面加载缓慢或无休止
  • 随机误差
  • 与Web服务器的连接断开
  • 部分内容加载
  • 减少用户观众活动
  • 客户流失

如您所见,项目架构会影响其成功。 没有满意的客户-没有成功和利润。 要实现可伸缩的Web应用程序,您需要了解开发高性能软件解决方案的原理。

构建高性能解决方案的原则

1.动态和灵活性

您永远都不知道明天的项目到底会发生什么。 否则,如果没有人期望,一些次要产品功能将开始流行。

或者,您可能需要添加各种功能。 或者,您将决定推广您的应用程序并吸引客户。 因此,您必须能够弹性缩放并处理高负载。

在开发大型Web解决方案时,请关注灵活性,因为它将使您轻松进行更改和扩展。 灵活性,没有所有方面的初步计划,是任何快速增长的软件系统的最重要特征。

2.项目逐步增长

很难预测未来几年的受众规模,因此最好将重点放在可伸缩性上。 应用程序架构也是如此。 逐步解决方案是成功进行软件工程的基础。

如果您正在运行新产品,则无法立即提供可以承受数百万用户并同时处理其多个请求的基础结构。

使用云托管新项目,因为它可以减少服务器的成本,简化其管理并轻松部署应用程序。

此外,许多云托管服务还提供专用网络服务,使软件开发人员可以安全地使用云中的服务器并进行系统扩展。

Web解决方案的扩展是一个逐步的过程,它包含四个主要步骤:

  • 负荷分析
  • 确定受负载影响最大的区域
  • 这些区域到单个节点的转移及其优化
  • 负荷分析

可扩展的Web项目体系结构的开发

在大多数情况下,新的软件解决方案在单个服务器上运行,同时运行Web服务器,数据库和解决方案本身。 您从一开始就不会构建大型复杂项目。 相反,应将重点放在产品可伸缩性上,并选择功能强大的服务器,该服务器将在必要时能够处理高负载。

这种方法将帮助您节省时间并降低开发成本。 在下面,您可以看到一些方法来帮助您制作高性能的可伸缩Web应用程序。

数据库分离

通常,它是负载最重的第一个节点。 从用户到应用程序的每个请求通常是10到100个数据库查询。 在单独服务器上的数据库分支将提高其性能,并减少对其他组件(PHP, Nginx等)的负面影响。

数据库迁移
在某些情况下,将数据库移动到另一台服务器可能是工作Web解决方案的问题。 您应进行以下操作以有效地进行迁移:

  • 使用简单的解决方案–在网站上发布有关计划工作的公告,然后进行转移。 最好在用户观众活动很少的晚上进行此操作。
  • 使用复制将数据从一台服务器同步到另一台服务器。 配置后,应将应用程序中的数据库IP地址更改为新服务器。 然后–关闭旧服务器。

Web服务器分离

此后,分离Web服务器,将其分配给单独的节点将允许为应用程序保留更多资源。 说到PHP的示例,您应该将产品部署配置到Nginx服务器和代表后端PHP服务器。

然后,Nginx本身将提供静态文件,而PHP服务器将仅被脚本处理占用。 Nginx通过IP地址启用到后端的连接:

server {
server_name ruhighload.com;

root /var /www/ruhighload;
index index.php;

location ~* .(php)$ {
fastcgi_pass 10.10 .10 .1 : 9000 ;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

请记住,如果使用文件加载,则需要将文件存储分配给单独的节点。

使用多个后端

当负载增加时,Web应用程序开始运行的速度就会变慢。 在某些时候,原因已经在于实现本身。 为避免此类问题,应使用多个PHP后端。

安装后端时,请确保它们具有相同的配置。 使用Nginx平衡它们之间的负载。 为此,您应该在上游定义后端列表,并在配置中使用它:

upstream backend {
server10.10 .10 .1 ;
server 10.10 .10 .2 ;
server 10.10 .10 .3 ;
}
server {
server_name ruhighload.com;
root / var / www / ruhighload;
index index.php;
location ~ * . (php) $ {
fastcgi_pass backend;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
}
}

当您开始使用多个后端时,来自同一用户的请求将被发送到另一台服务器。 这将需要一个用于所有会话的存储库。

您可以选择例如Memcache。 另外,您应该连接缓存服务器。 Memcache将使用恒定的哈希算法在所有服务器之间独立分配负载。

任务队列和DNS平衡

任务队列可以异步执行繁重的操作,而不会降低主应用程序的速度。 队列服务器将从Web解决方案接收任务时,其他服务器将处理它们。 如果队列中的平均任务数将增加,请增加服务器数以平衡负载。

DNS支持基于Round Robin的平衡,允许指定接收Web服务器的多个IP地址,称为前端。 在这里,您需要安装几个相同的前端,以便DNS为不同的客户端提供不同的IP地址。 这样,您将确保前端之间的平衡。

文件存储

文件上传和处理通常在后端进行。 有多个后端是完全不便且效率低下的,因为软件工程师必须记住他们在哪个后端上载每个文件。

而且,它们会降低后端性能。 为避免此类困难,应使用单独的服务器来加载,存储和处理文件。

您可以通过以下方式进行操作:

  • 为文件服务器定义一个单独的子域
  • 在服务器和可以存储文件并进行处理的小型应用程序上部署Nginx
  • 通过添加新的服务器和子域(例如,images1,images2,images3等)进行扩展。
  • 将文件负载转移到客户端,以便表单将请求发送到特定服务器

创建应用程序没什么大不了的,它可以随着流量的增长在服务器之间成比例地扩展。 一切都是无状态的,负载平衡,90%的高速缓存,可靠的内容交付网络等–您将拥有高负载架构。

但是,成本效益是关键。 假设您有10万个用户和一台服务器。 因此,要获得13万个,您需要放置另一台服务器。 似乎很困难,不是吗?

因此,您应该落后一步,然后思考–系统的哪一部分会引起问题? 如果是数据库,请在开始项目开发之前选择一个可扩展的数据库。 或者,您可以使用多个数据库,例如,一个用于写入,一个用于读取(CQRS)。

预先定义和解决此类性能问题,并且不会显着增加基础架构成本,这是确保高负载的有效做法。

如果您在任何类型的开发项目中需要帮助,我也可以为您提供有关项目的咨询。 我是最受好评的自由职业者。 您可以直接在 Upwork 上雇用我 你也可以 雇用我   自由职业者

如果您有任何评论,问题或建议,请随时在下面的评论部分中发布它们!

翻译自: https://hackernoon.com/how-to-build-a-high-load-architecture-for-your-web-application-hf2n32wg

web高负载技术架构图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值