TGViewer
DevTwitter | توییت برنامه نویسی DevTwitter | توییت برنامه نویسی @devtwitter · 32.3K subscribers
Post #12473 6.92K
چالش Race Condition: رقابت بین درخواست‌های همزمان در مایکروسرویس‌ها:

ما از مایکروسرویس استفاده می کنیم تا از مزایای همزمانی بهره ببریم پس باید سعی کنیم چالش‌هاشو با روشی حل کنیم که باعث «کاهش همزمانی» نشود.

فرض می‌کنیم ۱۰ درخواست همزمان داریم،
روش‌های جلوگیری از Race Condition:

۱- استفاده از Redis Lock:
اولین درخواست پاسخ داده می‌شود و به ۹ تای دیگر خطای 429 Too Many Requests داده می‌شود که باعث از دست رفتن درخواست‌ها می‌شود.

۲- استفاده از RowVersion:
اولین درخواست پاسخ داده می‌شود و ۹ تای دیگر از دیتابیس خطای DbUpdateConcurrencyException دریافت می‌کنند که باعث از دست رفتن درخواست‌ها می‌شود.

۳- ایجاد صف در Redis:
با استفاده از ListRightPushAsync همه‌ی درخواست‌های همزمان را در یک لیست در Redis ثبت می‌کنیم و سپس توسط یک BackgroundService، یکی یکی با متد ListLeftPopAsync از لیست می‌خوانیم و پاسخ می‌دهیم.
مزیت این روش نسبت به دو روش قبلی این است که باعث از دست رفتن درخواست‌ها نمی‌شود ولی به دلیل استفاده از صف، باعث «کاهش همزمانی» می‌شود.

۴- استفاده از Concurrency Limiter در Asp.net:
با اضافه کردن سرویس AddRateLimiter پردازش همزمان را به یک درخواست محدود می‌کنیم و ۹ تای دیگر را در صف قرار می‌گیرند، که به دلیل استفاده از صف، باعث «کاهش همزمانی» می‌شود.


@DevTwitter | <Mahnaz Azad/>
  • ❤ 28
  • 👍 6
  • 👎 3
More from @devtwitter
  1. Oct 2, 2026با RyzerDNS، تحریم‌ها دیگر مانع شما نیستند. از هوش مصنوعی‌هایی مثل ChatGPT، Gemini و Claud…
  2. Oct 2, 2026گوگل چند وقت پیش ax رو معرفی کرد که اُپن سورسه ولی کم دیدم در موردش حرف زده بشه. مشکل kube…
  3. Oct 2, 2026الان Open Dots معرفی شد؛ همون قابلیت‌ها، با یک‌دهم هزینه! شرکن OpenAI همین دیروز Dot رو بر…
  4. Oct 2, 2026مخزن Traycer: مرکز فرماندهی برای کدنویسی ایجنت‌هایی که داری (Claude Code، Codex، Cursor و.…
  5. Oct 2, 2026🚀 کمپین «شروع امن» VulnCity شروع شد! خیلی از استارتاپ‌ها و شرکت‌های کوچیک، نیاز به امنیت…
  6. Oct 2, 2026Post #13409
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 →