面个试…… “三高” ???!!

2024-02-06 00:18:31 浏览数 (1)

我们这里说的 “三高” 可不是那个意思哇

我们经常听说高可用性、高可扩展性、高吞吐量,

那这“三高”到底是啥意思呢?

01、高可用性

高可用性指系统无中断地执行其功能的能力,代表系统的可用性程度。是进行系统设计时的准则之一。高可用性系统与构成该系统的各个组件相比可以更长时间运行。也就是说高可用性是确保系统达到高水平正常运行时间的关键指标。

为了实现这一目标,设计通常会追求"三个九"(99.9%)或"四个九"(99.99%)的正常运行时间。以"四个九"为例,这意味着系统每天的停机时间不能超过8.64秒。

为了达到高可用性的目标,系统设计必须考虑到冗余机制的实施。这里提供一组不同的例子来说明如何通过多种策略实现系统的高可用性:

  • 主动-主动模式 (Active-Active) —— 热热模式 (Hot-Hot)
    • 在这种模式下,所有实例都处于活跃状态,可以并行处理输入并产生输出。这种配置提高了系统的冗余度和容错能力。需要注意的是,这要求系统能够合理地同步各个实例之间的状态,并且能够处理或识别重复的数据。
  • 主动-被动模式 (Active-Passive) —— 热暖模式 (Hot-Warm)
    • 这种模式中,有一个主动实例处于热状态,负责处理所有工作,而另一个或多个实例处于被动(暖)状态,不直接处理输入,但随时准备接管主动实例的工作。这种配置简化了数据同步和状态管理的问题,但可能会导致切换过程中的短暂服务中断。
  • 多主集群 (Multi-Master) —— 单领导集群 (Single Leader)
    • 这里的对应关系稍微有点弯曲,因为多主集群和单领导集群在概念上是不同的。多主集群每个节点都可以接收写操作,并将数据复制到其他节点,而单领导集群有一个明确的领导者负责处理写操作并复制到其他副本。然而,在实践中,多主集群可以看作是单领导集群模式的一种扩展或变体,其中每个节点都可以暂时充当领导者。
  • 对等集群 (Peer-to-Peer) —— 无领导集群 (Leaderless)
    • 对等集群和无领导集群在概念上是一致的。在这种模式下,每个节点都具有相同的角色和权力,不设定明确的领导者角色。这种配置极大地提高了系统的弹性和可伸缩性,因为新的节点可以很容易地加入到集群中,而节点的故障也不会对整体系统造成重大影响。

02、高吞吐量

所谓高吞吐量,就是要确保服务能够在一定时间内处理大量的请求。这通常通过QPS(每秒查询数)或TPS(每秒事务数)等指标来衡量。为了达到这一目标,可以采取以下策略:

  • 引入缓存机制:通过在系统架构中加入缓存,可以显著减少对数据库或磁盘这类较慢I/O设备的依赖。缓存能够存储频繁访问的数据,从而当相同的请求再次发生时,可以直接从缓存中快速读取数据,避免了重复的数据库查询或文件读取操作。
  • 优化线程管理:对于计算密集型的任务,增加线程数量可以提升处理能力。然而,线程数量并非越多越好,因为过多的线程会增加系统的上下文切换成本,反而可能降低整体性能。因此,合理地调整线程数量,使之既能充分利用CPU资源,又不至于造成资源浪费,是提高吞吐量的关键。
  • 采用异步处理:异步处理技术可以将耗时的操作从主流程中分离出来,使得主流程不必等待这些耗时操作完成即可继续执行,从而提高整体的处理速度。通过对系统中耗时且资源密集的组件进行异步化处理,可以有效地提升系统的响应速度和吞吐量。

其实,实现高吞吐量的关键就是在于识别并解决系统的瓶颈问题。这可能涉及到对系统架构的调整,像增加更有效的缓存策略、优化线程池的配置、或者是实施异步处理啥的。通过这些措施,可以明显的提高系统处理大量请求的能力,满足高吞吐量的需求。

03、高扩展性

高扩展性是指系统能够以快速和简便的方式增加处理能力(横向扩展)或新增功能(纵向扩展)。

那么系统是否需要扩展呢?我们通常会通过监测响应时间来判断。

为了达到高度的可扩展性,主要还是确保各个服务职责的分离。在这种情况下,广泛的采用微服务架构来实现此目标。此外,通过使用服务注册机制和负载平衡器,也可以有效地将请求分发到合适的服务实例上去。

0 人点赞