+− THE DAILY DIFFdev & AI news
SHIP IT

Stripe នឹងចងចាំសំណើរបស់អ្នកនៅពេលការឆ្លើយតបបាត់

ការអស់ពេលអាចធ្វើឱ្យការបង់ប្រាក់មិនច្បាស់លាស់បន្ទាប់ពីម៉ាស៊ីនមេបានបញ្ចប់ប្រតិបត្តិការ។

ការអស់ពេលអាចធ្វើឱ្យការបង់ប្រាក់មិនច្បាស់លាស់បន្ទាប់ពីម៉ាស៊ីនមេបានបញ្ចប់ប្រតិបត្តិការ។ អ្នកពន្យល់ពី Under the Hood នេះប្រើកិច្ចសន្យា idempotency ដែលបានចងក្រងជាឯកសាររបស់ Stripe API v1 ដើម្បីបង្ហាញគ្រាប់ចុចប្រតិបត្តិការមានស្ថិរភាព ការចាក់សារឡើងវិញនូវការឆ្លើយតបដែលបានរក្សាទុក ដែនកំណត់ប៉ារ៉ាម៉ែត្រ និងការធ្វើការដំណាលគ្នា ដែនកំណត់រក្សាទុក និងការផ្សះផ្សាការបរាជ័យ។

អានបោះពុម្ពជាលាយលក្ខណ៍អក្សរ (អង់គ្លេស) ↗

អ្វីដែលវីដេអូនេះគ្របដណ្ដប់

  • Idempotency ទាក់ទងនឹងផលប៉ះពាល់ដែលបានបម្រុងទុកនៃការធ្វើប្រតិបត្តិការម្តងទៀត។ Stripe API v1 បន្ថែមកិច្ចសន្យាចាក់សារឡើងវិញនូវការឆ្លើយតបដែលបានរក្សាទុក ដែលបានចងក្រងជាឯកសារ។
  • ការប៉ុនប៉ងម្តងទៀតនូវសកម្មភាពឡូជីខលដូចគ្នាប្រើគ្រាប់ចុច និងប៉ារ៉ាម៉ែត្រដូចគ្នា។ រក្សាទុកគ្រាប់ចុចប្រតិបត្តិការរវាងការហៅ SDK ដាច់ដោយឡែក ឬការចាប់ផ្តើមកម្មវិធីឡើងវិញ; សកម្មភាពថ្មីពិតប្រាកដត្រូវការគ្រាប់ចុចផ្ទាល់ខ្លួនរបស់វា។
  • បន្ទាប់ពីការប្រតិបត្តិ endpoints ចាប់ផ្តើម Stripe API v1 រក្សាទុកស្ថានភាព និងតួនៃសំណើដំបូង រួមទាំងកំហុស 500 ហើយប្រគល់ការឆ្លើយតបដែលបានរក្សាទុកនោះមកវិញនៅពេលប៉ុនប៉ងម្តងទៀត។
  • ប៉ារ៉ាម៉ែត្រដែលបានផ្លាស់ប្តូរជាមួយគ្រាប់ចុចដូចគ្នានឹងបង្កើតភាពមិនស៊ីគ្នា។ ការបរាជ័យនៃការផ្ទៀងផ្ទាត់ និងជម្លោះការប្រតិបត្តិដំណាលគ្នាមិនរក្សាទុកលទ្ធផល idempotent សម្រាប់ការព្យាយាមនោះទេ ហើយអាចត្រូវបានប៉ុនប៉ងម្តងទៀត។
  • Stripe រក្សាទុកគ្រាប់ចុច API v1 យ៉ាងហោចណាស់ 24 ម៉ោង ហើយអាចលុបវាចោលនៅពេលក្រោយ។ កំណត់ការប៉ុនប៉ងម្តងទៀតនូវបណ្តាញដែលមិនទាន់ដោះស្រាយទៅ 24 ម៉ោងដំបូង បន្ទាប់មកបញ្ឈប់ និងផ្សះផ្សាមុនពេលធ្វើប្រតិបត្តិការម្តងទៀត។
  • កំហុស 500 ដែលបានឃ្លាំងសម្ងាត់អាចបន្តចាក់សារឡើងវិញបន្ទាប់ពីការភ្ជាប់បានដំណើរការឡើងវិញ។ ប្រតិបត្តិការដើមអាចមានផលប៉ះពាល់; ប្រើវត្ថុដែលពាក់ព័ន្ធ សំណើ Dashboard និង webhooks ដើម្បីកំណត់លទ្ធផលរបស់វា។
  • API v2 ប្រើអត្ថន័យនៃការចាក់សារឡើងវិញខុសគ្នា។ គ្រាប់ចុចមិនបង្កើតការចែកចាយតែមួយដងជាសកលសម្រាប់អ៊ីមែល ឃ្លាំង និងរាល់ប្រតិបត្តិការមូលដ្ឋានទិន្នន័យក្នុងស្រុកនោះទេ។

