TGViewer
LearnByLearn📖 LearnByLearn📖 @learnbylearn · 564 subscribers
Post #138 2.58K
LearnByLearn📖 اولین قسمت از تراکنش ها: Pessimistic 🆚 Optimistic قبلش اینو بگم اگه دوست داشتید این پلی لیست مفاهیم دیتابیس رو که قسمت چهارمش ACID هست رو مطالعه کنید بدون هیچ بحث اضافه دیگه ای بریم سر اصل مطلب ✅ توی Pessimistic Concurrency Control دیتابیس به صورت خیلی…
🤩 دومین قسمت از تراکنش ها OutBox Pattern

فرض کنید یک سیستم توزیع شده(distributed) فروشگاهی داریم که شامل یک بروکر هست، حالا یا ربیت یا کافکا یا هرچی و این وسط یک دیتابیسم داریم

حالا توی این سیستم ما، وقتی سفارشی ثبت میشه باید دوتا اتفاق بیوفته:

☝️یکی اینکه اون سفارش توی دیتابیس ثبت بشه.
☝️یکی دیگه اینکه event مربوط به اون سفارش توسط broker ما منتشر یا publish بشه و سایر سرویس هارو از این eventمطلع کنه

✅مثلا سرویس نوتیفیکیشن وقتی event ثبت سفارش رو دریافت کرد یه پیام بفرسته به کاربر یا مثلا سرویس انبار داری هم مطلع بشه که سفارش ثبت شده و کارای اداریشو انجام بدین

اینجا ما دوتا سناریو داریم

✅سناریو اول
سفارشمون کاملا موفقیت آمیز توی دیتابیس ثبت شد اما درست قبل از ارسال به بروکر ، سرور کرش میکنه یا چه میدونم network دچار مشکل میشه(اونم تو ایران که یه لحظه هم اینترنتا قطع نمیشن 😊)
ای داد بیداد سفارش توی دیتابیس ثبت شده ولی هیچ پیامی به سرویس های دیگه(نوتیفیکیشن و انبار) ارسال نشده 😨!!!!

✅سناریو دوم
فرض کن پیام موفقیت امیز توسط broker ارسال شده ولی حین ثبت، سرور دیتابیس دچار مشکل شده و rollback میخوره و سفارشمون توی دیتابیس نمیشینه
از طرفی پیام ثبت موفق امیزش هم توسط بروکر ارسال شده !!!!
پس سرویس های دیگه فکر میکنن سفارشی ثبت شده درحالی که هیچی ثبت نشده🤥

راه حل چیه 🤔

✅راه حل اینه یه دلال داده رو بیاریم توی کار که اسم این دلال outbox هست، این outbox یه جدول توی دیتابیسه که رابط بین دیتابیس سفارشات ما و بروکرمون هست

✅درواقع وقتی سفارش ثبت میشه، outbox میگه آقا پیام ثبت سفارش رو مستقیم نده به بروکر، بیا مستقیم بدش به خودم بعد من میدمش بروکر که پابلیشش کنه

✅حالا ارتباط بین outbox و بروکر چطوری برقرار میشه؟
یه worker این وسط به صورت دوره ای هی میاد جدول outbox رو چک میکنه و رکورد های جدول رو میخونه و میفرسته به broker
بعدش اون رکورد طبق سیاست های توسعه دهنده یا از outbox حذف میشه یا به عنوان successful تگ میخوره که یعنی پردازش شده

✅اینطوری اگر پردازش پیام دچار مشکل بشه، پیام توی Outbox باقی می مونه و دوباره توسط اون worker پردازش میشه پس تضمین ارسال دقیق یک‌بار (Exactly Once Delivery)هم برای ما فراهم میشه
دیگه نه نگران از دست دادن داده هات باش و ناهماهنگی بین سرویس ها

لینک همین مقاله توی لینکدین 👈🏻 لینک
مخصلیم❤️
@LearnByLearn

#outbox_pattern
  • 👍 5
More from @learnbylearn
  1. Aug 26, 2026رادیوجادی ۲۴۸ - حمام طلا https://youtu.be/L2haZBywgVI در این شماره هر دو حزب آمریکا علیه د…
  2. Aug 17, 2026#ببین_و_نترس وقتی سرور لینوکسی کند می‌شود، از کجا شروع کنیم؟ ❌ حدس نزن. ✅ لایه‌ها را چک کن…
  3. Aug 4, 2026تقریبا دو سال پیش یه چیزی رو شروع کردم ولی فکر کردم هنوز خامه (: حالا می خوام ادامه اش بدم…
  4. Aug 1, 2026رزومه‌هاتون رو برای من ارسال کنید با تشکر @omidkhosrojerdi omidkh68@gmail.com #استخدام
  5. Jul 27, 2026هوش مصنوعی گند زده به همه چیز پیدا کردن مقاله فنی خوب از حفاری در معدن داره سخت‌تر میشه قب…
  6. Jul 24, 2026مدیر عامل انویدیا، جنسن هوانگ، گفته که هوش مصنوعی قرار نیست شغل ها رو اتومیت کنه. ایشون گف…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →