معامله توزیع شده چیست؟

ساخت وبلاگ

معامله توزیع شده مجموعه ای از عملیات در مورد داده ها است که در دو یا چند مخزن داده (به ویژه بانکهای اطلاعاتی) انجام می شود. به طور معمول در گره های جداگانه متصل به یک شبکه هماهنگ می شود ، اما ممکن است چندین پایگاه داده نیز در یک سرور واحد قرار بگیرد.

دو نتیجه ممکن وجود دارد: 1) کلیه عملیات با موفقیت انجام می شود ، یا 2) هیچ یک از عملیات به دلیل خرابی در جایی در سیستم ، اصلاً انجام نمی شود. در حالت دوم ، اگر برخی از کارها قبل از شکست به پایان برسد ، این کار برعکس می شود تا اطمینان حاصل شود که هیچ کار خالص انجام نشده است. این نوع عملیات مطابق با اصول "اسید" (اتمی-هماهنگی-کاهش قابلیت مقاومت) از پایگاه داده ها است که یکپارچگی داده ها را تضمین می کند. اسید بیشتر با معاملات در یک سرور پایگاه داده واحد همراه است ، اما معاملات توزیع شده گسترش می یابد که در چندین پایگاه داده تضمین می شود.

عملیاتی که به عنوان "تعهد دو فاز" (2pc) شناخته می شود نوعی معامله توزیع شده است."معاملات XA" معاملات با استفاده از پروتکل XA است که یک اجرای یک عملیات تعهد دو فاز است.

Diagram - Distributed Transactions

معامله توزیع شده دارای چندین پایگاه داده است و یکپارچگی داده ها را تضمین می کند.

معاملات توزیع شده چگونه کار می کنند؟

معاملات توزیع شده دارای همان الزامات تکمیل پردازش مانند معاملات منظم پایگاه داده هستند ، اما آنها باید در چندین منابع مدیریت شوند و آنها را برای اجرای برای توسعه دهندگان پایگاه داده چالش برانگیز تر می کند. منابع متعدد نقاط ضعف بیشتری را اضافه می کنند ، مانند سیستم های نرم افزاری جداگانه که منابع را اجرا می کنند (به عنوان مثال ، نرم افزار پایگاه داده) ، سرورهای سخت افزاری اضافی و خرابی شبکه. این امر باعث می شود معاملات توزیع شده مستعد ناکامی ها باشند ، به همین دلیل باید برای حفظ یکپارچگی داده ها ، حفاظت ها را انجام داد.

برای انجام یک معامله توزیع شده ، مدیران معاملات منابع (یا چندین پایگاه داده یا گره های متعدد یک پایگاه داده واحد) را هماهنگ می کنند. مدیر معامله می تواند یکی از مخازن داده باشد که به عنوان بخشی از معامله به روز می شود ، یا می تواند یک منبع جداگانه کاملاً مستقل باشد که فقط مسئول هماهنگی است. مدیر معامله تصمیم می گیرد که آیا یک معامله موفق را انجام دهد یا یک معامله ناموفق را بازگرداند ، که دومی از آن پایگاه داده را بدون تغییر رها می کند.

اول ، یک برنامه از معامله توزیع شده به مدیر معامله درخواست می کند. مدیر معامله سپس به هر منبع شعبه می کند ، که "مدیر منابع" خود را برای کمک به شرکت در معاملات توزیع شده خواهد داشت. معاملات توزیع شده اغلب در دو مرحله برای محافظت در برابر به روزرسانی های جزئی که ممکن است در هنگام مشاهده یک شکست رخ دهد انجام می شود. مرحله اول شامل تصدیق قصد ارتکاب یا مرحله "آماده سازی برای تعهد" است. پس از تأیید همه منابع ، از آنها خواسته می شود كه تعهد نهایی را اجرا كنند و سپس معامله به پایان رسید.