កំណត់ត្រាដែលបានបកប្រែ

បកប្រែចេញពីការនិទានដើមជាភាសាអង់គ្លេស។ សំឡេង និងចំណងជើងរងដែលមានគឺស្ថិតនៅក្រោមការគ្រប់គ្រងរបស់ YouTube។

តើការអស់ពេលបានលុបចោលការទូទាត់របស់អ្នកមែនទេ?

0:00 អ្នកគិតថាការអស់ពេលមានន័យថាការទូទាត់របស់អ្នកបានបរាជ័យ។ ម៉ាស៊ីនមេអាចបញ្ចប់ខណៈពេលដែលការឆ្លើយតបបាត់ ធ្វើឱ្យការបង់ប្រាក់របស់អ្នកបង្ហាញយ៉ាងជឿជាក់នូវអ្វីទាំងអស់។ ហេតុអ្វីបានជាការប៉ុនប៉ងម្តងទៀតអាចគិតប្រាក់ម្តងទៀត? តើ Stripe ចងចាំការព្យាយាមដោយរបៀបណា? តើអ្នកគួរឈប់ប៉ុនប៉ងម្តងទៀតនៅពេលណា? ហើយត្រូវចាំលម្អិតមិនល្អមួយ។ កំហុសដែលបានចងចាំអាចនៅយូរជាងបញ្ហាបណ្តាញ។

0:17 យើងនឹងត្រលប់ទៅរឿងនោះវិញ។ នេះគឺជា The Daily Diff, under the hood។

តើគ្រាប់ចុច idempotency កំណត់អត្តសញ្ញាណអ្វី?

0:21 Idempotency មានន័យថាការធ្វើប្រតិបត្តិការម្តងទៀតមានផលប៉ះពាល់ដែលបានបម្រុងទុកដូចជាការធ្វើ វាម្ដង។ គ្រាប់ចុច idempotency សម្គាល់សកម្មភាពឡូជីខលមួយ។ API របស់ Stripe កំណែមួយទទួលស្គាល់ស្លាកនោះនៅពេលប៉ុនប៉ងម្តងទៀត ហើយចាក់សារឡើងវិញនូវការឆ្លើយតបដែលបានរក្សាទុក។ ស្រមៃមើលការទិញកាហ្វេ។ Stripe បញ្ចប់សំណើទូទាត់របស់អ្នក ហើយការឆ្លើយតបបាត់បង់នៅពេលត្រឡប់មកវិញ។ អតិថិជនឃើញរូបវិល។ ធនាគាររបស់ពួកគេអាចមានការបកស្រាយដ៏រំភើបជាងនេះ។ សំណើបង្កើតដែលមិនបានការពារអាចធ្វើឱ្យមានផលប៉ះពាល់ម្តងទៀត។

តើគ្រាប់ចុចដូចគ្នានេះធ្វើឱ្យការប៉ុនប៉ងម្តងទៀតមានសុវត្ថិភាពដោយរបៀបណា?

0:45 ភ្ជាប់គ្រាប់ចុចតែមួយគត់មុនពេលការព្យាយាមដំបូង ហើយរក្សាទុកវាសម្រាប់ការប៉ុនប៉ងម្តងទៀត។ ប្រសិនបើកម្មវិធីរបស់អ្នកចាប់ផ្តើមឡើងវិញ សូមរក្សាទុកគ្រាប់ចុចនោះជាមួយនឹងប្រតិបត្តិការនៅក្នុង កំណត់ត្រារបស់អ្នក។ សម្រាប់ API កំណែមួយរបស់ Stripe នៅពេលការប្រតិបត្តិ endpoints ចាប់ផ្តើម ស្ថានភាព និងតួនៃសំណើដំបូងត្រូវបានរក្សាទុក។ ផ្ញើគ្រាប់ចុច និងប៉ារ៉ាម៉ែត្រដូចគ្នាម្តងទៀត ហើយ Stripe ប្រគល់ការឆ្លើយតបដែលបានរក្សាទុកវិញ។ កាហ្វេនៅដដែលខណៈពេលបង្កាន់ដៃរបស់វាធ្វើដំណើរម្តងទៀត។

តើ Stripe រក្សាទុកអ្វីពិតប្រាកដ?

