TGViewer
نوشته‌های ترمینالی نوشته‌های ترمینالی @terminal_stuff · 3.52K subscribers
Post #3253 2.21K
یکی از مسائل دنیای واقعی که توی سیستم‌های distributed خیلی کاربرد داره به اجماع رسیدنه (یا همون consensus)
مساله از این قراره که ما کامپیوترهای متفاوتی داریم که از طریق شبکه با هم در ارتباط هستن ولی ممکنه هم خودشون از کار بیفتن هم شبکه به درستی کار نکنه و تاخیر داشته باشه. پس نیاز داریم با یکسری مکانیسم کاری کنیم به اجماع برسن و حالت‌های متفاوت مثل کرش سیستم های مختلف یا از دست رفتن شبکه‌شون (partition شدن اصطلاحا) رو در نظر بگیریم.

راه‌های ساده و ابتدایی برای این قضیه 2 phase commit و 3 phase commitئه که مشکلات خاص خودشو داره مثلا سیستم بلاک می‌شه تا همه جواب بدن.
روش‌های بهتر شامل Paxos میشه که تضمین‌های خوبی در زمینه ددلاک نشدن سیستم (liveness) و تحمل خطای بالاتر داره ولی روش نسبتا پیچیده‌ایه، هم از نظر فهم هم از نظر پیاده‌سازی. نسخه‌ی ساده‌تر و قابل پیاده‌سازیش ارائه شده به اسم Raft که همون تضمین‌ها رو می‌ده همچنان در عین سادگی.

یه قسمت paxos که برام جالب بود هم براتون توضیح می‌دم: توی paxos، پروپوزال در واقع یه پیشنهاده که یه نود (proposer) برای انتخاب شدن یه مقدار می‌فرسته. هر پروپوزال یه شماره‌ی یکتا و صعودی داره که ترتیب و اولویت رو مشخص می‌کنه. نودها (acceptorها) فقط به پروپوزالی جواب مثبت می‌دن که شماره‌ش از همه‌ی شماره‌هایی که قبل‌تر دیدن بزرگ‌تر باشه. این مکانیزم شماره‌گذاری باعث میشه حتی با وجود رقابت چند proposer یا کرش بعضی نودها، در نهایت فقط یه مقدار به عنوان مقدار نهایی انتخاب بشه و خاصیت safety حفظ بشه.


در اینجا خوبه به Byzantine Failure هم اشاره کنم. تا اینجا خطایی که باهاش مواجه بودیم این بود که سیستم کرش کرده یا قابل دسترس نیست ولی پاسخ غلط نمیده ولی مدل خطا ممکنه این باشه که سیستم به خاطر نویز یا هرچیزی پاسخ غلط هم می‌ده. در این حالت الگوریتم‌های دیگه‌ای استفاده میشه و تعداد خطای کمتری رو می‌تونن تحمل کنن. مثلا اگر paxos تا نصف خطا رو تحمل می‌کنه، روش‌هایی که خطای Byzantine رو تحمل می‌کنن نهایتا تا یک سوم خطا رو تحمل میکنن.

https://en.wikipedia.org/wiki/Consensus_(computer_science)
https://en.wikipedia.org/wiki/Two-phase_commit_protocol
https://en.wikipedia.org/wiki/Paxos_(computer_science)
  • 👍 6
  • ❤ 3
  • 🤔 1
More from @terminal_stuff
  1. Sep 23, 2026I am done with this shit Article, Comments
  2. Sep 19, 2026اگه حوصله دارید ببینید به نظرم ایده های جالبی مطرح کرده.
  3. Sep 19, 2026اینو یادم رفته بود اینجا بذارم. یه گپ است در مورد هوش مصنوعی و اینکه چه فرصت هایی رو برای…
  4. Sep 17, 2026از زبون آمار: آیا AI کدهای خوبی می‌نویسه یا نه؟ وقتی تولید کد تقریباً مجانی و خیلی سریع ان…
  5. Sep 17, 2026photo post
  6. Sep 16, 2026یه مدل AI جدید معرفی شده که مطمین نیستم همون Reinforcement Learning خودمونه یا چیز جدیدیه…
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 →