系统设计中非常重要的概念之一就是可扩展性。
在系统设计中,可扩展性是指系统使其性能和成本适应应用程序和系统处理需求的新变化的能力。
用于构建服务、网络和流程的架构在以下两个条件下是可扩展的:
可扩展性基本上是衡量系统对资源添加和删除以满足我们的要求的响应能力的指标。这也就是我们在开发系统的时候对系统进行需求分析,并确保系统具有适应性和可扩展性的中药作用。
现在可扩展性是通过系统中的两种方法实现的:
现在让我们讨论上面提到的和上面展示的两种将系统扩展至更高深度的方法,如下所示:
通过添加更多配置或硬件以实现更好的计算或存储,垂直扩展可以扩展系统的规模。实际上,这包括升级处理器、增加内存、磁盘、带宽或进行其他增加功率的更改。在这种情况下,使用多核扩展来通过在 CPU 和 RAM 资源之间分配负载来进行扩展。
垂直缩放
通过添加新机器的行为,系统可以水平扩展。必须聚集并连接多个设备才能处理更多的系统请求。
可扩展代码通常计算效率低下。这是一个痛苦的事实,因为我们将大而复杂的代码拆分为一组小的关联操作,以便水平扩展,因为垂直扩展是有限制的。
我们已经讨论了每种扩展类型的细节,我们根据不同的参数对它们进行比较:
影响范围 | 水平扩展 | 垂直扩展 |
---|---|---|
数据库 | 数据分区 | 数据在单台机器上,并且跨多核进行扩展,此后负载将在 CPU 和 RAM 之间分配。 |
停机时间 | 添加机器可以减少停机时间。 | 调用单台机器会增加停机时间。 |
数据共享 | 由于存在分布式网络结构,因此通过消息传递进行数据共享变得相当复杂 | 在单台机器上工作可以实现消息传递,从而使数据共享变得非常容易。 |
正如上面通过可扩展性概念所研究的那样,我们在设计系统架构时,我们不能选择极端的设计,即要么过度使用(更多数量的资源)资源,要么未充分利用(更少数量的资源)每个资源收集并分析需求。
现在这里有一个问题,即使我们可以设计一个永久完美的系统,也会出现失败(如上面的架构师设计原则规则中所讨论的)。正如上面提到的,在最佳设计的系统中确实存在故障,但我们可以防止它们在全球范围内妨碍我们的系统。 这是因为我们保持系统冗余并复制数据以保留数据。
现在让我们更深入地理解这些术语,如下所示:
冗余无非是节点或组件的复制,以便在某个节点或组件发生故障时,备份节点可以继续为消费者提供服务。为了维持可用性、故障恢复或故障管理,冗余很有帮助。冗余的目标是创建快速、有效且可访问的备份通道。
它有两种类型:
复制是对各种数据存储的管理,其中每个组件都保存在不同服务器上托管的多个副本中。它只是在许多设备之间复制数据。它涉及同步各种机器。复制通过确保冗余资源之间的一致性来提高容错能力和可靠性。
另外,它有两种类型:
现在,在掌握了负载平衡和缓存的先决知识后,让我们深入研究负载平衡和哈希的概念。
提示: 到目前为止,我们已经通过复制检查在服务器中高效存储数据,实现了高效存储数据。但如果我们仔细观察,到目前为止,我们只强调适当地扩展系统,但这些系统效率非常低。 这是因为我们只是通过冗余来扩展系统,以检查数据库中单点故障引起的节点故障(SPOF 在本地和全局范围内对系统架构师造成损害),而不是根据扩展来寻找边界,例如:
每当设计系统时,都应牢记以下原则来解决可扩展性问题: