GH GambleHub

Жашоо/Readiness үлгүлөрү

2) Дизайн принциптери

1. семантика бөлүшүү.

Readiness: тышкы жөндөмдүүлүгү (маанилүү көз карандылыкты эске алат).
Liveness: "айыккыс" процесстин абалы.
2. Fail-fast, бирок "false-fast" эмес. Таймауттарды/босогону 'failureThreshold' кыска жарылуулар ашыкча кайра баштоого алып келбеши үчүн орнотуңуз.
3. Сыноолордо оор операциялар жок. Текшерүү тез болушу керек (≤ 100-200 ms) жана эч кандай терс таасирлери.
4. Татынакай деградация. Эгерде көз карандылыктын жарым-жартылай жеткиликсиз болсо - Readiness = OK, эгерде коопсуз фоллбек (кэш/ката) болсо.
5. Deterministic I/O. Статустар "кокустук" тышкы тесттерге эмес, учурдагы абалына гана көз каранды.

3) HEALTH-END семантикасы

3. 1 HTTP ыкмасы (сунушталат)

'GET/healthz/liveness' → 200 процесс "тирүү" болсо (event-loop айланат, GC тыгылып калган жок, watchdog "жүрөк" согот).
'GET/healthz/readiness' → 200 Эгерде үлгү критикалык класстагы трафикке даяр болсо. Текшерүүлөр: байланыш бассейни, жергиликтүү кэштер, бизнес логиканын өзөгүнүн болушу.
Инициализациядан кийин 'GET/healthz/startup' → 200 (көчүрүү/кэш жылытуу/моделдерди жүктөө).

Эрежелер:
  • Сиз тышкы DD/API барып жашоого мүмкүн эмес - бул көз карандылык окуялар учурунда "өзүн-өзү өлтүрүү" алып келет.
  • readiness Сиз критикалык көз карандылыкты текшере аласыз, бирок убакыт жана деградация менен: Эгерде валиддик фоллбек бар болсо - кулап жок.

3. 2 gRPC Health Checking

'grpc стандартын колдонуңуз. health. v1. Health/Check's service-scoped шарттар ('SERVING', 'NOT _ SERVING'). Kubernetes үчүн - grpc-тесттер (же http-прокси).

3. 3 ички триггерлер

Watchdog "жумшак" токтотуу: SIGTERM боюнча Readiness = FAIL → күтүү 'terminationGracePeriodSeconds' → кезектерди иштеп чыгуу менен аяктайт.

4) Тайминг жана босоголор (tuning)

Kubernetes үлгүлөрүнүн негизги талаалары:
  • `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds`, `successThreshold`, `failureThreshold`.
Баштапкы профилдер боюнча сунуштар: Web/тез баштоо менен API:
  • readiness: `period=5s, timeout=0. 2–0. 5s, failure=2`
  • liveness: `period=10s, timeout=0. 2–0. 5s, failure=3`
Оор баштоо (JIT/моделдер/жылытуу):
  • startup: 'period = 5s, failure = 60' (~ 5 мүнөткө чейин)
  • readiness/liveness startup ийгиликке кийин активдүү
Batch/consumer:
  • readiness иштетүүгө даярдыгын чагылдырат (брокерге туташуу, DLQ деградациясы барбы),
  • liveness - ички heartbeat loop.

Backoff ийгиликсиз: колдонмодо көз карандылыкка кайра туташтыруу үчүн экспоненциалдык backoff колдонуңуз, антпесе readiness "кесет".

5) Конфигурациялар (үзүндүлөр)

5. 1 Kubernetes, 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 Graceful shutdown

yaml terminationGracePeriodSeconds: 30 lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","curl -s localhost:8080/healthz/drain && sleep 5"]

'/healthz/drain 'ичинде кызмат которгон Readiness = FAIL (stop-accepting), активдүү суроо аягына убакыт берет.

6) Көз карандылык жана деградация

Критикалык (аларсыз тейлөө мүмкүн эмес): DD authorization үчүн '/login ', төлөм шлюзы үчүн '/pay'. Сиз 'timeoutSeconds' үлгүсүнүн 80% ≤ убакыт менен readiness текшере аласыз.
Критикалык эмес: аналитика, электрондук почта, кошумча жүктөө болгон учурда кэш катмары. readiness аларды камтыбайт; follbek колдонуу.
Feature-flags: Жарым-жартылай деградация менен Readiness = OK сактоо менен көз каранды чиптерди өчүрүү.

7) кезек жана арткы иштеп чыгуучулар

Consumers/Workers:
  • Readiness = OK, эгерде брокерге жазылуу/байланыш орнотулган жана иштетүү үчүн ресурс бар.
  • DLQ/лаге → Readiness толуп, анда OK (кабыл жана бүктөп болсо), бирок SLI "сергектик/лаг" жарык болот - маалымат боюнча alert.
  • Liveness: контролдоо poll-айлампасы/heartbeat, дедлок детекторунун.

Idempotentity: liveness калыбына келтирүү кийин тездетет.

8) Sidecar/mesh/ingress

