صنایع فناوری طراحان بهینه

Service Broker چیست؟

Service Broker چیست؟

معرفی Service Broker

Service Broker به برنامه نویسان دیتابیس کمک میکند تا برنامه های با قابلیت توسعه پذیری و اعتماد  (Reliable & Scalable)را توسعه  دهند، زیرا Service Broker بخشی از موتور دیتابیس می باشد و مدیریت این برنامه ها بخشی از مدیریت قابلیت های دیتابیس می باشد.



قابلیت های فراهم شده توسط SSSB
  • Queuing and Reliable Messaging
  • Single SQL Server Instances
  • Application that Distribute work across multiple instances

درون یک وهله (Instance) از SQL Server Service Broker یک مدل قدرتمند برنامه نویسی ناهمگام فراهم می کند، برنامه های دیتابیسی معمولا از برنامه نویسی ناهمگام برای کوتاه کردن زمان پاسخ و در نتیجه افزایش توان عملیاتی استفاده می کنند.

هم چنین Service Broker یک تبادل پیام قابل اعتماد (Reliable Messaging) بین Instance های SQL Server برقرار می کند. Service Broker کمک میکند برنامه هایی متشکل از واحد های مستقل و جامع به نام سرویس توسعه دهند. برنامه هایی که نیازمند عملکرد موجود در این سرویس ها هستند از طریق  Message با این سرویس های ارتباط برقرار می کنند.

سرویس بروکر از ارتباطات TCP\IP برای تبادل پیام بین Instance های SQL Server استفاده می کنند. هم چنین Service Broker شامل ویژگی ها و قابلیت هایی است که بتواند از دسترسی غیر مجاز از طریق شبکه به پیام های ارسالی خود با استفاده از رمزنگاری جلوگیری کند.

Service Broker چه کارهایی می تواند انجام دهد؟

Service Broker کمک می کند که برنامه نویسان برنامه های ناهمگام و با وابستگی پایین Loosely Coupled را که در آن کامپوننت های مستقل باهم همکاری می کنند تا یک وظیفه به اتمام برسد را توسعه دهند. این کامپوننت های مستقل پیام های باهم ردو بدل می کنند که حاوی اطلاعاتی برای به اتمام رساندن وظیفه مورد نیاز است. در این بخش موضوعات زیر شرح داده می شود:

  • مکالمات Conversations
  • هماهنگی و مرتب سازی پیام Message Ordering and Coordination
  • برنامه نویسی ناهمگام تراکنشی Transactional asynchronous programming
  • پشتیبانی از برنامه های با وابستگی پایین Support for loosely coupled application
  • اجزای سرویس بروکر Service Broker Components


مکالمات Conversations

سرویس بروکر بر اساس عملکرد پایه ای ارسال پیام طراحی شده است. هر پیام بخشی از یک مکالمه را تشکیل می دهد. هر مکالمه یک کانال قابل اعتماد و مداوم ارتباطی می باشد. هر پیام و مکالمه دارای نوع Type خاص می باشد که Service Broker برای به وجود آمدن برنامه های قابل اعتماد آن را کنترل می کند.

عبارات و دستورات جدید موجود در T-SQL به برنامه ها این اجازه را می دهد که این پیام ها را به صورت قابل اعتماد Reliable ارسال و دریافت کنند. یک برنامه پیام هایی به یک سرویس ارسال می کند که نامی برای یک مجموعه کار های مرتبط به هم می باشد. یک برنامه پیام هایی از طریق یک صف Queue دریافت می کند که یک View از یک جدول داخلی می باشد.

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

