华企号 后端开发 单服务器和负载均衡的结构

单服务器和负载均衡的结构

单服务器模型是最简单的一种架构,参考如下图

用户访问一个 URL,URL 会先到 DNS 服务器进行域名解析,然后返回给客户端一个 IP 地址,客户端会通过这个 IP 地址访问到真正的服务,服务接收到客户端请求以后,返回对应的 HTML 页面,就完成了整个过程。

当然,以上是静态页面,相对复杂的应用会配置数据库,架构如下

在选择数据库的时候,会涉及数据库选型问题,有两类比较主流的数据库可以选择,即关系型数据库非关系型数据库

关系型数据库也被称为关系型数据库管理系统(RDBMS),关系型数据库以表和行来表示和存储数据。其优势是你可以使用 SQL 语句在不同的数据库表中执行连接操作。

非关系型数据库也被称为 NoSQL 数据库。 一般被归纳为四类:键值存储、图形存储、列存储和文档存储。非关系型数据库一般不支持连接操作。

对于大多数开发者来说,关系型数据库是最好的选择,因为它们已经存在了40多年且一直运行良好;然而,如果关系型数据库不适合你的特定用例,

比如

  • 应用需要超低的延迟。
  • 数据是非结构化的,或者你没有任何关系型数据。
  • 只需要对数据进行序列化和反序列化(JSON、XML、YAML等)。
  • 需要存储大量的数据

则非关系型数据库可能是正确的选择。

关系型和非关系型数据库的选型可以参考这个网站:DB-Engines Ranking

随着用户数量增多,单服务架构的设计可能会导致一些问题,比如:

用户是直接连接到网络服务器的。如果网络服务器离线,用户将无法访问网站,在另一种情况下,如果许多用户同时访问网络服务器,并达到网络服务器的负载极限,用户一般会遇到较慢的响应或无法连接到服务器。

针对这些问题,有两种主要的思路,分别是:水平扩展垂直扩展

垂直扩展,简言之就是在你的服务器上增加更多的配置,比如 CPU、内存 等资源。

水平扩展,简言之就是增加更多的服务实例来扩展的服务能力。

当流量较低时,垂直扩展是一个很好的选择,简单直接。但是垂直扩展也有严重的局限性,因为

  • 不可能在一台服务器上增加无限的 CPU 和内存。
  • 垂直扩展不具备故障转移和冗余功能。如果一台服务器瘫痪了,整个网站/应用程序就会完全瘫痪。

由于垂直扩展的局限性,水平扩展对于大规模的应用来说是比较理想的。

水平扩展的一个技术就是负载均衡。可以比较好的解决这个问题。架构如下

如图所示,用户直接连接到负载均衡器的公共 IP。在这种设置下,网络服务器已经无法被客户直接访问。为了提高安全性,服务器之间的通信使用了私有 IP。私有 IP 是一个只能在同一网络中的服务器之间到达的 IP 地址;但是,它在互联网上是无法到达的。负载均衡器通过私有 IP 与网络服务器进行通信。
在图中,在添加了一个负载均衡服务器和第二个 Web 服务器后,我们成功地解决了没有故障转移的问题,并提高了Web层的可用性。

  • 如果服务器1离线,所有的流量将被路由到服务器2。这可以防止网站脱机。我们还将在服务器池中添加一个新的健康的Web服务器,以平衡负载。
  • 如果网站流量迅速增长,而两台服务器不足以处理这些流量,负载均衡器可以优雅地处理这个问题。你只需要向网络服务器池添加更多的服务器,负载平衡器就会自动开始向它们发送请求。

作者: 华企网通李铁牛程序员

我是程序员李铁牛,热爱互联网软件开发和设计,专注于大数据、数据分析、数据库、php、java、python、scala、k8s、docker等知识总结。15889726201 我的座右铭:"业精于勤荒于嬉,行成于思毁于随"
上一篇
下一篇

发表回复

联系我们

联系我们

028-84868647

在线咨询: QQ交谈

邮箱: tech@68v8.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部