Жооп жоголгондо Stripe сиздин суроо-талабыңызды эстеп калат
Тайм-аут сервер операцияны аяктагандан кийин да төлөмдү белгисиз калтырышы мүмкүн.
Тайм-аут сервер операцияны аяктагандан кийин да төлөмдү белгисиз калтырышы мүмкүн. Бул «Under the Hood» түшүндүрмөсү Stripe API v1дин документтештирилген идемпотенттүүлүк келишимин колдонуп, туруктуу операциялык ачкычтарды, сакталган жоопту кайра ойнотууну, параметрлерди жана бир эле учурда иштөө чектөөлөрүн, сактоо мөөнөтүн жана натыйжаны жөнгө салууну көрсөтөт.
Жазма басылышын окуу (Англисче) ↗
Бул видео эмнелерди камтыйт
- Идемпотенттүүлүк операцияны кайталоонун максаттуу таасирине байланыштуу. Stripe API v1 документтештирилген сакталган жоопту кайра ойнотуу келишимин кошот.
- Ошол эле логикалык аракетти кайра аракет кылуу ошол эле ачкычты жана параметрлерди колдонот. Операция ачкычын өзүнчө SDK чалуулары же колдонмонун кайра иштетүүлөрү боюнча сактаңыз; чындыгында жаңы аракетке өз ачкычы керек.
- Акыркы чекиттин аткарылышы башталгандан кийин, Stripe API v1 биринчи суроо-талаптын статусун жана денесин, анын ичинде 500 катаны сактап, кайра аракет кылганда ошол сакталган жоопту кайтарат.
- Ошол эле ачкыч менен өзгөртүлгөн параметрлер дал келбестикти пайда кылат. Валидация каталары жана бир эле учурда аткаруу конфликттери ал аракет үчүн идемпотенттүү натыйжаны сактабайт жана кайра аракет кылынышы мүмкүн.
- Stripe API v1 ачкычтарын кеминде 24 саатка сактайт жана андан кийин аларды жок кылышы мүмкүн. Чечилбеген тармактык кайра аракеттерди алгачкы 24 саат менен чектеңиз, андан кийин операцияны кайталоодон мурун токтотуп, жөнгө салыңыз.
- Кэштелген 500 туташуу калыбына келгенден кийин да кайра ойнотула бериши мүмкүн. Баштапкы операция терс таасирлерге ээ болушу мүмкүн; анын натыйжасын аныктоо үчүн тиешелүү объектти, Dashboard суроо-талабын жана веб-кубулуштарды колдонуңуз.
- API v2 башка кайра ойнотуу семантикасын колдонот. Ачкыч электрондук почта, инвентаризация жана ар бир локалдык маалымат базасынын операциясы үчүн универсалдуу "так бир жолу" жеткирүүнү камсыз кылбайт.
Котормо стенограмма
Англис тилиндеги баштапкы баяндамадан которулган. Жеткиликтүү аудио жана коштомо жазуулар YouTube тарабынан көзөмөлдөнөт.
Тайм-аут төлөмүңүздү жокко чыгардыбы?
0:00 Сиз тайм-аут төлөмүңүз ишке ашкан жок деп ойлойсуз. Сервер жооп жоголуп жатканда ишин бүтүрүшү мүмкүн, сиздин төлөмүңүздү эч нерсе көрсөтпөй калтырат. Эмне үчүн кайра аракет кайра заряддай алат? Stripe аракетти кантип эстейт? Кайра аракет кылууну качан токтотуу керек? Жана бир жагымсыз деталды эске алыңыз. Эсте калган ката тармак көйгөйүнөн узакка созулушу мүмкүн.
0:17 Биз буга кайтып келебиз. Бул The Daily Diff, Under the Hood.
Идемпотенттүүлүк ачкычы эмнени аныктайт?
0:21 Идемпотенттүүлүк операцияны кайталоо бир жолу жасагандай эле максаттуу таасирге ээ экендигин билдирет. Ал бир логикалык аракетти белгилейт. Stripe'тин API биринчи версиясы кайра аракет кылганда ошол белгини таанып, сакталган жоопту кайра аткарат. Кофе сатып алууну элестетиңиз. Stripe сиздин төлөм сурооңузду аткарат, жана жооп кайтып келе жатканда жоголот. Кардар айлангычты көрөт. Алардын банкында дагы кызыктуу чечмелөө болушу мүмкүн. Корголбогон түзүү суроо-талабы терс таасирин кайталай алат.
Ошол эле ачкыч кайра аракетти кантип коопсуз кылат?
0:45 Биринчи аракеттен мурун уникалдуу ачкычты тиркеңиз жана аны кайра аракеттер үчүн сактаңыз. Эгер сиздин тиркемеңиз кайра жүктөлсө, ошол ачкычты операция менен кошо жазууларыңызда сактаңыз. Stripe'тин биринчи версиясынын API үчүн, акыркы чекиттин аткарылышы башталгандан кийин, биринчи суроо-талаптын статусу жана денеси сакталат. Ошол эле ачкычты жана параметрлерди кайра жөнөтүңүз, жана Stripe сакталган жоопту кайтарат. Кофе ордунда турат, ал эми квитанциясы кайра жөнөтүлөт.
Stripe так эмнени сактайт?
1:07 Бул жерде Stripe'тин чыныгы сөзү. Ошол эле ачкыч менен кайра аракет кылуу сакталган жоопту кайтарат, беш жүз катаны кошо алганда. Документация сиздин оптимисттик аталган кайра аракет жардамчыңызга караганда көбүрөөк иш кылат. Кардар кайра таштайт. Сиздин колдонмоңуз бул күтүлүп жаткан сатып алууну улантабы же башкасын баштайбы, ошону чечет. Чындыгында жаңы кофеге жаңы ачкыч берилет. Ар бир тармактык кайра аракет үчүн жаңы ачкыч коргоону жокко чыгарат.
1:27 Ошол эле ачкыч менен ар кандай параметрлер дал келбестикти пайда кылат.
Суроо-талап өзгөргөндө эмне болот?
1:30 Эгер параметрлер валидациядан өтпөй калса, же ошол ачкыч менен башка суроо-талап дагы эле аткарылып жатса, Stripe ал аракет үчүн идемпотенттүү натыйжаны сактабайт. Бул суроо-талаптарды кайра аракет кылса болот. Жарышкан суроо-талап конфликтке алып келет. Бул биринчи версиянын эрежелери. Экинчи версия башкача иштейт. Бир башкы аталыш сиздин системаңыз боюнча так бир жолу жеткирүүнү убада кыла албайт. Электрондук почта, инвентаризация жана сиздин маалымат базаңыз ар бири каталарды башкарууну талап кылат.
1:52 Ачкыч операцияны документтештирилген чөйрөсүндө коргойт. Stripe биринчи версиянын ачкычтарын кеминде жыйырма төрт саатка сактайт жана андан кийин аларды жок кылышы мүмкүн.
Эсте калган натыйжаны кайра аракет кылуу канча убакытка чейин коопсуз?
1:59 Жок кылынган ачкыч жаңы суроо-талапты аткарышы мүмкүн. Чечилбеген кайра аракеттерди биринчи күндүн ичинде сактаңыз. Андан ары, токтотуп, баштапкы натыйжаны жөнгө салыңыз. Серверге дем алуу бөлмөсүн берүү үчүн экспоненциалдык артка кайтууну жана чайпалууну колдонуңуз. Болбосо кайра аракеттер күйүп жаткан кофе дүкөнүнүн сыртында кезек түзөт. Stripe'тин китепканалары кайра аракеттерди иштетет, бирок китепканаңыздын демейки жөндөөлөрүн текшериңиз. Ошол жабышчаак ката - бул тузак.
Эмне үчүн эске тутулган ката кайра-кайра келе берет?
2:20 Кэштелген беш жүз жооп туташуу калыбына келгенден кийин да кайра ойнотула берет. Баштапкы операция терс таасирлерди жараткан болушу мүмкүн. Анын натыйжасын объекттерди, Dashboardду жана веб-кубулуштарды колдонуп чечиңиз. Жаңы ачкыч аракетти кайталашы мүмкүн. Эгер сиз муну мен айткандан көрө окуганды кааласаңыз, diff күн сайын эртең менен сиздин почтаңызга келет, акысыз the daily diff dot dev дарегинде, шилтеме төмөндө.
Мен бул келишим менен кайра аракет баскычын жөнөтмөк белем?
2:39 Өкүм, Under the Hood. Жөнөтүңүз. Мен туруктуу ачкычтарды чектелген кайра аракеттер жана жөнгө салуу менен жөнөтмөкмүн, анткени кардарлар сиздин бөлүштүрүлгөн системалар билимиңизди каржылабастан кофе алышат. Жана бул бүгүнкү diff. Мен Axrisiден Никомун. Жоопкерчиликтүү түрдө бириктириңиз.
Булактар
- Idempotent requestsStripe Docs
- Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
- Advanced error handlingStripe Docs
- HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor



