GH GambleHub

Liveness/Readiness synaglary

2) Dizaýn ýörelgeleri

1. Semantikleri paýlaşyň.

Readiness: soraglara hyzmat etmek üçin daşarky ukyby (möhüm garaşlylygy göz öňünde tutýar).
Liveness: prosesiň "bejerip bolmajak" ýagdaýynyň taslamasy.
2. Fil-fast, ýöne "false-fast" däl. Wagt/bosagany 'failureThreshold' saýlaň, şonuň üçin gysga partlamalar artykmaç täzeden başlamaz.
3. Synaglarda agyr operasiýa ýok. Barlag çalt (100-200 ms ≤) we zyýanly täsirleri bolmazdan geçirilmelidir.
4. Ajaýyp pese gaçmak. Garaşlylyk bölekleýin elýeterli bolmasa - Readiness = OK, howpsuz follbek bar bolsa (kesmek/kesmek).
5. Deterministic I/O. Statuslar diňe "tötänleýin" daşarky synaglara däl-de, häzirki ýagdaýa baglydyr.

3) HEALTH-endpointleriň semantikasy

3. 1 HTTP çemeleşmesi (maslahat berilýär)

'GET/healthz/liveness' → 200 eger proses "diri" bolsa (waka-loop aýlanýar, GC ýapyşmady, watchdog "ýürek" urýar).
'GET/healthz/readiness' → 200 eger nusga kritiki synpyň traffigine taýýar bolsa. Barlaglar: birikmeler howzy, ýerli keşler, işewürlik logikasynyň özeniniň elýeterliligi.
'GET/healthz/startup' → 200 başlanandan soň (göçmek/keş gyzdyrmak/modelleri ýüklemek).

Düzgünler:
  • Daşarky DB/API-e ýaşamak mümkin däl - bu endik hadysalarynda "öz janyna kast etmäge" sebäp bolar.
  • Readiness-de möhüm endikleri barlap bilersiňiz, ýöne wagt we degradasiýa bilen: walid follbek bar bolsa, ýykylmaň.

3. 2 gRPC Health Checking

'grpc' standartyny ulanyň. health. v1. Health/Check's service-scoped states ('SERVING', 'NOT _ SERVING'). Kubernetes üçin - grpc-synaglary (ýa-da http-proxy).

3. 3 Içerki triggerler

"Ýumşak" duralgany yzarlaň: SIGTERM-de Readiness = FAIL → garaşyň 'terminationGracePeriodSeconds' → nobatlary düzüp gutaryň.

4) Taýmingler we bosagalar (tuning)

Kubernetes-nusgalarynyň esasy meýdanlary:
  • `initialDelaySeconds`, `periodSeconds`, `timeoutSeconds`, `successThreshold`, `failureThreshold`.
Başlangyç profilleri boýunça teklipler: Web/API:
  • readiness: `period=5s, timeout=0. 2–0. 5s, failure=2`
  • liveness: `period=10s, timeout=0. 2–0. 5s, failure=3`
Agyr başlangyç (JIT/modeller/gyzdyrmak):
  • startup: 'period = 5s, failure = 60' (5 ~ çenli)
  • readiness/liveness startup üstünlik gazanandan soň işjeňleşýär
Batch/consumer:
  • readiness gaýtadan işlemäge taýýardygyny görkezýär (dellalyň baglanyşygy, DLQ-pese gaçmagy barmy),
  • liveness - içerki heartbeat loop.

Backoff ret edýär: programmada endiklere gaýtadan birikdirmek üçin eksponensial backoff ulanyň, ýogsam readiness "keser".

5) Konfigurasiýalar (bölekler)

5. 1 Kubernetes, HTTP synaglary

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-synag

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 'hyzmatyň içinde Readiness = FAIL (stop-accepting) terjime edýär, işjeň haýyşlary tamamlamaga wagt berýär.

6) Garaşlylyk we pese gaçmak

Kritiki (onlarsyz hyzmat edip bolmaýar): '/login 'üçin ygtyýarnamanyň DB, '/pay' üçin töleg şlýuzy. Synagyň 'timeoutSeconds' -dan 80% ≤ wagt bilen readiness barlap bilersiňiz.
Kritiki däl: analitika, email, goşmaça ýük bar bolsa kesh gatlagy. Olary readiness-e goşmaň; follbek ulanyň.
Feature-flags: bölekleýin zaýalananda Readiness = OK saklap, garaşly şekilleri öçüriň.

7) Nobatlar we fon işläp taýýarlaýjylary

Consumers/Workers:
  • Readiness = OK, eger broker abuna ýazylsa/baglanyşdyrylsa we işlemek üçin çeşme bar bolsa.
  • DLQ/lag → Readiness aşa köp bolsa, OK bolup biler (kabul etsek we goşsak), ýöne SLI "täzelik/lag" ýanýar - maglumatlar boýunça alert.
  • Liveness: poll-sikl/heartbeat, dedlok detektoryna gözegçilik ediň.

Idempotentlik: liveness dikeldişinden soň dikelmegi çaltlaşdyrýar.

8) Sidecar/mesh/ingress

service mesh (Istio/Linkerd) ulanylanda probe sidecar-dan geçip biler:
  • Sidecar statusyny hasaba almak üçin 'readinessGate' (K8s) -ni açyň,
  • Nusgalaryň mTLS päsgelçiliklerine girmeýändigine göz ýetiriň (ýa-da kadadan çykmalar goşuň).
  • Ingress/Envoy/Nginx: '/healthz/' lokallaşdyryň, içerki bölekleri "çykarmaň".

