+− THE DAILY DIFFdev & AI news
SHIP IT

Хариулт алга болоход Stripe таны хүсэлтийг санаж байна

Таймаут нь сервер ажиллагааг дуусгасны дараа төлбөрийг тодорхойгүй болгох боломжтой.

Таймаут нь сервер ажиллагааг дуусгасны дараа төлбөрийг тодорхойгүй болгох боломжтой. Энэхүү "Under the Hood" тайлбарлагч нь 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"-ийн нууц.

Идэмтэй байдлын түлхүүр юуг тодорхойлдог вэ?

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 Дүгнэлт, нууцаар. Илгээ. Би тогтвортой түлхүүрүүдийг хязгаарлагдмал дахин оролдлого болон тохиролцоотойгоор илгээх болно, ингэснээр хэрэглэгчид таны түгээгдсэн системийн боловсролыг санхүүжүүлэхгүйгээр кофе авах болно. Өнөөдрийн ялгаа энэ байна. Би 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 · mn · 2026 оны 10-р сарын 10

Shopify бараа материалын нөөцлөлтийг MySQL руу шилжүүлсэн

Shopify бараа материалын нөөцлөлтийн системээ Redis-ээс MySQL мэдээллийн санд шилжүүлсэн бөгөөд уг мэдээллийн санд бараа материалын бүртгэл аль хэдийн байсан юм. Хязгаарлагдмал хэмжээний, тус тусад нь

2:58 ↗
under-the-hood · mn · 2026 оны 9-р сарын 24

SAML, дотоод хэсэгт: захидал доторх гарын үсэг

SAML нь таныг бараг бүх ажлын аппликейшнд нэвтрүүлдэг бөгөөд түүний гарын үсэг нь гарын үсэг зурсан XML дотор байрладаг. Дотоод хэсэгт: апп, хөтөч болон танилт олгогч хоорондын нэвтрэх үйлдэл, нотолго

3:02 ↗