基本概念
本文介紹了應(yīng)用高可用服務(wù)AHAS涉及的基本概念和四大子模塊的基本概念,了解這些基本概念有助于您更好地使用本產(chǎn)品。
通用概念:
流量防護(hù)相關(guān)概念:
關(guān)于流量防護(hù)的詳細(xì)說(shuō)明,請(qǐng)參見什么是應(yīng)用防護(hù)和網(wǎng)關(guān)防護(hù)概述。
故障演練相關(guān)概念:
功能開關(guān)相關(guān)概念:
多活容災(zāi)相關(guān)概念:
什么是應(yīng)用高可用服務(wù)環(huán)境(AHAS環(huán)境)?
通常情況下,用戶有生產(chǎn)、測(cè)試、開發(fā)環(huán)境,各環(huán)境的資源是隔離的。AHAS通過(guò)“環(huán)境”劃分各環(huán)境下的應(yīng)用高可用服務(wù)作用范圍,包含一個(gè)環(huán)境下的應(yīng)用高可用服務(wù)資源。
AHAS環(huán)境按地域劃分,每個(gè)地域會(huì)有一個(gè)默認(rèn)(Default)環(huán)境,您也可以添加自定義環(huán)境。
什么是探針?
應(yīng)用高可用服務(wù)AHAS包括以下兩種探針:
- 應(yīng)用高可用探針(即AHAS探針):這是安裝在操作系統(tǒng)上的獨(dú)立進(jìn)程,用來(lái)采集架構(gòu)信息。使用架構(gòu)感知、故障演練功能前需安裝此探針。
- 應(yīng)用高可用Java探針:這是針對(duì)JVM的Java探針,通過(guò)字節(jié)碼增強(qiáng)技術(shù)進(jìn)行實(shí)時(shí)監(jiān)控和流量防護(hù)。如果需要使用流量防護(hù)功能,可安裝此探針。
什么是架構(gòu)和架構(gòu)組件?
架構(gòu)分為水平和垂直兩個(gè)維度:
水平架構(gòu):進(jìn)程拓?fù)洹⑷萜魍負(fù)洹⒅鳈C(jī)拓?fù)?/p>
垂直架構(gòu):進(jìn)程、容器和主機(jī)之間的依賴關(guān)系
架構(gòu)組件是指架構(gòu)的組成部分,包含進(jìn)程(應(yīng)用進(jìn)程、第三方組件進(jìn)程、云服務(wù))、容器、主機(jī)。
什么是故障演練?
故障演練是一款遵循混沌工程實(shí)驗(yàn)原理并融合了阿里巴巴內(nèi)部實(shí)踐的產(chǎn)品,提供豐富故障場(chǎng)景實(shí)現(xiàn),能夠幫助分布式系統(tǒng)提升容錯(cuò)性和可恢復(fù)性。
更多名詞解釋如下:
名詞 | 名詞解釋 |
演練 | 一個(gè)完整的、可執(zhí)行的流程配置。 |
草稿 | 未配置完成的演練或修改后未保存的演練。 |
演練任務(wù) | 一次演練的執(zhí)行記錄,每執(zhí)行一次演練就產(chǎn)生一個(gè)任務(wù)。 |
演練報(bào)告 | 一個(gè)演練任務(wù)的結(jié)果,一個(gè)演練任務(wù)對(duì)應(yīng)一份報(bào)告。 |
階段 | 活動(dòng)的集合,一個(gè)演練共分4個(gè)階段,每個(gè)階段包含多個(gè)活動(dòng),演練會(huì)按照階段順序執(zhí)行。 |
活動(dòng) | 演練流程中的一個(gè)可運(yùn)行的節(jié)點(diǎn),一個(gè)演練由多個(gè)活動(dòng)組成。 |
演練參數(shù) | 一個(gè)活動(dòng)運(yùn)行時(shí)所需要的參數(shù),參數(shù)決定了活動(dòng)執(zhí)行的結(jié)果。 |
演練對(duì)象 | 實(shí)施演練的目標(biāo)主機(jī)或設(shè)備。目前以活動(dòng)為最小顆粒度,不同活動(dòng)可以對(duì)不同的主機(jī)或設(shè)備執(zhí)行。 |
場(chǎng)景 | 活動(dòng)的分類,例如磁盤滿載和磁盤IO高都屬于磁盤這個(gè)場(chǎng)景。 |
標(biāo)簽 | 用戶對(duì)演練自定義的含義。一個(gè)演練可以有多個(gè)標(biāo)簽,便于用戶對(duì)演練進(jìn)行分類和管理。 |
什么是資源?
只要通過(guò)應(yīng)用防護(hù)SDK定義的代碼,即資源,就能夠被應(yīng)用防護(hù)保護(hù)起來(lái)。
大部分情況下,可以使用方法簽名、URL,甚至服務(wù)名稱作為資源名稱來(lái)標(biāo)識(shí)資源。資源可以是Java應(yīng)用程序中的任何內(nèi)容,例如應(yīng)用程序提供的Dubbo服務(wù)或HTTP API,或應(yīng)用程序調(diào)用的其它應(yīng)用提供的服務(wù),甚至可以是一段代碼。
示例:
通過(guò)應(yīng)用防護(hù)SDK定義的資源如下所示。
Entry entry = null;
try {
entry = SphU.entry("HelloWorld");
// 正常的業(yè)務(wù)邏輯
System.out.println("hello world");
} catch (BlockException e1) {
// 處理資源被限制的情況
System.out.println("block!");
} finally {
if (entry != null) {
entry.exit();
}
}
然后調(diào)用此資源,那么在AHAS控制臺(tái)就可以看到HelloWorld
這個(gè)資源了。
什么是規(guī)則?
在AHAS中圍繞應(yīng)用或應(yīng)用資源的實(shí)時(shí)狀態(tài)來(lái)設(shè)定規(guī)則,包括流控規(guī)則、降級(jí)規(guī)則和系統(tǒng)保護(hù)規(guī)則。
所有規(guī)則都會(huì)推送至該應(yīng)用或應(yīng)用資源所在的每臺(tái)機(jī)器上,并針對(duì)單臺(tái)機(jī)器生效。您可以通過(guò)控制臺(tái)動(dòng)態(tài)實(shí)時(shí)調(diào)整規(guī)則。
什么是流控(或稱限流)?
流控,即流量控制,是AHAS提供的一種應(yīng)用高可用防護(hù)能力。流量控制包括限流、冷啟動(dòng)、削峰填谷等各種流量塑形手段。限流是根據(jù)流量,當(dāng)達(dá)到您指定的閾值時(shí)立即攔截流量,進(jìn)行限流,以避免被瞬時(shí)的流量高峰沖垮,從而保障您的應(yīng)用高可用性。
什么是熔斷降級(jí)?
熔斷降級(jí)是分布式服務(wù)中不可缺少的一種防護(hù)手段。其原理是當(dāng)應(yīng)用不穩(wěn)定時(shí),通常表現(xiàn)為響應(yīng)時(shí)間或異常比例升高,則將不穩(wěn)定應(yīng)用降級(jí)甚至熔斷,防止關(guān)聯(lián)應(yīng)用被不穩(wěn)定的應(yīng)用拖垮。
什么是系統(tǒng)防護(hù)?
系統(tǒng)防護(hù)是從系統(tǒng)表現(xiàn),例如Load、RT、QPS和線程數(shù)四個(gè)維度出發(fā),對(duì)應(yīng)用的入口流量進(jìn)行控制,讓系統(tǒng)盡可能跑在最大吞吐量的同時(shí)保證系統(tǒng)穩(wěn)定性。
什么是功能開關(guān)?
功能開關(guān)是一個(gè)輕量級(jí)的運(yùn)行時(shí)動(dòng)態(tài)配置修改框架,既可用于集中管理各應(yīng)用的業(yè)務(wù)開關(guān),也可以管理應(yīng)用的運(yùn)行時(shí)基礎(chǔ)配置。
功能開關(guān)的使用場(chǎng)景?
業(yè)務(wù)開關(guān)管理。一個(gè)業(yè)務(wù)經(jīng)常由多個(gè)系統(tǒng)、多個(gè)功能模塊組成,為保證某些業(yè)務(wù)的動(dòng)態(tài)性,后端程序通常會(huì)用開關(guān)來(lái)控制程序的邏輯,以達(dá)到在系統(tǒng)運(yùn)行時(shí)切換運(yùn)行邏輯的目的。
運(yùn)行時(shí)配置管理。無(wú)需寫死的URL、接口名、閾值和讀取文件用的編碼、黑白名單等,直接使用功能開關(guān)即可方便快速創(chuàng)建運(yùn)行時(shí)能覆蓋的動(dòng)態(tài)配置。