امنیت مبتنی بر Certificate کمک می کند از پیام های حساس محافظت کرده و دسترسی به سرویس ها را کنترل کنید. یک قیاس برای Service Broker فکر کردن به یک سرویس پستی می باشد. برای داشتن مکالمه با یک همکار از راه دور می توان از طریق ارسال پیام با سرویس پستی ارتباط داشت. سرویس پستی نامه ها را مرتب کرده و تحویل می دهد و شما و همکارتان نیز نامه ها را از صندوق پستی برداشته و آن را می خوانید و پاسخ آن را از طریق ارسال نامه جدید می فرستید و این کار تا زمانی که مکالمه ادامه دارد تو بسته نشده انجام می شود. تحویل نامه ها به صورت ناهمگام زمانی که شما و همکارتان در حال انجام وظایف دیگر هستید انجام خواهد شد.


Service Broker Structure


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

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

هماهنگی و مرتب سازی پیام ها Message Ordering and Coordination

سرویس بروکر مدیریت صف ها را نیز به عهده دارد، یک تکنیک متداول برنامه نویسی در دیتابیس که از دو جنبه کلیدی با محصولات سنتی متفاوت است:

  • صف های Service Broker با دیتابیس یکپارچه هستند
  • صف ها پیام ها مرتبط را هماهنگ و مرتب سازی می کنند

منظور از صف های یکپارچه یعنی مدیریت منظم بانک شامل مدیریت و نگه داری Service Broker نیز می باشد. به صورت معمول یک مدیر بانک اطلاعاتی هیچ روتین خاصی برای مدیریت دستی وظایف مربوط به Service Broker ندارد.

فریم ورک Service Broker یک اینترفیس ساده T-SQL برای ارسال و دریافت پیام ها به همراه مجموعه ای از ضمانت های محکم برای تحویل و پردازش پیام ارایه می کند. سرویس بروکر تضمین می کند که برنامه کاربردی هر پیام را درون مکالمه دقیقا یک بار و به همان ترتیب ارسال دریافت کند نه به آن ترتیبی که پیام ها درون صف قرار گرفته اند. صف های سنتی پیام ها را به همان ترتیبی که در صف قرار گرفته بود تحویل می دهند که در این حالت نیازمند نگه داری و مرتب سازی و گروه بندی پیام ها توسط برنمه کاربردی میباشیم. هم چنین Service Broker تضمین می کند دو دریافت از صف نتواند به صورت هم زمان از یک مکامله مشابه اتفاق بیفتد یا از گروه مشترک مربوط به مکالمه های مرتبط.

هر مکالمه Service Broker دو طرف دارد. طرف اول که شروع کننده مکالمه است Initiator نامیده می شود و طرف دیگر target نامیده می شود. هر طرف یک سرویس دارد که initiator service and target service هر سرویس نیز یک صف اختصاصی دارد.

گام های زیر تبادل پیام در یک دیالوگ مکالمه متداول اتفاق می افتد:

  • در Initiator
    • برنامه کاربردی مکالمه را شروع می کند
    • برنامه کاربردی یک پیام که حاوی داده مورد نیاز انجام یک وظیفه است را می سازد
    • برنامه کاربردی پیام را برای target service  ارسال می کند
  • در Target
    • یک پیام درون یک صف مربوط به سرویس Target قرار می گیرد
    • برنامه یک پیام از صف دریافت کرده و وظیفه را انجام می دهد
    • برنامه با ارسال پیام به initiator به آن پاسخ می دهد
  • در Initiator
    • پیام پاسخ درون صف مربوطه به Initiator قرار می گیرد
    • برنامه پاسخ را دریافت کرده و آن را پردازش می کند

این چرخه تا زمانی که Initiator مکالمه را خاتمه دهد ادامه دارد زیرا دیگر هیچ درخواستی برای ارسال به Target ندارد.

سرویس بروکر از تنظیمات اولویت Priorities در بازه 10(high) تا 1 (Low)  برای هر مکالمه پشتیبانی می کند این تنظیمات تضمین می کند که صف با اولویت پایین صف با اولویت بالا را بلوکه نکند. سیستم های Service Broker می تواند برای بدست آوردن سطوح مختلف از سرویس ها مورد استفاده قرار گیرد.



برنامه نویسی ناهمگام تراکنشی Transactional asynchronous programming

