返回博客

设置您的应用程序:如何选择最佳的服务器配置?

设置您的应用程序:如何选择最佳的服务器配置?

介绍

技术和互联网已成为我们日常生活、学术和职业生涯的核心。这就是为什么同时存在如此庞大数量的网站和应用程序并不令人感到意外。如果您是一家企业,您会希望拥有一个相关的网络平台。应用程序使您能够轻松地向目标客户推广和交付您的服务。

无论您出于何种原因创建Web 应用程序,您都需要确定如何构建它。在选择最佳服务器配置时,有许多选择供您支配。您选择的服务器架构将决定您如何在环境中运行和管理一切。这就是为什么必须在仔细考虑后做出决定的原因。

如何选择合适的服务器配置

那么,您如何决定哪种架构对您的应用程序是“合适”的呢?为此,您首先需要考虑您的 Web 应用程序有哪些需求。为了让它在您的特定使用场景中高效运行,您必须融入某些功能。例如,也许您正在努力开发一个易于扩展的应用程序。或者,也许您需要您的应用程序在浏览器以及移动设备上都能流畅运行。同时,您的预算也可能是您首要考虑的问题。

无论您的需求是什么,您都应该知道您可以为您的应用程序创建自定义解决方案。在本教程中,我们将探讨许多人通常用于其 Web 应用程序的各种服务器类型。我们将讨论各种使用场景以及何时最适合使用某种配置。为了帮助您决定它是否适合您,我们还将为您提供每种服务器架构的一些优缺点。

1. 单个服务器上的所有内容

顾名思义,您将整个环境加载到一台单一的服务器上。该环境将包括您的 Web 服务器、应用程序服务器以及数据库服务器。例如,它适用于Linux, Apache, MySQL,以及PHP(LAMP)堆栈配置。您可以按照我们的教程了解如何在 Ubuntu 服务器上安装 LAMP 堆栈以及如何在 CentOS 上安装 LAMP 堆栈.

single server

何时使用:

如果您时间紧迫,这种安排效果最好。它设置起来简单快捷。这就是为什么它适用于简单的 Web 应用程序。

优点:

  • 简单易懂且易于实现。
  • 完整设置所需的时间很少。

缺点:

  • 不支持水平扩展。
  • 在组件隔离方面提供的支持极少。
  • 由于应用程序和数据库位于单台服务器上,它们实际上在竞争相同的资源。
  • 因此,您可能会遇到性能不佳的问题。

 

2. 独立的数据库服务器

使用单台服务器的主要问题是对有限资源的竞争。这种配置旨在解决该问题。在这里,数据库管理系统(即 DBMS)与应用程序服务器保持分离。数据库服务器位于私有网络中,并拥有自己的资源。这带来了更好的性能和更高的安全性。

separate database server

何时使用:

同样,如果您想快速部署,这非常容易配置。如果您担心数据库和应用程序竞争相同的资源,这是理想的解决方案。

优点:

  • 应用程序和数据库各自拥有独立、专用的系统资源,包括 CPU、内存、I/O 等。
  • 应用程序层和数据库层都具有更大的扩展潜力。
  • 您可以根据需要添加和删除资源。
  • 如果您将数据库从公共互联网中移除,您还可以提高安全性。

缺点:

  • 比单服务器配置稍微复杂一些。
  • 两台服务器之间的低带宽或高延迟网络连接可能会导致性能问题。

3. 反向代理或负载均衡器

这就是负载均衡器 派上用场。负载均衡器通常用于服务器环境中,以提高性能和可靠性。它们通过“平衡负载”来实现这一点;即在一组服务器之间分配工作负载。

load balancer

何时使用:

当您需要进行 水平扩展 时,负载均衡器非常有用。水平扩展基本上意味着向环境中添加更多服务器。您还可以使用应用层反向代理,通过一个域名和端口同时为多个应用程序提供服务。 HAProxy, Nginx,以及 Varnish 都是允许反向代理负载均衡的软件示例。

优势:

  • 如果队列中的一台服务器发生故障,其他服务器会通过平衡工作负载来补偿其功能。
  • 允许您进行水平扩展,以增加或减少环境的容量。
  • 它还限制客户端连接,从而提供针对 DDOS 攻击的保护。

劣势:

  • 如果系统资源不足,负载均衡器可能会限制应用程序的性能。
  • 需要进行适当的配置以确保良好的性能。
  • 比单服务器或独立服务器设置要复杂得多。
  • 您需要考虑诸如 SSL 终止以及需要粘性会话的应用程序等因素。
  • 使用负载均衡器的主要令人担忧之处在于它是单点故障。这意味着如果负载均衡器无法工作,您的整个服务都将瘫痪。