ما می توانیم یک مثال اساسی از آنچه اتفاق می افتد هنگام عدم موفقیت در هنگام معامله توزیع شده ، بررسی کنیم. بیایید بگوییم که یک یا چند منبع در مرحله آماده سازی به تعهد در دسترس نیست. هنگامی که درخواست از بین می رود ، مدیر معامله به هر منبع می گوید که وضعیت آماده سازی را برای تدوین حذف کند و تمام داده ها به حالت اصلی خود بازنشانی می شوند. اگر در عوض ، هر یک از منابع در مرحله تعهد در دسترس نباشند ، مدیر معامله به منابع دیگری می گوید که با موفقیت بخشی از معامله را برای خنثی کردن یا "بازپرداخت" آن معامله انجام داده اند و یک بار دیگر ، داده ها به آن باز می گردندحالت اصلی. سپس این برنامه برای امتحان مجدد معامله به این برنامه بستگی دارد تا اطمینان حاصل شود که به پایان رسیده است.

چرا به معاملات توزیع شده نیاز دارید؟

معاملات توزیع شده در صورت نیاز به به روزرسانی سریع داده های مرتبط که در چندین پایگاه داده پخش می شود ، ضروری است. به عنوان مثال ، اگر چندین سیستم دارید که اطلاعات مشتری را ردیابی می کنند و باید به روزرسانی جهانی (مانند به روزرسانی آدرس پستی) را در تمام سوابق انجام دهید ، یک معامله توزیع شده اطمینان حاصل می کند که تمام سوابق به روز می شوند. و در صورت بروز خرابی ، داده ها به حالت اصلی خود بازنشانی می شوند ، و برای ارسال مجدد معامله به برنامه اصلی مربوط می شود.

معاملات توزیع شده برای داده های جریان

معاملات توزیع شده به دلیل حجم داده های دریافتی ، امروزه در محیط های جریان داده بسیار مهم هستند. حتی یک شکست کوتاه مدت در یکی از منابع می تواند مقدار زیادی از داده های از دست رفته را نشان دهد. موتورهای پردازش جریان پیشرفته از پردازش "دقیقاً یکپارچه" پشتیبانی می کنند که در آن یک معامله توزیع شده خواندن داده ها را از یک منبع داده ، پردازش و نوشتن داده ها به یک مقصد هدف ("سینک داده") پوشش می دهد. اصطلاح "دقیقاً یکپارچه" به این واقعیت اشاره دارد که هر نقطه داده پردازش می شود و هیچ ضرر و تکثیر وجود ندارد.(این را با "at-most-once" که امکان از بین رفتن داده ها را فراهم می کند ، و "AT Least-once" که امکان تکثیر را فراهم می کند ، تضاد کنید. برای پشتیبانی از ضمانت دقیق یکپارچه. به عبارت دیگر ، باید در آن مخازن عملکردی وجود داشته باشد که به موتور پردازش جریان اجازه می دهد کاملاً از خرابی بهبود یابد ، که لزوماً لازم نیست مدیر معامله واقعی باشد ، اما نتیجه نهایی مشابهی را ارائه می دهد.

Hazelcast Jet نمونه ای از موتور پردازش جریان است که پردازش دقیقا یک بار را با منابع و سینک هایی که ذاتاً توانایی پشتیبانی از معاملات توزیع شده را ندارند ، امکان پذیر می کند. این کار با مدیریت کل حالت هر نقطه داده و خواندن مجدد ، پردازش مجدد و/یا دوباره نوشتن آن انجام می شود اگر نقطه داده مورد نظر با یک شکست روبرو شود. این منطق داخلی اجازه می دهد تا انواع بیشتری از مخازن داده (مانند Apache Kafka و JMS) به عنوان منبع یا سینک در برنامه های جریان مهم تجاری استفاده شود.

هنگامی که معاملات توزیع شده لازم نیست

در بعضی از محیط ها ، معاملات توزیع شده لازم نیست و در عوض ، فعالیت های حسابرسی اضافی برای اطمینان از یکپارچگی داده ها در صورت عدم موفقیت سرعت انجام می شود. انتقال پول در بانک ها مثال خوبی است. هر بانکی که در انتقال پول شرکت می کند وضعیت معامله را ردیابی می کند و هنگامی که یک شکست تشخیص داده می شود ، وضعیت جزئی اصلاح می شود. این فرآیند بدون معاملات توزیع شده به خوبی کار می کند زیرا انتقال لازم نیست در زمان واقعی (نزدیک) اتفاق بیفتد. معاملات توزیع شده به طور معمول در شرایطی که باید به روزرسانی کامل انجام شود بسیار مهم است.

آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید

برچسب : نویسنده : ملیکا زارعی بازدید : 40 تاريخ : شنبه 30 ارديبهشت 1402 ساعت: 12:08