در زیر ساخت Service Broker تحویل پیام بین برنامه کاربردی به صورت تراکنشی Transactional  و ناهمگام Asynchronous می باشد.  به دلیل تراکنشی بودن ارسال پیام Service Broker در صورتی که یک تراکنش با خطا Rolls Back خاتمه یابد تمام عملیات های انجام شده توسط Service Broker درون آن تراکنش Roll Back میشوند. این عملیات ها حتی شامل ارسال و دریافت پیام ها نیز می شوند. در تحویل ناهمگام موتور اصلی دیتابیس مدیریت تحویل پیام ها را بع عهده دارد درحالی که برنامه به کار خود ادامه می دهد. برای بهبود قابلیت توسعه پذیری، Service Broker مکانیزم هایی برای شروع خودکار فرآینده ها فراهم می کند که صف ها را پردازش کنند زمانی که وظایف مفیدی برای انجام در آنها وجود داشته باشد. برای اطلاعات بیشتر به Service Broker Activation مراجعه کنید.

برنامه نویسی ناهمگام به برنامه نویس برای نوشتن برنامه هایی که از صف استفاده می کنند کمک می کند. صف ها دو مزیت برای برنامه های کاربردی دیتابیس به همراه دارند:

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

پیاده سازی برنامه ای  که آیتم های درون صف را مرتب و پردازش کند بسیار پیچیده است به همین خاطر Service Broker به صورت دورنی شامل قابلیت های عملکردی برای مدیریت و پیاده سازی عملکردهای مورد نیاز برای استفاده از صف ها می باشد.



پشتیبانی از برنامه های با وابستگی پایین Support for loosely coupled application

سرویس بروکر از برنامه های با میزان هم بستگی پایین Loosely Coupled پشتیبانی می کند، برنامه های Loosely Coupled از برنامه های چندگانه تشکلی شده که پیام ها را به صورت مستقل از هم ارسال و دریافت می کنند. چنین برنامه هایی برای تبادل پیام نیاز ندارند که در یک زمان اجرا شوند، یا درون یک Instance اجرا شوند و یا جزییات پیاده سازی را با هم به اشتراک بگذارند.



اجزای سرویس بروکر Service Broker Components

سرویس بروکر شامل سه نوع کامپوننت است:

  • Conversation Components
  • گروه مکالمه و مکالمه ها و پیام ها یک ساختار زمان اجرا برای برنامه کاربردی Service Broker تشکیل می دهند، برنامه کاربردی پیام ها را طی یک مکالمه رد و بدل می کند. هر مکالمه بخشی از تنها یک گروه مکالمه است و یک گروه مکالمه می تواند شامل چندین مکالمه باشد. هر مکالمه Service Broker یک دیالوگ است. هر دیالوگ یک مکالمه است که در آن دقیقا دو طرف با هم پیام تبادل می کنند. برای اطلاعات بیشتر به Conversation Architecture مراجعه کنید

  • Service Definition Components
  • این اجزا مربوط به زمان طراحی هستند که ساختار پایه مکالماتی که برنامه کاربردی مورد استفاده قرار می دهد را مشخص می کند. اینها نوع پیام ها و جریان مکالمات را برای برنامه کاربردی و فضای ذخیره سازی دیتابیس تعیین می کنند. برای اطلاعات بیشتر به Service Architecture . مراجعه کنید.

  • Networking and Security Components
  • این اجزا زیرساخت مورد استفاده برای تبادل پیام بین Instance های موتور دیتابیس را تعیین می کنند. برای کمک به مدیران بانک برای مدیریت و تغییرات، سرویس بروکر قابلیت تغییر این اجزا به صورت مستقل از هم را فرآهم کرده است. برای اطلاعات بیشتر به Networking and Remote Security مراجعه کنید.



    1 نظر ثبت شده
    تشکر بابت مطلب
    توسط سازمان 1 | 11   تیر   1397

    خیلی متن خوبی بود مرسی


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