4. HTTP 加速器或缓存反向代理

这是一种可以用来提高向应用程序用户交付内容速度的设置。它采用各种技术来缩短这一时间。其中最重要的一种是缓存来自应用服务器的响应。当用户第一次请求内容时,加速器会将其保存在内存中。因此,当未来出现任何类似的请求时,它会快速提供内容,而无需与应用服务器进行交互。Nginx、Varnish 和 Squid 均能够进行 HTTP 加速.

HTTP accelerator

何时使用:

显而易见,这种设置最适合用户频繁请求的文件和内容。它也非常适合内容丰富的动态 Web 应用程序。

优势:

  • 缓存和压缩显著提高了应用程序和请求处理的速度。
  • 降低 CPU 负载也能提高网站性能。
  • 您也可以将其用作反向代理负载均衡器。

劣势:

  • 您必须对其进行良好的调优才能发挥其最佳性能。
  • 如果缓存命中率较低,您可能会遇到性能不佳的情况。

 

5. 主从数据库复制

主从数据库复制设置通常对于读操作多于写操作的系统非常有用。例如,内容管理系统可以很好地利用这种架构。您需要一个主节点和一个或多个复制节点来进行复制。它将读操作分配到所有节点上。更新操作仅发送到主节点。

Primary-Replica Database Replication

何时使用:

正如我们所提到的,基于复制的数据库设置有助于提高系统的读取性能。您可以将其用于 CMS 等应用程序。

优势:

  • 它通过将读取操作分散到各个副本中,从而提高了数据库的读取性能。
  • 如果您仅将主节点用于更新,还可以提高写入性能。

劣势:

  • 任何尝试访问数据库的应用程序都必须能够决定将更新和读取请求发送到哪个节点。
  • 如果主副本发生故障,更新就会停止。您必须解决该问题才能允许更新继续。
  • 没有故障转移机制来应对潜在的主节点故障。

组合使用服务器设置

幸运的是,您还可以结合各种技术来获得所需的结果。这意味着您可以在单个环境中对应用服务器和缓存服务器进行负载均衡,并复制数据库。这样做可以让您充分利用这两类服务器的功能。然而,这并不会让设置变得更加复杂或麻烦。

示例:

我们将通过一个示例来理解这样一种环境:

load balancer

在这种环境中,负载均衡器会将静态请求发送到缓存服务器。静态内容 包括 CSS、图像和 Javascript 等。相反,它会将任何其他类型的内容请求定向到应用服务器。

假设用户正在向该环境请求一些静态内容。以下是将会发生的过程:

  • 负载均衡器首先会确定内容是缓存命中(cache-hit)还是缓存未命中(cache-miss)。缓存命中的内容存在于缓存中,而缓存未命中的内容则不存在。它通过向缓存后端进行检查来实现这一点。
  • 如果是缓存命中,负载均衡器会将内容发送给用户。
  • 如果是缓存未命中,缓存服务器会将请求转发给应用后端。
  • 应用后端将从数据库中查找并发送内容。
  • 缓存后端从负载均衡器接收内容。在将其返回给负载均衡器之前,它还会缓存此内容。
  • 后者随后将响应转发给用户。

另一方面,如果用户请求动态内容,将会发生以下情况:

  • 请求将从用户发送到负载均衡器。
  • 该请求将到达应用后端。
  • 应用后端定位所请求的内容并将其返回给负载均衡器。
  • 用户接收内容。

这种组合环境的主要优势之一是它更可靠。不仅如此,它还具有更卓越的性能。然而,仍然存在两个单点故障——负载均衡器和主数据库服务器。

结论

您可以在您的环境中单独使用每种服务器设置。另一方面,您也可以将其中几种结合起来,以创建个性化的解决方案。没有“正确”的答案。这完全取决于您希望从该架构中获得什么功能。

了解每种服务器设置如何工作的基础知识将有助于您为自己的应用做出决定。最好的做法是从小处着手,保持简单。随着经验的积累,您可以不断增加设置的复杂性。

祝您计算愉快!

author

Manpreet Singh

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的创意设计师,专注于通过传统和创新营销渠道打造一致的企业形象。他擅长将艺术愿景与战略营销相融合,创造具有影响力的品牌叙事。

评论

暂无评论。发表第一条评论吧。