1:07 នេះគឺជាពាក្យពិតប្រាកដរបស់ Stripe។ ការប៉ុនប៉ងម្តងទៀតជាមួយគ្រាប់ចុចដូចគ្នាប្រគល់ការឆ្លើយតបដែលបានរក្សាទុកវិញ រួមទាំងកំហុសប្រាំរយ។ ឯកសារធ្វើការងារច្រើនជាងកម្មវិធីជំនួយការប៉ុនប៉ងម្តងទៀតដែលដាក់ឈ្មោះដោយសុទិដ្ឋិនិយមរបស់អ្នក។ អតិថិជនចុចម្តងទៀត។ កម្មវិធីរបស់អ្នកសម្រេចចិត្តថាតើវាបន្តការទិញដែលរង់ចាំ ឬចាប់ផ្តើមការទិញមួយផ្សេងទៀត។ កាហ្វេថ្មីពិតប្រាកដទទួលបានគ្រាប់ចុចថ្មី។ គ្រាប់ចុចថ្មីសម្រាប់រាល់ការប៉ុនប៉ងម្តងទៀតនូវបណ្តាញនឹងបន្សាបការការពារ។

1:27 ប៉ារ៉ាម៉ែត្រផ្សេងគ្នាជាមួយគ្រាប់ចុចដូចគ្នានឹងបង្កឱ្យមានភាពមិនស៊ីគ្នា។

តើមានអ្វីកើតឡើងនៅពេលសំណើផ្លាស់ប្តូរ?

1:30 ប្រសិនបើប៉ារ៉ាម៉ែត្របរាជ័យក្នុងការផ្ទៀងផ្ទាត់ ឬសំណើផ្សេងទៀតជាមួយគ្រាប់ចុចនោះនៅតែ កំពុងដំណើរការ Stripe មិនរក្សាទុកលទ្ធផល idempotent សម្រាប់ការព្យាយាមនោះទេ។ សំណើទាំងនោះអាចត្រូវបានប៉ុនប៉ងម្តងទៀត។ សំណើដែលប្រណាំងនឹងជួបជម្លោះ។ ទាំងនេះគឺជាច្បាប់កំណែមួយ។ កំណែពីរមានឥរិយាបទខុសគ្នា។ បឋមកថា (header) មិនអាចសន្យាថាការចែកចាយតែមួយដងពិតប្រាកដនៅទូទាំងប្រព័ន្ធរបស់អ្នកទេ។ អ៊ីមែល ឃ្លាំង និងមូលដ្ឋានទិន្នន័យរបស់អ្នកនីមួយៗត្រូវការការដោះស្រាយការបរាជ័យ។

1:52 គ្រាប់ចុចការពារប្រតិបត្តិការនៅក្នុងវិសាលភាពដែលបានចងក្រងជាឯកសាររបស់វា។ Stripe រក្សាទុកគ្រាប់ចុចកំណែមួយយ៉ាងហោចណាស់ម្ភៃបួនម៉ោង ហើយអាចលុបវាចោល

តើលទ្ធផលដែលបានចងចាំមានសុវត្ថិភាពក្នុងការប៉ុនប៉ងម្តងទៀតរយៈពេលប៉ុន្មាន?

1:59 នៅពេលក្រោយ។ គ្រាប់ចុចដែលបានលុបចោលអាចប្រតិបត្តិសំណើថ្មី។ រក្សាទុកការប៉ុនប៉ងម្តងទៀតដែលមិនទាន់ដោះស្រាយក្នុងរយៈពេលថ្ងៃដំបូង។ លើសពីនេះ សូមបញ្ឈប់ និងផ្សះផ្សាលទ្ធផលដើម។ ប្រើ exponential backoff និង jitter ដើម្បីផ្តល់ឱ្យម៉ាស៊ីនមេនូវកន្លែងដកដង្ហើម។ បើមិនដូច្នោះទេ ការប៉ុនប៉ងម្តងទៀតនឹងបង្កើតជួរនៅខាងក្រៅហាងកាហ្វេដែលកំពុងឆេះ។ បណ្ណាល័យរបស់ Stripe ដោះស្រាយការប៉ុនប៉ងម្តងទៀត ប៉ុន្តែពិនិត្យមើលលំនាំដើមរបស់បណ្ណាល័យអ្នក។ កំហុសដែលជាប់គាំងនោះគឺជាបញ្ហា។

ហេតុអ្វីបានជាកំហុសដែលបានចងចាំអាចបន្តកើតឡើងវិញ?

