Traffic splitting — kiruvchi so‘rovlar yoki ish yukini ikki yoki undan ortiq backend, versiya yoki muhit orasida belgilangan siyosat asosida taqsimlash mexanizmidir. U load balancing, canary deployment, A/B test, migration va failoverda ishlatiladi. Taqsimot foiz, header, foydalanuvchi identifikatori, hudud yoki boshqa atributga asoslanishi mumkin.
Foizli taqsimot
Weighted routing har backendga nisbiy og‘irlik beradi. 90/10 taqsimot uzoq muddatda trafikning taxminan o‘n foizini yangi versiyaga yuboradi. Kichik request sonida yoki persistent connectionlarda real ulush aniq foizdan farq qilishi mumkin.
Og‘irlik instance soni bilan bir xil emas. Bir poolda ko‘p instance bo‘lsa, avval poolga, keyin uning ichidagi instancega load balance qilinishi mumkin. Metriclar global va har version bo‘yicha alohida kuzatiladi.
Deterministik segment
User ID, tenant ID yoki cookie hash orqali cohort tanlansa bir foydalanuvchi bir xil versiyada qoladi. Bu session continuity va A/B tahlil uchun muhim. Hash algoritmi yoki salt o‘zgarsa foydalanuvchilar cohortlar orasida qayta taqsimlanadi.
Login qilmagan foydalanuvchida cookie o‘chishi yoki qurilma almashishi cohortni o‘zgartiradi. IP manzilni identity sifatida ishlatish NAT, mobil tarmoq va maxfiylik sabab ishonchsiz. Sticky session backend failureida qayta tanlash siyosatiga ega bo‘ladi.
Qoidaga asoslangan routing
Header, path, hostname, region yoki account tier asosida trafik aniq targetga yo‘naltirilishi mumkin. Internal tester maxsus header bilan canaryni ko‘radi, lekin tashqi foydalanuvchi headerni soxtalashtira olsa ruxsatsiz funksiyaga kirishi mumkin. Routing security authorizationning o‘rnini bosmaydi.
Qoidalar ustuvorligi aniq bo‘ladi. Region qoidasi foizli qoidani bosadimi yoki aksincha — gateway konfiguratsiyasida deterministik hal qilinadi. Bir-biriga zid rule shadow traffic va diagnostika muammosi keltiradi.
Amalga oshirish qatlamlari
DNS weighted record yirik guruhlar orasida taqsimlaydi, lekin resolver cache sabab o‘zgarish sekin va noaniq bo‘lishi mumkin. Layer 4 load balancer connectionni IP va port bo‘yicha, Layer 7 proxy esa HTTP xususiyatlari bo‘yicha yo‘naltiradi. Service mesh sidecar yoki gateway servislararo trafikda boy siyosat beradi.
Client-side routing SDK feature flag qiymatiga qarab endpoint tanlashi mumkin. Offline cache va eski client policy yangilanishini kechiktiradi. Qaysi qatlam yakuniy qaror qilishi va telemetryga route reason yozishi muhim.
Xatolar va sog‘lomlik
Backend nosog‘lom bo‘lsa, uning weighti nolga tushirilishi yoki so‘rovlar boshqa poolga berilishi mumkin. Health check juda yuzaki bo‘lsa ishlamaydigan backend trafik oladi, juda sezgir bo‘lsa qisqa tebranishda barcha trafik ko‘chib ketadi.
Retry boshqa versiyaga yuborilsa bitta foydalanuvchi bir so‘rov oqimida ikki xatti-harakatni ko‘rishi mumkin. Non-idempotent requestni avtomatik retry duplicate side effect keltiradi. Retry budget va idempotency siyosati routing bilan birga belgilanadi.
Kuzatuv
Har so‘rovga target version, cohort va routing rule labeli qo‘shiladi. Error, latency va business metric shu o‘lchamlar bo‘yicha solishtiriladi. High-cardinality user ID metric labeliga qo‘yilmaydi; kerak bo‘lsa cheklangan trace yoki audit yozuvida saqlanadi.
Shadow traffic
Shadowing so‘rov nusxasini yangi backendga yuboradi, ammo uning javobini foydalanuvchiga qaytarmaydi. Bu real request shaklida performance va compatibilityni ko‘rishga yordam beradi. Non-idempotent write lar o‘chirib tashlanishi yoki izolyatsiyalangan storagega yo‘naltirilishi kerak. Shaxsiy ma’lumot nusxasi uchun ayni privacy va retention talablari amal qiladi.
Bog‘liq tushunchalar
Load balancing, Canary deployment, Progressive delivery, Weighted routing, Sticky session, Service mesh, Feature flag