service mesh колдонуу менен (Istio/Linkerd) probe sidecar аркылуу бара алат:
  • киргизүү 'readinessGate' (K8s) sidecar статусун эсепке алуу үчүн,
  • Үлгүлөр mTLS тоскоолдуктарга түшпөгөнүн текшериңиз (же өзгөчөлүктөрдү кошуңуз).
  • Ingress/Envoy/Nginx: Прокатка '/healthz/' жергиликтүү, ички бөлүктөрүн "чыгып" жок.

9) Коопсуздук жана купуялык

Health-EndPoints бир гана "OK/FAIL" + минималдуу себеп коду - китепканалардын, ката саптары нускасын ачыкка чыгарбашы керек.
Сырттан кирүү чектөө (NetworkPolicy/ACL). Коомдук үчүн - майда-чүйдөсүнө чейин гана жашоосуз пинг берели.
ден соолук текшерүү Логи - DEBUG деъгээлинде, Trottling менен.

10) Байкоо жана SLO

Export metrics: 'health _ readiness {status}', 'health _ liveness {status}', үлгү иштетүү убактысы.
Readiness Flap менен SLO жеткиликтүүлүгүн байланыштыруу (End Points → 5xx/connection reset).

Алерталар:
  • "Жашоодогу тез-тез рестарттар> N/саат" - дедлок/агып кетүү белгиси.
  • "Flap Readiness> X/15 мин" - көз карандылык/тармактык көйгөйлөрдүн белгиси.
  • Деплой менен корреляция ('service. version`).

11) Сыноо

Unit/Contract: End Points '/healthz/' ар бир көз карандылыкты өчүргөндө туура статусун кайтарып берет.
Chaos: DD/кэш/брокерди өчүрүү: Readiness жыгылып же модель боюнча катуу фоллбек камтышы керек. Liveness - процесс "тирүү" болсо, триггер эмес.
Load/Soak: health-end-point жүктөмү тез болушу керек (continshn ыргытып эмес).
Canary: трафикти көбөйткөнгө чейин Readiness туруктуулугун текшериңиз.

12) Көп каталар жана аларды алдын алуу үчүн кантип

Liveness DD/тышкы API текшерет. натыйжасы - окуяларды чексиз кайра. Чечим: жашоону "процесстин жашоосу" менен чектөө.
Оор сыноолор. жалган баш тартууга алып келет. Solution: Easy текшерүү + жеке background-ден соолук монитор.
Жок Startup Probe. Жай баштоо "өлтүрүп" liveness. Чечим: кенен терезе менен баштоо кошуу.
graceful shutdown жок. Сейрек кездешүүчү 5xx деплой менен. Чечим: preStop + балансты алып салуу.
Flap-бороон. Өтө агрессивдүү босоголор. Чечим: 'failureThreshold' жогорулатуу, 'timeoutSeconds' жогорулатуу, backoff кошуу.
Баары үчүн бирдей эндпоинттер. Семантика аралашмасы. Чечим: өзүнчө 'liveness/readiness/startup'.

13) Mini сатуу үлгүлөрү

Жөнөкөй HTTP handler (psevdocode):
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
ReadinessGate (mesh менен чындык):
yaml spec:
readinessGates:
- conditionType: "proxy. istio. io/ready"

14) Чек-баракчалар

Азык-түлүктүн алдында

  • liveness/readiness/startup, алардын семантика сүрөттөлөт.
  • Жашоо тышкы көз карандылыкты тийгизбейт; Readiness гана Таймауттар жана follbek менен сын текшерет.
  • 'initialDelay/period/timeout/failureThreshold' кызматтын профилине ылайыкташтырылган.
  • graceful shutdown кирет: 'preStop' + балансты алып салуу.
  • Ден соолук метрика/Логи туташтырылган; калыбына келтирүү/флап үчүн алерта.
  • Көз карандылыктан баш тартуу жана жай баштоо тесттери өттү.

Иштетүү

  • Restarts жана Flap жумалык отчет readiness.
  • Инциденттерден кийин босоголорду тюнинг; релиздер менен байланыш.
  • Үзгүлтүксүз chaos көз карандылыкты өчүрүү тесттер.
  • Көз карандылыктын критикалуулугун өзгөртүүдө семантиканын актуалдуулугу.

15) FAQ

В: Бир сыноо менен баарын жабууга болобу?
О: Бул жагымсыз. 'Startup', 'readiness', 'liveness' деп бөлүңүз - бул жалган таасирлерди азайтат жана RCAны тездетет.

С: Кэш текшерүү readiness?
О: Эгерде кэшсиз туура (жай болсо да) режим болсо - readiness жок, жөн гана деградацияны күйгүзүңүз.

S: liveness боюнча тез-тез кайра менен эмне кылуу керек?
О: Биринчиден, дедлок/агып жок; андан кийин босоголорду бошотуп, тиркемеге watchdog кошуу.

S: Кантип көп ижара эске алуу керек?
A: Readiness ар кандай ижара-жол тейлөө жөндөмүн чагылдырышы керек. Белгилүү бир ижарачынын жеке көйгөйлөрү үчүн - readiness эмес, өзүнчө SLI/alerts менен сигнал бериңиз.

Байланыштуу материалдар:
  • "Байкоо: Логи, метрика, трек"
  • "Бөлүштүрүлгөн жолдор"
  • "SLO/SLA жана метрика"
  • "Webhook жеткирүү кепилдиктери"
  • "In Transit шифрлөө"
  • "Сыр менеджменти"
Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.