بررسی Service Failover در WCF

دوشنبه 17 آبان 1395

در این مقاله با مفهوم WCF Service Failover آشنا می شویم و درباره این موضوع، مطالبی خواهیم آموخت. سپس آن را در یک برنامه پیاده سازی خواهیم کرد.

بررسی Service Failover در WCF

FailOver - به این معنا است که در صورت بروز خطا در سرور اصلی، سرور کمکی به فعالیت خودش ادامه خواهد داد.

Failover

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

در تصویر بالا ، ارتباط کاربر با روتر اصلی را می توانید ببینید. این ارتباط به هیج وجه از وضعیت سرور اصلی/ سرور پشتیبان مطلع نیست. زمانی که روتر، درخواستی از جانب کاربر دریافت می کند، معمولا تلاش می کند آن را بر روی سرور اصلی مورد پردازش قرار بدهد. اگر سرور اصلی به هر دلیلی در دسترس نباشد، روتر تلاش می کند به سرور پشتیبان متصل شود. اگر سرور پشتیبان 1 در دسترس باشد، درخواست پردازش می شود و به سوی کاربر فرستاده می شود، در غیر اینصورت، درخواست به سرور پشتیبان 2 فرستاده می شود تا پاسخ در آن جا به دست بیاید.

در این حال، کاربر نیاز نیست در مورد در دسترس بودن سرور ها نگران باشد. روتر اصلی درخواست را به سمت سرور های پشتیبان هدایت می کند و سپس پاسخ را از آن ها دریافت می کند.(در صورتی که سرور اصلی در دسترس نباشد.)

نیاز به پشتیبان

بیایید با جزئیات در مورد دلایل نیاز به سرور پشتیبان صحبت کنیم.

در دسترس بودن برنامه های Critical

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

روند بارگذاری

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

پیکربندی Routing 

بیایید شکل 1 را در نظر بگیریم تا بر اساس آن ، نحوه پیکربندی مناسب سرور اصلی و پشتیبان را توضیح بدهیم. به عنوان گام اول، Primary Service Library و برنامه میزبان را ایجاد می کنیم. مانند سایر موارد، در Primary Service Library ، می توانید پیاده سازی های مربوط به انتقالات و سرویس ها را انجام بدهید. سپس برنامه میزبان را ایجاد می کنیم و آن را به Primary Service Library متصل می کنیم ، سرویس ، هدف و میزبان آن را نیز تعیین می کنیم. در مثال ما، ما این تنظیمات را به صورت self-hosting پیاده سازی کرده ایم.

Primary Service

در شکل بالا می توانید ببینید که Primary Service   بر روی net.tcp://localhost:8523/PrimaryServiceLib/Service میزبانی شده است. شما باید این تنظیمات را مطابق نیازتان برای سرور های پشتیبان نیز تغییر بدهید.

بعد از این که تنظیمات مربوط به میزبانی سرور ها را انجام دادید، باید Routing Service را تعریف کنیم که پیام ها را به سرویس مناسب بفرستد.

در جدول filter به نام “RoutingInformationTable”، می توانید ببینید که MatchAllFilter برای هدفی به نام “PrimaryService_TCPEndPoint” اعمال شده است. MatchAllFilter برای مسیریابی همه پیام ها از سمت کاربر به PrimaryService_TCPEndpoint استفاده می شود.
شما می توانید مورد دیگری به نام “backuplists” را در المان فیلتر ببینید . اگر  RoutingService متوجه شود که PrimaryService_TCPEndpoint به دلیلی در دسترس نیست، می تواند پیام ها را به مواردی که در BackupServices  تعریف شده اند، بفرستد. اگر سرور پشتیبان 1 در دسترس نباشد، به سراغ سرور پشتیبان دوم می رود و این روند همچنان ادامه پیدا می کند تا زمانی که درخواست به درستی پردازش شود و به سمت کاربر ارسال شود. 

 در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WCF
  • 2k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید