基本概念

本文介绍了应用高可用服务AHAS涉及的基本概念和四大子模块的基本概念,了解这些基本概念有助于您更好地使用本产品。

什么是应用高可用服务环境(AHAS环境)?

通常情况下,用户有生产、测试、开发环境,各环境的资源是隔离的。AHAS通过“环境”划分各环境下的应用高可用服务作用范围,包含一个环境下的应用高可用服务资源。

AHAS环境按地域划分,每个地域会有一个默认(Default)环境,您也可以添加自定义环境。

什么是探针?

应用高可用服务AHAS包括以下两种探针:

  • 应用高可用探针(即AHAS探针):这是安装在操作系统上的独立进程,用来采集架构信息。使用架构感知、故障演练功能前需安装此探针。
  • 应用高可用Java探针:这是针对JVM的Java探针,通过字节码增强技术进行实时监控和流量防护。如果需要使用流量防护功能,可安装此探针。

什么是架构和架构组件?

  • 架构分为水平和垂直两个维度:

    • 水平架构:进程拓扑、容器拓扑、主机拓扑

    • 垂直架构:进程、容器和主机之间的依赖关系

  • 架构组件是指架构的组成部分,包含进程(应用进程、第三方组件进程、云服务)、容器、主机。

什么是故障演练?

故障演练是一款遵循混沌工程实验原理并融合了阿里巴巴内部实践的产品,提供丰富故障场景实现,能够帮助分布式系统提升容错性和可恢复性。

更多名词解释如下:

名词

名词解释

演练

一个完整的、可执行的流程配置。

草稿

未配置完成的演练或修改后未保存的演练。

演练任务

一次演练的执行记录,每执行一次演练就产生一个任务。

演练报告

一个演练任务的结果,一个演练任务对应一份报告。

阶段

活动的集合,一个演练共分4个阶段,每个阶段包含多个活动,演练会按照阶段顺序执行。

活动

演练流程中的一个可运行的节点,一个演练由多个活动组成。

演练参数

一个活动运行时所需要的参数,参数决定了活动执行的结果。

演练对象

实施演练的目标主机或设备。目前以活动为最小颗粒度,不同活动可以对不同的主机或设备执行。

场景

活动的分类,例如磁盘满载和磁盘IO高都属于磁盘这个场景。

标签

用户对演练自定义的含义。一个演练可以有多个标签,便于用户对演练进行分类和管理。

什么是资源?

只要通过应用防护SDK定义的代码,即资源,就能够被应用防护保护起来。

大部分情况下,可以使用方法签名、URL,甚至服务名称作为资源名称来标识资源。资源可以是Java应用程序中的任何内容,例如应用程序提供的Dubbo服务或HTTP API,或应用程序调用的其它应用提供的服务,甚至可以是一段代码。

示例:

通过应用防护SDK定义的资源如下所示。

Entry entry = null;
try {
    entry = SphU.entry("HelloWorld");
    // 正常的业务逻辑
    System.out.println("hello world");
} catch (BlockException e1) {
   // 处理资源被限制的情况
    System.out.println("block!");
} finally {
    if (entry != null) {
         entry.exit();
    }
}
            

然后调用此资源,那么在AHAS控制台就可以看到HelloWorld 这个资源了。

什么是规则?

在AHAS中围绕应用或应用资源的实时状态来设定规则,包括流控规则、降级规则和系统保护规则。

所有规则都会推送至该应用或应用资源所在的每台机器上,并针对单台机器生效。您可以通过控制台动态实时调整规则。

什么是流控(或称限流)?

流控,即流量控制,是AHAS提供的一种应用高可用防护能力。流量控制包括限流、冷启动、削峰填谷等各种流量塑形手段。限流是根据流量,当达到您指定的阈值时立即拦截流量,进行限流,以避免被瞬时的流量高峰冲垮,从而保障您的应用高可用性。

什么是熔断降级?

熔断降级是分布式服务中不可缺少的一种防护手段。其原理是当应用不稳定时,通常表现为响应时间或异常比例升高,则将不稳定应用降级甚至熔断,防止关联应用被不稳定的应用拖垮。

什么是系统防护?

系统防护是从系统表现,例如Load、RT、QPS和线程数四个维度出发,对应用的入口流量进行控制,让系统尽可能跑在最大吞吐量的同时保证系统稳定性。

什么是功能开关?

功能开关是一个轻量级的运行时动态配置修改框架,既可用于集中管理各应用的业务开关,也可以管理应用的运行时基础配置。

功能开关的使用场景?

  • 业务开关管理。一个业务经常由多个系统、多个功能模块组成,为保证某些业务的动态性,后端程序通常会用开关来控制程序的逻辑,以达到在系统运行时切换运行逻辑的目的。

  • 运行时配置管理。无需写死的URL、接口名、阈值和读取文件用的编码、黑白名单等,直接使用功能开关即可方便快速创建运行时能覆盖的动态配置。