GH GambleHub

Намунаҳои зинда/омодагӣ

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 ',' Муваффақият ',' Нокомӣ '.
Тавсияҳо барои профилҳои оғоз: Веб/API бо оғози зуд:
  • омодагӣ: 'давра = 5с, вақт = 0. 2–0. 5с, нокомӣ = 2 '
  • зиндагӣ: 'давра = 10, вақт = 0. 2–0. 5с, нокомӣ = 3 '
Оғози сахт (JIT/моделҳо/гармӣ):
  • оғоз: 'давра = 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"
  • "Дар рамзгузории транзит"
  • "Идоракунии махфӣ"
Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.