高可用架构设计要点

image-2024-09-10-1

充分解耦

image-2024-09-10-2

image-2024-09-10-3

“物理”隔离

单一职责很重要

image-2024-09-10-4

异步化

不是所有场景都需要同步阻塞

image-2024-09-10-5

副本冗余与故障转移

构建冗余

image-2024-09-10-6

故障转移

image-2024-09-10-7

限流熔断与服务降级

● 限流是一种控制系统流量的机制,目的是限制请求或事件的速率,防止系统过载。通过设置一定的阈值,超过这个阈值的请求将被拒绝或者延迟处理。
○ 作用: 防止系统被过多请求压垮,保护核心资源免受过载的影响。
○ 在API网关中,可以设置每秒最大请求数,超过这个数量的请求将被拒绝,以保护后端服务不受过多请求的冲击。

image-2024-09-10-8

● 熔断是一种防止故障扩散的机制。当系统的某个组件或服务发生故障时,熔断器迅速中断对该组件的请求,阻止故障进一步传播。
○ 作用: 防止故障在系统中蔓延,保护系统免受连锁反应的影响,同时允许系统进行自我修复。
○ 当某个微服务出现错误率过高时,熔断器打开,暂时停止对该服务的请求,防止错误的传播,保护系统的其他部分不受影响。

image-2024-09-10-9

image-2024-09-10-10

多活容灾

多活容灾是一种高可用性和灾难恢复策略,旨在确保系统在多个地理位置(活动活跃区域)上均能提供服务,以增强系统的稳定性和可用性。这种策略使得系统在面对地方性灾难、硬件故障或其他中断时能够继续提供服务,避免单一点故障导致整个系统不可用。
关键特点和实施要素包括:
● 多活架构: 系统部署在多个活跃区域或数据中心,这些活跃区域可以位于不同的地理位置,通常分布在全球范围内。
● 负载均衡: 使用负载均衡技术,将用户请求分发到不同的活跃区域,确保各个区域均衡地处理流量。
● 数据复制: 数据在不同活跃区域之间进行复制,以确保数据在各地点之间的同步和一致性。这可能包括数据库复制、文件同步等。
● 全球负载均衡器: 在多活系统中使用全球负载均衡器,根据用户的地理位置或请求条件,将流量导向最近或最合适的活跃区域。
● 容错设计: 考虑容错设计,确保即使一个活跃区域发生故障,其他活跃区域仍能提供服务。
● 异地备份: 在不同地理位置设置备份系统,以备份关键服务和数据。这可以是一个完全独立的系统,也可以是一个热备份系统。
● 监控和自动化: 实施监控系统,实时监测各个活跃区域的状态,并使用自动化工具对故障进行快速响应和修复。

image-2024-09-10-11

完善的可观测性

image-2024-09-10-12

指标

image-2024-09-10-13

日志收集

image-2024-09-10-14

跟踪

image-2024-09-10-15

Kubernetes可靠的应用基座

Kubernetes(K8s)被称为可靠的应用基座,这是因为它提供了一套强大的工具和机制,使得应用程序在分布式环境中更容易部署、扩展、管理和维护。以下是一些支持这种说法的关键因素:
● 自动化容器编排: Kubernetes提供了强大的容器编排功能,可以自动管理和调度应用程序容器。这包括自动部署、伸缩和重新配置,使得应用程序的运行状态能够更加灵活和动态。
● 高可用性: Kubernetes设计以提供高可用性。它支持将应用程序部署到多个节点上,并在节点故障时自动重新调度,确保应用程序的稳定性和可用性。
● 自愈能力: Kubernetes拥有自我修复的机制,可以自动检测和修复节点故障、容器故障或其他问题。这使得应用程序能够在不人工干预的情况下持续运行。
● 服务发现和负载均衡: Kubernetes提供服务发现和负载均衡功能,使得应用程序的不同组件可以相互发现并进行通信,同时可以自动实现负载均衡,确保流量分发均匀。
● 可扩展性: Kubernetes是高度可扩展的,支持自定义资源定义(CRD)和插件机制。这使得可以轻松地扩展和定制Kubernetes,以适应不同的应用和业务场景。
● 多云和混合云支持: Kubernetes提供了跨多个云服务提供商和本地数据中心的统一管理层。这意味着应用程序可以在不同的云和本地环境中迁移和运行,提供更大的灵活性和弹性。

image-2024-09-10-16