云计算中的可扩展性是什么?
2023-06-08 08:00:00
·
飞浪
·
PhilZona
也许您是在电视节目《硅谷》的笑料中听到过这句话,或者您是从一位想要投资某家公司的严肃风险投资人那里听到过这句话。无论如何,您可能都听过这个问题:它能扩展吗?抛开所有笑话不谈,可扩展性不仅是解决方案
也许您是在电视节目《硅谷》的笑料中听到过这句话,或者您是从一位想要投资某家公司的严肃风险投资人那里听到过这句话。无论如何,您可能都听过这个问题:它能扩展吗?抛开所有笑话不谈,可扩展性不仅是解决方案架构师的关键概念,也是 DevOps 世界中任何人的关键概念,也是云支持计划的关键。那么让我们来谈谈云计算中的可扩展性概念。
什么是可扩展性?
可扩展性是指系统中每个应用程序或基础设施都可扩展以处理增加的负载。例如,假设您的 Web 应用程序在 ProductHunt 等热门网站上展示。突然间,成千上万的访问者正在使用您的应用程序 - 您的基础设施可以处理这些流量吗?拥有可扩展的 Web 应用程序可确保它可以扩展以处理负载而不会崩溃。崩溃(甚至只是缓慢)的页面会让您的用户不满意,并且您的应用程序声誉不佳。系统有四个一般领域可以应用可扩展性:
- 磁盘 I/O
- 记忆
- 网络 I/O
- 中央处理器
当谈论云计算的可扩展性时,您经常会听到两种主要的扩展方式 - 水平或垂直。让我们更深入地了解这些术语。
垂直扩展
垂直扩展通常被认为是两种方法中“更简单”的一种。垂直扩展系统时,您可以为现有实例添加更多功能。这可能意味着更多内存 (RAM)、更快的存储(如固态硬盘 (SSD))或更强大的处理器 (CPU)。之所以认为这是更简单的选择,是因为在 AWS 等云平台上,硬件升级通常很简单,因为这些平台上的服务器已经虚拟化。在软件级别,您也几乎不需要进行任何额外的配置(如果有的话)。
水平扩展
水平扩展稍微复杂一些。水平扩展系统时,通常会添加更多服务器以将负载分散到多台机器上。然而,这会增加系统的复杂性。现在,您拥有多台服务器,需要执行更新、安全和监控等常规管理任务,但您现在还必须跨多个实例同步应用程序、数据和备份。
那么哪一个更好?
水平扩展通常被认为是一种长期优势,而垂直扩展通常被认为是一种短期优势。原因是您通常可以根据需要在基础设施中添加任意数量的服务器,但在某些时候,硬件升级是不可行的。
表现
扩展系统的主要原因之一是提高性能。但这只是性能的一个方面 - 扩展与许多其他概念相关,例如弹性和容错性。
响应时间
系统性能由许多不同的指标来衡量 - 其中一个主要指标是响应时间。有趣的是,扩展系统可能会增加响应时间。如果您从将所有组件(数据库、应用程序代码、缓存)放在一台服务器上的系统架构类型转变为将这些组件分离到各自的服务器上的系统架构类型,那么响应时间自然会增加,因为您现在有网络延迟和其他考虑因素。让我们看看下面两种流行的系统架构类型。
整体式
整体系统架构是指将许多组件放在一个地方。当谈论应用程序时,它可能意味着您将所有服务(例如数据层、缓存层、文件层和业务逻辑)耦合在一起。当谈论硬件和服务器时,它可能意味着您将所有进程(例如数据库、Web 服务器和文件系统)放在一个地方运行。
微服务
微服务系统架构是将核心服务拆分成各自的生态系统的过程。应用程序的一个关键部分可能是可以保存、删除、缓存和操作图像的图像处理服务。此服务可以设置为自己的基础架构,这意味着它将与其他应用程序服务分开。在提到微服务时,您经常会听到 关注点分离这个术语 。虽然每个核心服务都有自己的基础架构可以使可扩展性更容易,但它仍然会给您的应用程序增加很多复杂性。您现在必须管理多个服务器,还要更改应用程序代码以处理这些更改。
可扩展性和数据库
每个应用程序都不同,但关键是要确定可能成为瓶颈的关键服务以及在负载压力增加的情况下最先崩溃的服务。最常见的瓶颈之一可能是数据库。数据库用于在应用程序中存储数据。您可以使用传统的关系数据库(如 MySQL)或 NoSQL 数据库(如 MongoDB)。简而言之,数据库用于写入数据(保存)和读取数据(查看)。在应用程序环境中,数据库通常是最先在高负载压力下崩溃的组件之一。
分片
为了实现可扩展性而对数据库进行分片,就是将数据拆分到单独的数据库服务器中。您可以将数据拆分为“分片”,而不是将所有数据都放在一个数据库服务器上。这可以通过以下几种方式提高性能:
- 数据请求在多个服务器之间共享,而不是每次都在同一个数据库服务器之间共享
- 每个分片上的数据越少,索引大小就越小,从而可以缩短数据查找时间
- 每个分片上的数据越少,意味着数据行就越少,这可以使查询运行得更快,因为需要遍历或计算的数据更少
分区
数据库分区与数据库分片类似,但并不完全相同。数据库分区将数据分成不同的部分。某些分区方法包括:
- 按范围拆分数据(按字母顺序或数字顺序)
- 按行(水平分区)
- 按列(垂直分区)
应用程序代码数据库优化
您还可以执行应用程序级数据库优化,例如:
- 使用数据库索引
- 表分区
- 缓存数据库查询
- 反规范化
- 离线运行大型查询/批量查询
可扩展性优势
可扩展架构的主要优势在于性能和处理突发流量或重负载的能力,几乎没有任何预警。可扩展系统可以帮助您的应用程序或在线业务在高峰时段保持运行,而不会造成金钱损失或声誉受损。将您的系统设置为微服务系统架构等服务可以使监控、功能更新、调试和扩展更加容易。
可扩展性注意事项
可扩展性确实有其缺点;它肯定不是灵丹妙药。创建一个完全可扩展的系统和基础设施可能是一项艰巨的任务,需要规划、测试和更多测试。如果您已经有一个应用程序,拆分该系统可能是一个繁琐的过程,可能需要更改代码、更新软件和进行更多监控。
AWS 上的可扩展性
亚马逊 Web 服务作为一个平台,具有内置的可扩展性。它们提供许多服务,可帮助您根据资源需求扩大或缩小应用程序规模。作为 AWS 的一款产品,Elastic Load Balancer 可以根据应用程序收到的流量按需自动扩展。它还与后端服务(如 EC2 实例)上的 Auto Scaling 集成,提供完整的端到端扩展层来处理不同级别的流量。
审查
使用云的公司不会永远一成不变。他们使用云来帮助他们扩展业务。可扩展性是渴望成为解决方案架构师的人需要了解的核心概念之一,以便尽可能提高效率。就这样结束了!在这篇文章中,您了解了有关可扩展性的所有信息,包括它如何影响系统和应用程序、它的好处和注意事项、优化数据库以实现可扩展性以及如何将可扩展性与 Amazon Web Services 结合使用。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~