Намунаҳои зинда/омодагӣ
2) Принсипҳои тарроҳӣ
1. Семантикаи ҷудогона.
Омодагӣ: қобилияти берунӣ ба дархостҳои хизматрасонӣ (вобастагии танқидиро ба назар мегирад).
Зиндагонӣ: Муайянкунии ҳолати "табобатнашаванда" -и раванд.
2. Нокомӣ зуд, аммо дурӯғ нест. Вақтсанҷӣ/ҳадди ниҳоии 'нокомӣ' -ро танзим кунед, то ки таркишҳои кӯтоҳ ба бозоғозии нолозим оварда нарасонанд.
3. Ягон амалиёти вазнин дар намунаҳо нест. Чек бояд зуд (≤ 100 -200 мс) ва бе таъсири тараф бошад.
4. Таназзули меҳрубон. Дар сурати қисман дастрас набудани вобастагӣ - Омодагӣ = Хуб, агар пайрави бехатар бошад (кэш/coarsening).
5. Муайянкунандаи I/O. Статусҳо танҳо аз ҳолати кунунӣ вобастаанд, на аз санҷишҳои берунии "тасодуфӣ".
3) Семантикаи нуқтаҳои тандурустӣ
3. 1 Муносибати HTTP (тавсия дода мешавад)
'GET/healthz/liveness' → 200 агар ин раванд "зинда" бошад (ҳодиса-давр чарх мезанад, GC часпида намешавад, посбон "дил" мезанад).
'GET/healthz/омодагӣ' → 200, агар ин ҳолат барои трафики муҳими синфӣ омода бошад. Санҷишҳо: ҳавзи пайвастшавӣ, кэшҳои маҳаллӣ, мавҷудияти ядрои мантиқӣ.
'GET/healthz/startup' → 200 пас аз оғозёбӣ (муҳоҷират/моделҳои гармкунии кэш/боркунӣ).
- Шумо наметавонед ба пойгоҳи додаҳои беруна/API-ҳои зинда гузаред - ин ба ҳодисаҳои вобастагӣ ба "худкушӣ" оварда мерасонад.
- Дар омодагӣ, шумо метавонед вобастагии танқидиро тафтиш кунед, аммо бо гузашти вақт ва таназзул: агар пайравии дуруст мавҷуд бошад, онро ба поён наоред.
3. 2 ГРПК Санҷиши саломатӣ
Стандарти 'grpc' -ро истифода баред. саломатӣ. v1. Саломатӣ/Санҷиш 'бо давлатҳои хидматрасон (' SERVING ',' NOT _ SERVING '). Барои Кубернетес - пробҳои grpc (ё http proxy).
3. 3 Триггерҳои дохилӣ
Истгоҳи "мулоим" -и Watchdog: бо SIGTERM set Readiness = FAIL → интизор шавед, ки 'қатъ кардани Period
4) Вақт ва ҳадди ниҳоӣ (танзим)
Соҳаҳои асосии намунаҳои Кубернетес:- 'initiAl Delay' Seconds ',' period-Seconds ',' timeout-Seconds ',' Муваффақият ',' Нокомӣ '.
- омодагӣ: 'давра = 5с, вақт = 0. 2–0. 5с, нокомӣ = 2 '
- зиндагӣ: 'давра = 10, вақт = 0. 2–0. 5с, нокомӣ = 3 '
- оғоз: 'давра = 5с, нокомӣ = 60' (то 5 дақиқа)
- омодагӣ/зиндагӣ пас аз муваффақияти оғозёбӣ фаъол шуд
- омодагӣ омодагиро барои коркард инъикос мекунад (пайвастшавӣ ба брокер, оё таназзули DLQ вуҷуд дорад),
- зинда будан - ҳалқаи қалби ботинӣ.
Бозгашт аз камбудиҳо: дар барнома, бозгашти экспоненсиалиро барои пайваст шудан ба вобастагӣ истифода баред, вагарна омодагӣ "дида мешавад".
5) Конфигуратсияҳо (фрагментҳо)
5. 1 Кубернетес, HTTP пробҳо
yaml livenessProbe:
httpGet: { path: /healthz/liveness, port: 8080 }
periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3
readinessProbe:
httpGet: { path: /healthz/readiness, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 2
startupProbe:
httpGet: { path: /healthz/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 60
5. 2 Kubernetes, намунаи GRPC
yaml readinessProbe:
grpc:
port: 9090 service: my. app. Service periodSeconds: 5 timeoutSeconds: 1
5. 3 Хомӯшии зебо
yaml terminationGracePeriodSeconds: 30 lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","curl -s localhost:8080/healthz/drain && sleep 5"]
'/healthz/drain 'дар дохили хидмат тарҷума мекунад Readiness = FAIL (қабули қатъ), барои пур кардани дархостҳои фаъол вақт медиҳад.
6) Вобастагӣ ва таназзул
Критикӣ (бе онҳо хидмат карда намешавад): пойгоҳи додаҳои авторизатсия барои '/login ', дарвозаи пардохт барои '/пардохт'. Ҳангоми тайёрӣ бо танаффус ≤ 80% намунаҳои 'вақтсанҷи сонияҳо' тафтиш кардан мумкин аст.
Танқидӣ: таҳлил, почтаи электронӣ, қабати кэш, агар сарборӣ бошад. Онҳоро ба омодагӣ дохил накунед; як пайравро истифода баред.
Парчамҳои хусусият: Агар қисман таназзул ёфта бошад, хусусиятҳои вобастаро ҳангоми нигоҳ доштани омодагӣ = Хуб хомӯш кунед.
7) Навбатҳо ва коркардкунандагони замина
Истеъмолкунандагон/коргарон:- Омодагӣ = Хуб, агар обуна/пайвастшавӣ ба брокер насб шуда бошад ва манбаи коркард вуҷуд дорад.
- Вақте ки DLQ/ақибмонӣ аз ҳад зиёд аст → Омодагӣ метавонад хуб боқӣ монад (агар мо қабул кунем ва илова кунем), аммо SLI "тару тоза/ақибмонӣ" равшан мешавад - мувофиқи маълумот ҳушёр бошед.
- Зиндагӣ: давраи пурсишро назорат кунед/зарбаи дил, марговар.
Idempotence: Барқароршавиро аз нав оғоз мекунад.
8) Sidecar/mesh/ingress
Ҳангоми истифодаи фикрию хидматӣ (Istio/Linkerd), озмоиш метавонад аз sidecar гузарад:- Даргиронидани 'омодагии дарвоза' (K8s) барои баҳисобгирии ҳолати sidecar,
- Боварӣ ҳосил намоед, ки намунаҳо ба монеаҳои MTLS дохил намешаванд (ё истисноҳоро илова кунед).
- Ingress/Envoy/Nginx: Prox '/healthz/' маҳаллӣ, қисмҳои дохилиро "берун накунед".
9) Амният ва махфият
Нуқтаҳои ниҳоӣ дар соҳаи тандурустӣ набояд конфигуратсияҳо, версияҳои китобхона, сатрҳои хатогиро ифшо кунанд - танҳо "OK/FAIL" + рамзи ҳадди аққали сабаб.
Маҳдудияти дастрасии берунӣ (Network/Policy/ACL). Барои омма - биёед бидуни тафсилот зинда бошем.
Сабтҳои муоинаи тиббӣ - дар сатҳи DEBUG, бо дӯзандагӣ.
10) Мушоҳида ва SLO
Нишондиҳандаҳои содирот: 'health _ readiness {status}', 'health _ liveness {status}', вақти коркарди намуна.
Парчамҳои омодагии Associated бо SLO-ҳои мавҷудбуда (партофтан аз нуқтаҳои ниҳоӣ → 5xx/барқароркунии пайвастшавӣ).
- "Зуд-зуд аз нав зинда шудан> N/соат" - аломати бунбаст/ихроҷ.
- "Омодагии Flap> X/15 дақиқа" - аломати мушкилоти вобастагӣ/шабака.
- Робита бо ҷойгиркунӣ ('хидмат. версия ').
11) Санҷиш
Воҳиди/Шартнома: Нуқтаҳои ниҳоӣ '/healthz/' ҳангоми баргардонидани ҳар як вобастагӣ ҳолати дурустро бармегардонанд.
Бесарусомонӣ: хомӯш кардани пойгоҳи додаҳо/кэш/брокер: Омодагӣ бояд мутобиқи модел ба таври қатъӣ афтад ё имкон диҳад. Зиндагӣ - агар раванд "зинда" бошад, ба вуҷуд намеояд.
Бор кардан/Ғарқ кардан: Дар зери сарборӣ нуқтаҳои саломатӣ бояд зуд боқӣ монанд (мундариҷаро пахш накунед).
Канария: Пеш аз зиёд шудани трафик устувории омодагиро санҷед.
12) Хатогиҳои зуд-зуд ва чӣ гуна аз онҳо канорагирӣ кардан
Liveness пойгоҳи додаҳо/API-ҳои берунаро тафтиш мекунад. Натиҷа бозоғозии беохир барои ҳодисаҳо мебошад. Ҳал: зиндагиро бо "коркарди ҳаёт" маҳдуд кунед.
Санҷишҳои вазнин дар намунаҳо. Ба нокомиҳои бардурӯғ оварда мерасонад. Ҳал: санҷишҳои рӯшноӣ + мониторҳои инфиродӣ оид ба саломатӣ.
Не озмоиши Startup. Оғози оҳиста бо роҳи зинда "кушта мешавад". Ҳал: бо тирезаи васеъ оғозро илова кунед.
Не хомӯшии зебо. Камёфт 5xx дар депла. Ҳал: пеш аз Stop + нобаробарӣ.
Тӯфони шадид. Ҳадди хеле хашмгин. Ҳал: баланд бардоштани 'нокомӣ', зиёд кардани 'вақти сония', илова кардани бозгашт.
Ҳамин нуктаҳо барои ҳама чиз. Омезиши семантика. Ҳал: 'зинда/омодагӣ/оғози инфиродӣ'.
13) Намунаҳои татбиқи мини
Дастгоҳи оддии HTTP (псевдокод):python
@app. get("/healthz/liveness")
def liveness():
return 200
@app. get("/healthz/readiness")
def readiness():
ok_core = core_is_ready () # local pools/caches/initialization ok_db = db. ping (timeout = 50 _ ms) # only if the DB is critical return 200 if (ok_core and ok_db) else 503
@app. get("/healthz/startup")
def startup():
return 200 if INIT_DONE else 503
@app. post("/healthz/drain")
def drain():
set_readiness(False); return 200
саломатии GRPC (идея):
go
// use google. golang. org/grpc/health/grpc_health_v1 healthServer. SetServingStatus("my. app. Service", SERVING) // or NOT_SERVING
Тайёрии дарвоза (ҳақиқӣ бо тор):
yaml spec:
readinessGates:
- conditionType: "proxy. istio. io/ready"
14) Рӯйхати санҷишҳо
Пеш аз фурӯш
- Зиндагӣ/омодагӣ/нуқтаҳои ниҳоӣ ҷудо карда мешаванд, семантикаи онҳо тавсиф карда мешавад.
- Зиндагӣ ба вобастагии беруна таъсир намерасонад; Омодагӣ танҳо бо танаффусҳо ва пайравони муҳим санҷида мешавад.
- Танзими 'таъхири/давра/вақт/нокомӣ' барои профили хидмат.
- хомӯшии зебо имкон дод: 'пеш аз Ист' + мувозинат.
- Нишондиҳандаҳо/гузоришҳо дар соҳаи тандурустӣ пайваст карда шудаанд; огоҳиҳо дар бораи бозоғоз/flap.
- Нокомии вобастагӣ ва озмоишҳои сусти оғоз гузашт.
Амалиёт
- Ҳисоботи ҳафтаина дар бораи бозоғоз ва парчамҳои омодагӣ.
- Танзими ҳадди пас аз ҳодисаҳо; робита бо релизҳо.
- Санҷишҳои мунтазами бетартибиҳои вобастагии маъюбон.
- Аҳамияти семантика ҳангоми тағир ёфтани танқиди вобастагӣ.
15) FAQ
Савол: Оё ҳама чизро бо як тақсимшавӣ пӯшидан мумкин аст?
A: номатлуб. "Оғози кор", "омодагӣ", "зинда" - ин мусбатҳои бардурӯғро коҳиш медиҳад ва RCA-ро суръат мебахшад.
Савол: Оё ман кэшро дар омодагӣ тафтиш мекунам?
Ҷ: Агар режими дуруст (бо вуҷуди сусттар) бидуни кэш вуҷуд дошта бошад, омодагиро паст накунед, танҳо таназзулро фурӯзон кунед.
Савол: Бо бозоғозии зуд-зуд барои зинда будан чӣ бояд кард?
Ҷ: Аввал як дектор/ихроҷро истисно кунед; пас ҳудудҳоро озод кунед ва дар барнома посбон илова кунед.
Савол: Мо барои иҷорагирӣ чӣ гуна ҳисоб мекунем?
Ҷ: Омодагӣ бояд қобилияти хидматрасонии трафики иҷораро инъикос кунад. Барои мушкилоти хусусии иҷорагири мушаххас - омодагиро тағир надиҳед, балки бо SLI/огоҳиҳои алоҳида сигнал диҳед.
- "Мушоҳидаҳо: гузоришҳо, ченакҳо, пайҳо"
- "Пайҳои тақсимшуда"
- "SLO/SLA ва Metrics"
- "Кафолатҳои таҳвили Webhook"
- "Дар рамзгузории транзит"
- "Идоракунии махфӣ"