2:20 ការឆ្លើយតបប្រាំរយដែលបានឃ្លាំងសម្ងាត់បន្តចាក់សារឡើងវិញបន្ទាប់ពីការភ្ជាប់បានដំណើរការឡើងវិញ។ ប្រតិបត្តិការដើមអាចបានបង្កើតផលប៉ះពាល់។ ដោះស្រាយលទ្ធផលរបស់វាដោយប្រើវត្ថុ Dashboard និង webhooks។ គ្រាប់ចុចថ្មីអាចធ្វើសកម្មភាពម្តងទៀត។ ប្រសិនបើអ្នកចង់អានរឿងនេះជាជាងស្តាប់ខ្ញុំនិយាយ វាបានមកដល់ប្រអប់សំបុត្ររបស់អ្នក រៀងរាល់ព្រឹក ឥតគិតថ្លៃនៅ the daily diff dot dev តំណភ្ជាប់ខាងក្រោម។

តើខ្ញុំនឹងបញ្ចេញប៊ូតុងប៉ុនប៉ងម្តងទៀតជាមួយនឹងកិច្ចសន្យានេះទេ?

2:39 សាលក្រម, under the hood។ Ship it។ ខ្ញុំនឹងបញ្ចេញគ្រាប់ចុចមានស្ថិរភាពជាមួយនឹងការប៉ុនប៉ងម្តងទៀតដែលមានកម្រិត និងការផ្សះផ្សា ដូច្នេះអតិថិជនទទួលបានកាហ្វេដោយមិនចាំបាច់ផ្តល់មូលនិធិដល់ការអប់រំប្រព័ន្ធចែកចាយរបស់អ្នក។ ហើយនោះជាភាពខុសគ្នាសម្រាប់ថ្ងៃនេះ។ ខ្ញុំ Niko មកពី Axrisi។ បញ្ចូលដោយការទទួលខុសត្រូវ។

ប្រភព

  1. Idempotent requestsStripe Docs
  2. Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
  3. Advanced error handlingStripe Docs
  4. HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor

វីដេអូដែលពាក់ព័ន្ធ

under-the-hood · km · 10 តុលា 2026

Shopify បានផ្លាស់ប្តូរការកក់ទុកសារពើភ័ណ្ឌទៅក្នុង MySQL

Shopify បានផ្លាស់ប្តូរប្រព័ន្ធកក់ទុកសារពើភ័ណ្ឌរបស់ខ្លួនពី Redis ទៅក្នុងមូលដ្ឋានទិន្នន័យ MySQL ដែលបានរក្សាសៀវភៅបញ្ជីសារពើភ័ណ្ឌរួចហើយ។ អាងដែលកំណត់ដោយជួរដេកឯកតានីមួយៗដែលអាចចាក់សោបាន អនុញ្ញាតឱ្យការទូទាត់ប

2:58 ↗
under-the-hood · km · 24 កញ្ញា 2026

SAML, នៅពីក្រោយ៖ ហត្ថលេខានៅក្នុងលិខិត

SAML ចូលប្រើកម្មវិធីការងារស្ទើរតែទាំងអស់ ហើយហត្ថលេខារបស់វាមាននៅក្នុង XML ដែលវាចុះហត្ថលេខា។ នៅពីក្រោយ៖ ដំណើរការចូលរវាងកម្មវិធី កម្មវិធីរុករក និងអ្នកផ្តល់អត្តសញ្ញាណ តើការអះអាងមើលទៅដូចម្ដេច ហេតុអ្វីបានជា

3:02 ↗
under-the-hood · km · 23 កញ្ញា 2026

នៅពេលម៉ូដែលមួយស្លាប់ ពីក្រោយឆាក

ម៉ូដែល AI មិនស្លាប់ទេ — វាទទួលបានកាលបរិច្ឆេទបិទ ហើយនៅព្រឹកបន្ទាប់ ការហៅ API របស់អ្នកនឹងប្រគល់លេខ 404 មកវិញ៖ "ម៉ូដែលនេះត្រូវបានបិទហើយ ស្វែងយល់បន្ថែមនៅទីនេះ។" ពីក្រោយឆាក៖ ដំណើរការបួនដំណាក់កាល (active →

3:15 ↗
under-the-hood · km · 21 កញ្ញា 2026

Claude វិភាគកត្តា RSA-896។ នេះជារបៀបដែល RSA ត្រូវបានបំបែក

នៅថ្ងៃទី 19 ខែកញ្ញា វិស្វករ Anthropic ម្នាក់បានវិភាគកត្តា RSA-896 — ដែលជាលេខប្រឈមមុខ 270 ខ្ទង់ — ជាមួយ Claude ដែលជាការបញ្ជូន GPU នៃ Sieve CADO-NFS ប្រភពបើកចំហ និងប្រហែល 30 GPU-ឆ្នាំនៅលើ GPU ទំនេរ 2,04

3:39 ↗