Мутобиқати форвард
Мутобиқати пешрафта чист
Мутобиқати форвард қобилияти система барои дуруст кор кардан бо мизоҷони нав ё маълумот нисбат ба оне, ки дар ибтидо тарҳрезӣ шуда буд, мебошад. Содда: сервери кӯҳна ҳангоми ворид шудани муштарии нав шикаста намешавад; истеъмолкунандаи кӯҳна ҳангоми дучор шудан бо паёми нав намеафтад.
Форвард аз мутобиқати қафо (вақте ки системаи нав мизоҷони кӯҳнаро дастгирӣ мекунад) дар самти масъулият фарқ мекунад: мо протоколҳо ва мизоҷонро тавре тарҳрезӣ мекунем, ки васеъшавии ояндаро бидуни такмили пурраи тамоми экосистема "наҷот" диҳем.
Принсипҳои асосӣ
1. Хонандаи таҳаммулпазир ва нависандаи таҳаммулпазир
Хонанда майдонҳо/сарлавҳаҳои номаълумро нодида мегирад ва ба арзишҳои нави энум бо хатогии дуруст имкон медиҳад.
Нависанда чизе намефиристад, ки сервер ба таври возеҳ ҳамчун дастгирӣ (қобилиятҳо) эълон накардааст.
2. Музокироти қобилият
Мубодилаи возеҳи қобилиятҳо (хусусиятҳо/версияҳо/намудҳои ВАО) дар марҳилаи дастӣ. Мизоҷ рафтори худро ба ҷавоби сервер мутобиқ мекунад.
3. Таназзули пешфарз
Хусусиятҳои нав ихтиёрӣ ҳисобида мешаванд: агар сервер/истеъмолкунанда онҳоро дастгирӣ накунад, скрипт то ҳол бо ҳадди аққали муфид (MGC) хотима меёбад.
4. Core устувор (MGC)
Шартномаи ҳадди ақали кафолат бетағйир мондааст; навовариҳо ҳамчун васеъшавӣ зиндагӣ мекунанд.
5. Қарордодҳои хато ҳамчун як қисми протокол
Рамзҳои/сабабҳои пешгӯишаванда ("хусусият дастгирӣ намешавад", "намуди медиа номаълум") ба муштарӣ имкон медиҳад, ки ба таври худкор ба ҳолати дастгирӣшаванда баргардад.
6. Версияҳои бидуни ногаҳонӣ
Хатҳои асосӣ ҷудо шуданд; васеъкунии хурд навсозии сервер/истеъмолкунандаро талаб намекунад.
Дар куҷо муҳим аст
API-ҳои ҷамъиятӣ бо ҳамгироии дарозмуддат (шарикон, SDK дар барномаҳои мобилӣ).
Платформаҳои чорабинӣ бо бисёре аз истеъмолкунандагони мустақил.
Мизоҷони мобилӣ, ки нисбат ба пуштибонӣ сусттар навсозӣ мекунанд.
Edge/IOT, ки дар он як қисми парки дастгоҳ кам дурахшид.
Намунаҳои татбиқ аз рӯи услуб
REST/HTTP
Музокирот:- 'Қабул '/намудҳои медиа бо параметрҳо (' ариза/внд. намуна. фармоиш + json; v = 1; профил = хатар ').
- 'Бартарӣ: дохил кардан =... 'блокҳои ихтиёрӣ.
- Унвони 'X-Қобилиятҳо: risk_score,item_details_v2'.
- Дархостро дар формати асосӣ, васеъкунӣ мефиристад - танҳо дар сурате, ки сервер қобилияти тасдиқшударо дошта бошад (тавассути OPTIONS/desc/endpoint).
- Вақте ки '415/406/501' ба таври худкор ба формат/усули дастгиришаванда бармегардад.
- Ҷавоби сервер: параметрҳои номаълум - нодида гирифтан; майдонҳои иловагӣ иҷозат дода мешаванд; формати хатогии устувор ('намуди/код/тафсилот/trace _ id').
GRPC/Протобуф
Хизматрасонии устувор: усулҳои нав/майдонҳо - иловагиҳо; сервери кӯҳна оромона майдонҳои дархости номаълумро нодида мегирад.
Кашфи хусусият: Усули 'Get' Қобилиятҳо () 'рӯйхати хусусиятҳо/маҳдудиятҳоро бармегардонад. Муштарӣ ба усули v2 занг намезанад, агар сервер онро эълон накунад.
Ҷараён: тартиби ҳадди аққали паёмҳоро ислоҳ кунед; "чаҳорчӯбаҳо" -и навро бо васеъшавӣ/намудҳое, ки муштарии кӯҳна сарфи назар мекунад, қайд кунед.
Диаграммаи QL
Ба пеш дӯстдошта: дар сервер майдонҳо/намудҳои нав пайдо мешаванд - муштариёни кӯҳна танҳо онҳоро талаб намекунанд.
Пиндоштҳо манъ аст: муштарӣ бояд схемаро (introspection/codogen) нигоҳ дорад ва дастурҳо/тағирёбандаҳои номаълумро нафиристад.
Таназзул: агар сервер директиваи фармоишӣ/хусусиятро намедонад, муштарӣ дархостро бе он месозад.
Рӯйдодҳо (Кафка/NATS/Пулсар, Авро/JSON/Прото)
Мутобиқати схемаи ФОРВАРД дар феҳрист: истеъмолкунандагони кӯҳна метавонанд паёмҳои бо нақшаи нав навишташударо хонанд.
Майдонҳои иловагӣ бо пешфарз: истеҳсолкунандагони нав истеъмолкунандагони кӯҳнаро вайрон намекунанд.
Core против ғанишуда: ядро якхела боқӣ мемонад, маълумоти нав дар '.enriched' ё ҳамчун майдонҳои ихтиёрӣ нашр карда мешавад.
Амалияи тарроҳӣ
1. Шартномаи дархости ҳадди аққал (MGC)
Амалиёт бояд "гардани танг" дошта бошад, ки ҳамаи серверҳо солҳои тӯлонӣ дастгирӣ хоҳанд кард.
2. Парчамҳои хусусият дар сатҳи шартнома
Хусусиятҳоро ҳамчун хусусиятҳои номбаршуда тавсиф кунед: 'risk _ score', 'нархгузорӣ _ v2', 'strong _ idempotency'. Мизоҷ онҳоро ба таври возеҳ дар бар мегирад.
3. Рамзҳои хатои аниқ барои "дастгирӣ нашуда"
HTTP: '501 Иҷро нашудааст', '415 Намуди медиа дастгирӣнашаванда', детальные 'проблема + йсон'.
GRPC: 'UNIMPLEMENTED '/' FAILED _ PRECONDITION'.
Ҳодисаҳо: масир дар DLQ бо 'reason = дастгирӣ намешавад _ feature'.
4. Ба рӯйхати тартибот/пурра такя накунед
Мизоҷ бояд ба арзишҳои нави энум, майдонҳои нав ва хосиятҳои "иловагӣ" омода бошад.
5. Идентификаторҳо ва форматҳои устувор
Формати тугмаҳои ID/тақсимкуниро дар сатр тағйир надиҳед - ин дар тарафи хонандагон ба пеш мешиканад.
6. Ҳуҷҷатҳои "Мошини хондан"
Дескрипторҳои мизбон: Open Мизоҷон метавонанд дастгирии хусусиятро тафтиш кунанд.
Санҷиши мутобиқати форвард
Schema-diff дар ҳолати FORWARD/FULL: схемаи нав истеъмолкунандаи/сервери кӯҳнаро тасдиқ мекунад.
Санҷишҳои шартномаи муштарӣ: Муштарии нав бар зидди сервери кӯҳна бо хусусиятҳои фаъол/ғайрифаъол иҷро карда мешавад.
Дархостҳои тиллоӣ: маҷмӯи дархостҳои "нав" тавассути сервери "кӯҳна" иҷро мешаванд; таназзули пешбинишуда бидуни хатогиҳои ҷиддӣ.
Бесарусомонӣ/таъхир: Санҷиши вақт/бозгашт - муштарии нав бояд бадтарин SLA-и сервери кӯҳнаро дуруст наҷот диҳад.
Canary: баъзе мизоҷони нав бо версияи қаблии сервер кор мекунанд - мо телеметрияи хатогиҳо/таназзулро ҷамъ меорем.
Нишондиҳандаҳои мушоҳидашаванда ва амалиётӣ
Фоизи дархостҳо/паёмҳо бо хусусиятҳои дастгирӣнашаванда ва хатогиҳои автоматии онҳо.
Паҳнкунӣ аз рӯи версияҳои муштарӣ (User-Agent/metadata/талабот).
Хатогиҳои 'UNIMPLEMENTED/501/415' ва хатсайрҳо дар DLQ бо 'дастгирӣ карда намешавад _ feature'.
Вақти таназзул: p95/p99 барои MGC против посухи "васеъ".
Усулҳои мутобиқат дар феҳристи схема
ФОРВАРД: вуруди нав бо хонандаи кӯҳна мувофиқ аст (пешфарз лозим аст, ихтиёрӣ).
ПУРРА: и БА ПЕШ, и БА АҚИБ; барои шартномаҳои ҷамъиятӣ қулай аст.
Тавсия: барои чорабиниҳо - Бозгашт ба истеҳсолкунанда ва ФОРВАРД барои истеъмолкунанда (тавассути хонандаи таҳаммулпазир), барои API-ҳои беруна - ПУРРА.
Намунаҳо
REST (қобилиятҳо + таназзул)
1. Мизоҷ 'GET/meta/қобилиятҳо' → '{"risk _ score" -ро месозад: дурӯғ, "price_v2": ҳақиқӣ}'.
2. Дар 'POST/фармоишҳо' майдонҳои пойгоҳро мефиристад; 'risk _ score' дархост намекунад, зеро сервер ин корро карда наметавонад.
3. Агар тасодуфан фиристода шавад 'Афзалият: дохил кардан = risk _ score', сервер бо 200 бе майдони 'risk _ score' ҷавоб медиҳад (ё 'Афзалият-Татбиқ: ҳеҷ') - муштарӣ вайрон намешавад.
GRPC (кашф)
'Гирифтани қобилиятҳо ()' рӯйхати/хусусияти усули баргардонидашуда. Агар муштарӣ мавҷуд набошад, ба 'Capture' занг намезанад - ба ҷои истифодаи 'Capture' ва ба таври маҳаллӣ табдил додани вуруд ба намуди дастгирӣ.
Ҳодисаҳо (ФОРВАРД дар феҳрист)
Истеҳсолкунанда майдони 'risk _ score' -ро илова кард (бо нобаёнӣ бекор карда мешавад). Истеъмолкунандаи кӯҳна ӯро нодида мегирад; мантиқи он танҳо майдонҳои устувори ядро истифода мекунад.
Антипаттернҳо
Мизоҷи сахт: посухро аз майдонҳои сафедпӯст филтр мекунад ва ба моликияти ношинос меафтад.
Хусусиятҳои номуайян: Мизоҷ ба фиристодани параметрҳои нав бидуни санҷиши қобилиятҳо шурӯъ мекунад.
Тағйир додани форматҳои ID/калидӣ дар сатр → серверҳои кӯҳна/истеъмолкунандагон дигар дархостҳо/паёмҳои навро намефаҳманд.
Пиндоштҳои сахт дар бораи рӯйхати пурраи энум (гузариш бе пешфарз).
Воридшавӣ ҳамчун назорати ҷараён: таҳлили сатрҳои хатогӣ ба ҷои рамзҳои шартнома.
Рӯйхати назоратии татбиқ
- MGC муайян шудааст; хусусиятҳои нав ҳамчун ихтиёрӣ қайд карда мешаванд.
- Музокироти қобилият (endpoint/metadata/handshake) тавсиф ва амалӣ карда мешавад.
- Мизоҷон майдонҳои ношиносро нодида мегиранд ва энуми навро дуруст идора мекунанд.
- Шартномаҳои хатогӣ пешакӣ "дастгирӣ намешаванд" (HTTP/GRPC/Event).
- Феҳристи схема барои артефактҳои мувофиқ ба ФОРВАРД/FULL муқаррар карда шудааст.
- Автотестҳо: схема-diff (ФОРВАРД), муштарӣ ва санҷишҳои кӯҳнаи сервер, канарӣ.
- Нишондиҳандаҳо: версияи муштарӣ, нокомии хусусият, сатҳи таназзул, p95 MGC.
- Ҳуҷҷатгузорӣ/SDK рӯйхати хусусиятҳо ва намунаҳои таназзулро нашр мекунанд.
FAQ
Чӣ гуна пешрафт дар амал аз қафо фарқ мекунад?
Ба қафо: сервери нав муштариёни кӯҳнаро вайрон намекунад. Ба пеш: сервери кӯҳна аз мизоҷони нав (ё истеъмолкунандаи кӯҳна аз паёмҳои нав) ҷудо намешавад. Идеалӣ, шумо ба пуррагӣ мерасед.
Оё ба ман ҳамеша лозим аст, ки ба қобилиятҳо ворид шавам?
Агар шумо эволютсияи фаъолро бидуни релизҳои синхронӣ интизор шавед, ҳа. Ин аз доштани даҳҳо хатҳои асосӣ арзонтар аст.
Дар бораи амният чӣ гуфтан мумкин аст?
Хусусиятҳои нав бояд миқёс/даъвоҳои алоҳидаро талаб кунанд. Агар сервер онҳоро дастгирӣ накунад, муштарӣ бояд амниятро кам накунад, балки аз хусусият даст кашад.
Оё тавассути версияи сервер дастгирии "тахмин" кардан мумкин аст?
Номатлуб. Беҳтар аст, ки ба таври возеҳ (қобилиятҳо) бипурсед ё ба намуди/схемаи ВАО нигаред.
Ҷамъ
Ҳамоҳангсозии форвард интизоми имкониятҳои гуфтушунид ва ба таври бехатар харобкунанда мебошад. Ядрои устувор, гуфтушунидҳои қобилият, васеъкунии иловагиҳо ва иштибоҳҳои пешгӯишаванда ба мизоҷон ва маълумоти нав имкон медиҳанд, ки бо серверҳои кӯҳна ва истеъмолкунандагон бидуни релизҳои оммавӣ ва муҳоҷирати шабона ҳамроҳ шаванд.