જ્યારે પ્રતિભાવ અદૃશ્ય થઈ જાય ત્યારે Stripe તમારી વિનંતી યાદ રાખે છે
સર્વર ઑપરેશન પૂર્ણ કરી લે તે પછી ટાઈમઆઉટ ચેકઆઉટને અનિશ્ચિત છોડી શકે છે.
સર્વર ઑપરેશન પૂર્ણ કરી લે તે પછી ટાઈમઆઉટ ચેકઆઉટને અનિશ્ચિત છોડી શકે છે. આ અંડર ધ હૂડ સમજાવનાર Stripe API v1ના દસ્તાવેજીકૃત આઇડેમ્પોટેન્સી કરારનો ઉપયોગ કરીને સ્થિર ઑપરેશન કી, સાચવેલ પ્રતિભાવ રિપ્લે, પેરામીટર અને કન્કરન્સી મર્યાદાઓ, રીટેન્શન હોરાઇઝન અને પરિણામ સમાધાન દર્શાવે છે.
લખેલી આવૃત્તિ વાંચો (અંગ્રેજી) ↗
આ વીડિયોમાં શું આવરી લેવામાં આવ્યું છે
- આઇડેમ્પોટેન્સી ઑપરેશનને પુનરાવર્તિત કરવાની ઇચ્છિત અસર સાથે સંબંધિત છે. Stripe API v1 દસ્તાવેજીકૃત સાચવેલ-પ્રતિભાવ રિપ્લે કરાર ઉમેરે છે.
- તે જ લોજિકલ ક્રિયાના પુનરાવર્તન માટે સમાન કી અને પેરામીટરનો ઉપયોગ થાય છે. અલગ SDK કૉલ્સ અથવા એપ્લિકેશન પુનઃપ્રારંભો દરમિયાન ઑપરેશન કીને જાળવી રાખો; ખરેખર નવી ક્રિયાને તેની પોતાની કીની જરૂર છે.
- એન્ડપોઇન્ટ એક્ઝિક્યુશન શરૂ થયા પછી, Stripe API v1 પ્રથમ વિનંતીની સ્થિતિ અને બોડી, જેમાં 500 ભૂલોનો સમાવેશ થાય છે, તેને સાચવે છે અને પુનરાવર્તન પર તે સાચવેલ પ્રતિભાવ પરત કરે છે.
- સમાન કી સાથે બદલાયેલ પેરામીટર વિસંગતતા ઉત્પન્ન કરે છે. માન્યતા નિષ્ફળતાઓ અને એક સાથે એક્ઝિક્યુશન સંઘર્ષો તે પ્રયાસ માટે કોઈ આઇડેમ્પોટેન્ટ પરિણામ સાચવતા નથી અને તેને ફરીથી પ્રયાસ કરી શકાય છે.
- Stripe API v1 કીઝને ઓછામાં ઓછા 24 કલાક માટે જાળવી રાખે છે અને તે પછી તેને કાપી શકે છે. અનિર્ણિત નેટવર્ક પુનરાવર્તનોને પ્રથમ 24 કલાક સુધી મર્યાદિત કરો, પછી ઑપરેશનને પુનરાવર્તિત કરતા પહેલા રોકો અને સમાધાન કરો.
- કનેક્ટિવિટી પુનઃપ્રાપ્ત થયા પછી કેશ્ડ 500 ફરીથી ચાલતું રહી શકે છે. મૂળ ઑપરેશનમાં આડઅસરો હોઈ શકે છે; તેના પરિણામને સ્થાપિત કરવા માટે સંબંધિત ઑબ્જેક્ટ, ડેશબોર્ડ વિનંતી અને વેબહુક્સનો ઉપયોગ કરો.
- 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 કનેક્ટિવિટી પુનઃપ્રાપ્ત થયા પછી કેશ્ડ પાંચસો પ્રતિભાવ ફરીથી ચાલતું રહે છે. મૂળ ઑપરેશનમાં આડઅસરો ઉત્પન્ન થઈ હોઈ શકે છે. ઑબ્જેક્ટ્સ, ડેશબોર્ડ અને વેબહુક્સનો ઉપયોગ કરીને તેના પરિણામને ઉકેલો. એક નવી કી ક્રિયાનું પુનરાવર્તન કરી શકે છે. જો તમે મને આ કહેવાને બદલે વાંચવા માંગતા હો, તો diff દરરોજ સવારે તમારા ઇનબોક્સમાં આવે છે, daily diff dot dev પર મફત, લિંક નીચે છે.
શું હું આ કરાર સાથે ફરીથી પ્રયાસ કરવાનું બટન મોકલીશ?
2:39 ચુકાદો, under the hood. SHIP IT. હું બાઉન્ડેડ રીટ્રાઇઝ અને સમાધાન સાથે સ્થિર કીઝ મોકલીશ, જેથી ગ્રાહકો તમારી વિતરિત સિસ્ટમ્સ શિક્ષણને ભંડોળ આપ્યા વિના કોફી મેળવે. અને આજનો આ diff છે. હું Axrisi થી Niko છું. જવાબદારીપૂર્વક મર્જ કરો.
સ્ત્રોતો
- 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



