Bosh sahifa Wiki Ambassador pattern

Ambassador pattern

Ambassador pattern — ilova nomidan tashqi xizmatlar bilan aloqa qiladigan lokal proxy yoki yordamchi komponentdan foydalanish arxitektura usulidir. Ambassador service discovery, routing, retry, circuit breaker, autentifikatsiya va telemetry kabi tarmoq vazifalarini biznes koddan ajratadi. U ko‘pincha sidecar container sifatida ilova bilan birga joylashtiriladi.

Ishlash oqimi

Ilova masofadagi endpointga bevosita ulanmay, localhost’dagi ambassador portiga so‘rov yuboradi. Proxy destinationni topadi, TLS o‘rnatadi, credential qo‘shadi va tashqi connectionni boshqaradi. Javob yana lokal interfeys orqali ilovaga qaytadi.

Shu yo‘l bilan legacy ilova zamonaviy mTLS yoki service discovery’ni bilmasdan ishlashi mumkin. Ilova konfiguratsiyasida faqat lokal manzil bo‘ladi, murakkab network siyosati proxy konfiguratsiyasida markazlashtiriladi.

Asosiy vazifalar

Ambassador client-side load balancing qilib sog‘lom endpoint tanlaydi. Timeout va retry vaqtinchalik xatoni boshqaradi. Circuit breaker nosog‘lom dependency’ga talab yuborishni cheklaydi. Connection pooling har request uchun yangi TCP yoki TLS handshake xarajatini kamaytiradi.

Rate limit va concurrency control tashqi tizim kvotasini himoya qiladi. Metrics, trace va structured log barcha tillardagi ilovalarga bir xil formatda qo‘shiladi. Credential agent bilan integratsiya qisqa muddatli tokenni aylantiradi.

Sidecar bilan munosabat

Sidecar deployment shaklini, ambassador esa tarmoqdagi rolni ifodalaydi. Ambassador ko‘pincha sidecar, lekin alohida host agent yoki gateway sifatida ham ishlashi mumkin. Har sidecar ambassador emas: log collector yoki config reloader tarmoq vakili vazifasini bajarmaydi.

Service mesh’dagi data-plane proxy inbound va outbound trafik uchun ambassador rolini bajarishi mumkin. Inbound yo‘lda u serverga kirishni, outbound yo‘lda esa dependency chaqiruvini boshqaradi.

Semantika xavflari

Retry faqat idempotent yoki idempotency key bilan himoyalangan amalda xavfsiz. Proxy timeouti ilova timeoutidan uzun bo‘lsa thread yoki connection keraksiz band qoladi. Bir necha qatlam retry qilsa request storm yuzaga keladi; umumiy retry budget belgilanadi.

Proxy tashqi xizmat xatosini o‘zgartirib yubormasligi kerak. Status, deadline va cancellation ilovaga aniq yetkaziladi. Connection pool credential yoki DNS yangilanganda eski ulanishni qachon yopishi siyosat bilan boshqariladi.

Operatsion talablar

Ambassador data path’ga kirgani uchun uning availability’si ilova bilan teng muhim. Readiness faqat process tirikligini emas, konfiguratsiya yuklangani va sertifikat mavjudligini tekshiradi. Resource limit juda past bo‘lsa proxy throttling orqali barcha so‘rov latency’sini oshiradi.

Dashboard upstream bo‘yicha request, error, retry, circuit state va connection poolni ko‘rsatadi. Debugda ilova logi bilan proxy logi trace identifier orqali bog‘lanadi. Configuration rollout canary qilinib, noto‘g‘ri route barcha xizmatga birdan tarqalishining oldi olinadi.

Protokol tarjimasi

Ambassador ilova tushunadigan sodda HTTP yoki lokal socketni tashqi gRPC, message queue yoki vendor protokoliga aylantirishi mumkin. Tarjima xato semantikasi, streaming, deadline va backpressure’ni yo‘qotmasligi kerak. Masalan, tashqi tizim “qabul qilindi, keyin bajariladi” desa uni darhol muvaffaqiyatli yakun sifatida ko‘rsatish noto‘g‘ri. Payload schema versiyasi va maksimal hajm proxyda tekshiriladi. Lokal portga faqat ayni pod yoki host processlari kira olishi uchun bind address va namespace himoyasi sozlanadi; aks holda boshqa workload ambassador vakolatidan foydalanishi mumkin.

Ambassador yangilanganda eski va yangi proxy versiyasi bir xil ilova protokolini tushunishi canary orqali tekshiriladi; connection drain faol sessiyalarni uzmasdan almashtirishga yordam beradi.

Bog‘liq tushunchalar

Sidecar pattern, Service mesh, Proxy, Circuit breaker, Service discovery, mTLS