9) Howpsuzlyk we gizlinlik

Health-endpoints kitaphanalaryň gapma-garşylyklaryny, wersiýalaryny, ýalňyşlyk setirlerini açmaly däldir - diňe "OK/FAIL" + sebäpiň iň az kody.
Daşarky girişi çäklendiriň (NetworkPolicy/ACL). Köpçülige - diňe jikme-jikliksiz liveness-ping edeliň.
Saglyk barlaglarynyň ýazgylary - DEBUG derejesinde, trottling bilen.

10) Synlamak we SLO

'health _ readiness {status}', 'health _ liveness {status}' metrlerini eksport ediň.
Readiness-flaplary SLO elýeterliligi bilen baglanyşdyryň (endpointlerden düşmek → 5xx/connection reset).

Alertler:
  • "Liveness> N/h boýunça ýygy-ýygydan dikeldişler" - dedloklaryň/syzmalaryň alamaty.
  • "Flap Readiness> X/15 min" - garaşlylyk/tor problemalarynyň alamaty.
  • Deplow bilen baglanyşyk ('service. version`).

11) Synag

Unit/Contract: endpointler '/healthz/' her bir garaşlylyk öçürilende dogry statuslary gaýtaryp berýär.
Chaos: DB/kesiş/dellalyň öçürilmegi: Readiness ýykylmaly ýa-da follbeki berk model boýunça açmaly. Liveness - proses "diri" bolsa sarsmaz.
Load/Soak: health-endpointler çalt bolmaly (kontenşn zyňmaň).
Canary: traffigi köpeltmezden ozal Readiness durnuklylygyny barlaň.

12) Ýygy-ýygydan ýalňyşlyklar we olardan nädip gaça durmaly

Liveness DB/daşarky API-leri barlaýar. Netije - hadysalarda tükeniksiz täzeden başlamalar. Çözgüt: liveness "amal durmuşyny" çäklendirmek.
Synaglarda kyn barlaglar. Ýalan ret etmeklige getirýär. Çözgüt: ýeňil barlaglar + aýry-aýry background-health monitorlary.
Startup Probe ýok. Haýal başlamak liveness tarapyndan "öldürilýär". Çözgüt: giň penjireli startup goşuň.
graceful shutdown ýok. Deploýda seýrek 5xx. Çözgüt: preStop + balansdan aýyrmak.
Flap tupanlary. Gaty agressiw bosagalar. Çözgüt: 'failureThreshold' -y götermek, 'timeoutSeconds' -y köpeltmek, backoff goşmak.
Hemme zat üçin birmeňzeş endpointler. Semantikleriň garyşmagy. Çözgüt: aýratyn 'liveness/readiness/startup'.

13) Satmagyň kiçi patternleri

Ýönekeý HTTP handler (psevdokod):
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 saglygy (ideýa):
go
// use google. golang. org/grpc/health/grpc_health_v1 healthServer. SetServingStatus("my. app. Service", SERVING) // or NOT_SERVING
ReadinessGate (mesh bilen hakykat):
yaml spec:
readinessGates:
- conditionType: "proxy. istio. io/ready"

14) Çek-listler

Önümden öň

  • Durmuş/readiness/startup endpointleri bölünýär, semantikleri beýan edilýär.
  • Liveness daşarky endiklere täsir etmeýär; Readiness diňe wagt we follbek bilen tankydy barlaýar.
  • Hyzmat profiliniň aşagyndaky 'initialDelay/period/timeout/failureThreshold' sazlandy.
  • graceful shutdown goşuldy: 'preStop' + balansdan aýyrmak.
  • Saglyk metrikleri/ýazgylary birikdirildi; alertler/flap.
  • Endikden ýüz öwürmek we haýal başlamak synaglary geçdi.

Amal

  • Täzelenmeler we flaplar boýunça hepdelik hasabat readiness.
  • Wakalardan soň bosagalary sazlamak; relizler bilen baglanyşyk.
  • Garaşlylygy öçürmek üçin yzygiderli chaos synaglary.
  • Endikleriň kritikligi üýtgände semantikanyň ähmiýeti.

15) FAQ

S: Hemme zady bir gezek ýapyp bolarmy?
A: islenmeýär. 'Startup', 'readiness', 'liveness' bölüň - bu ýalan täsirleri peseldýär we RCA-ny çaltlaşdyrýar.

S: Readiness-de keş barlamalymy?
O: Eger keş bolmasa, dogry (haýal bolsa-da) re modeim bar bolsa, readiness-i taşlamaň, diňe zaýalanmagy açyň.

S: liveness boýunça ýygy-ýygydan täzeden başlamakda näme etmeli?
A: Ilki bilen belligi/syzmagy aýyryň; soňra bosagalaryňyzy gowşadyň we programmada watchdog goşuň.

S: Köp kärendäni nädip göz öňünde tutmaly?
O: Readiness islendik kärende-traffige hyzmat etmek ukybyny görkezmelidir. Belli bir kärendeçiniň şahsy problemalary üçin - readiness-i üýtgetmäň, aýratyn SLI/alertler bilen signal beriň.

Baglanyşykly materiallar:
  • "Syn edilişi: ýazgylary, metrikleri, yzarlamalary"
  • "Paýlanan ýollar"
  • "SLO/SLA we metrikler"
  • "Webhuklary eltmegiň kepillikleri"
  • "In Transit Şifrlemek"
  • "Syr dolandyryşy"
Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.