مدل سرویس‌گیرنده-سرویس‌دهنده

مدل خواستیک (مدل کارخواه-کارساز یا مدل کلاینت-سرور) ، یک ساختار رایانش توزیع‌شده است که وظایف یا حجم کار را بین سرویس‌دهنده‌ها که سرور (کارساز) نامیده می‌شوند، و سرویس‌گیرنده‌ها که کارخواه نامیده می‌شوند، تقسیم می‌کند.

یک برنامه کاربردی کارخواه-کارساز (Client-Server) تحت شبکه رایانه‌ای برنامه‌ای است که یک کارخواه را که توسط یک رابط کاربری برنامه شناسایی می‌شود، به یک سرور یا سامانهٔ پایگاه داده متصل می‌کند. هنگامی که یک کارخواه مستقیماً به یک سیستم پایگاه داده، یا یک سرور یکپارچه متصل می‌گردد، معماری برنامه، معماری دولایه‌ای است.

یک معماری کارخواه-کارساز یک معماری شبکه‌ای است که در آن هر رایانه یا پردازش روی شبکه یا یک کارساز است، یا یک کارخواه. سرورها معمولاً رایانه‌های پرقدرت، یا پردازش‌هایی هستند که مختص انجام کار خاصی مانند مدیریت دیسک گردانها (سرور پرونده‌ای)، چاپگرها، مدیریت ترافیک شبکه (سرور شبکه‌ای) (network server)، می‌باشند.

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

در سال‌های اخیر استفاده از یک کارخواه کوچک (thin client) که حاوی منطق کاری نیست، و تنها عناصر رابط کاربری جهت اتصال به یک کارساز کاربردی که منطق کاری روی آن پیاده‌سازی شده باب شده‌است، که به صورت تراگذاری، با یک کارساز پایگاه داده، که اطلاعات بروی آن به صورت خام نگهداری و توسط برنامه کاربردی مورد استفاده قرار می‌گیرد. شبیه به معماری که معماری سه-لایه‌ای (three-tier architecture) معروف است، و یک نوع خاص از معماری n-لایه (n-tier architecture) است.

در کل، معماری‌های n-لایه می‌توانند از تعدادی خدمات مشخص، که شامل روابط تراگذاری بین کارسازهای کاربردی که از پیاده‌سازی منطق کاری متفاوتی نیز استفاده کرده باشند، استفاده کند. هرکدام از آن‌ها می‌توانند از یک پایگاه دادهٔ معین یا مشترک استفاده نمایند.

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

نقش سرویس دهنده- سرویس گیرنده 
مشخصه «سرویس گیرنده-سرویس دهنده» رابطه همکاری بین بخش‌های مختلف را در یک برنامه را توصیف می‌کند. مولفهٔ سرویس دهنده سرور یک عملکرد یا سرویس را به یک یا تعداد زیادی مشتری ارائه می‌دهد، که درخواست‌های چنین سرویس‌هایی را شروع می‌کنند. سرورها بر اساس خدماتی که ارائه می‌دهند طبقه‌بندی می‌شوند. به عنوان مثال، یک وب سرور، صفحات وب و یک سرویس‌دهنده فایل به پرونده‌های رایانه ای سرویس می‌دهد. یک منبع مشترک ممکن است هر یک از نرم‌افزارها و اجزای الکترونیکی رایانه سرور باشد، از برنامه‌ها و داده‌ها گرفته تا پردازنده‌ها و دستگاه‌های ذخیره‌سازی.

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

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

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

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

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

در هر مرحله از این توالی تبادل پیام مشتری-سرور، رایانه ای یک درخواست را پردازش می‌کند و داده را برمی‌گرداند. این الگوی پیام رسانی درخواست پاسخ است. وقتی همه درخواست‌ها برآورده می‌شوند، توالی کامل می‌شود و مرورگر وب داده‌ها را به مشتری.

این مثال الگوی طراحی قابل استفاده برای مدل مشتری-سرور را نشان می‌دهد: تفکیک نگرانی‌ها.

تاریخچه 
شکل اولیه معماری کلاینت سرور ورود شغل از راه دور است، حداقل با OS / 360 (اعلام شده در سال ۱۹۶۴)، جایی که درخواست اجرای یک شغل بود و پاسخ خروجی بود.

دانشمندان کامپیوتر در حال ساخت مدل مشتری - سرور در دهه ۱۹۶۰ و ۱۹۷۰، در ساخت ARPANET (در مؤسسه تحقیقاتی استنفورد) از اصطلاحات میزبان سرور (یا میزبان سرویس دهنده) و میزبان کاربر (یا با استفاده از میزبان) استفاده کردند و اینها ظاهر می‌شوند در اسناد اولیه RFC 5  و RFC 4. این استفاده در زیراکس PARC در اواسط دهه ۱۹۷۰ ادامه داشت.

یکی از زمینه‌هایی که محققان از این اصطلاحات استفاده کردند، در طراحی زبان برنامه‌نویسی شبکه رایانه ای به نام Decode-Encode Language (DEL) بود. هدف این زبان پذیرش دستورات از یک رایانه (میزبان کاربر) بود، که گزارشات وضعیت را به عنوان رمزگذار کردن دستورات در بسته‌های شبکه به کاربر بازمی‌گرداند. یک رایانه دیگر با قابلیت DEL، میزبان سرور، بسته‌ها را دریافت کرده، رمزگشایی کرده و داده‌های قالب بندی شده را به میزبان کاربر بازمی‌گرداند. یک برنامه DEL بر روی کاربر -host نتایج را برای ارائه به کاربر دریافت کرد. این یک معامله سرور مشتری است. توسعه DEL تازه در سال ۱۹۶۹ آغاز شد، سالی که وزارت دفاع ایالات متحده ARPANET (سلف اینترنت) را تأسیس کرد.

سرور-پذیرنده، میزبان پذیرنده 
میزبان مشتری و میزبان سرور کاملاً متفاوت از کلاینت و سرور است. میزبان هر رایانه ای است که به یک شبکه متصل است. در حالی که کلمات سرور و کلاینت ممکن است به کامپیوتر یا به یک برنامه رایانه ای، میزبان سرور و کاربر اشاره داشته باشند - میزبان همیشه به رایانه‌ها مراجعه می‌کند. میزبان یک رایانه چند منظوره و چند منظوره است؛ کلاینت‌ها و سرورها فقط برنامه‌هایی هستند که روی میزبان اجرا می‌شوند. در مدل کلاینت سرور، یک سرور بیشتر به وظیفه سرویس دهی اختصاص دارد.

استفاده اولیه از کلمه مشتری در «جداسازی داده‌ها از عملکرد در سیستم پرونده توزیع شده»، مقاله ۱۹۷۸ توسط دانشمندان کامپیوتر Xerox PARC هوارد استورگیس، جیمز میچل و جی اسرائیل وجود دارد. نویسندگان مراقب هستند که این اصطلاح را برای خوانندگان تعریف کنند، و توضیح دهد که آنها از آن برای تشخیص بین کاربر و گره شبکه کاربر (سرویس گیرنده) استفاده می‌کنند. (تا سال ۱۹۹۲، کلمه سرور به زبان عمومی وارد شده بود)

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

با کاهش قیمت رایانه‌ها و افزایش قدرت آنها از دهه ۱۹۸۰ به اواخر دهه ۱۹۹۰، بسیاری از سازمانها محاسبات را از سرورهای متمرکز مانند رایانه‌های اصلی و مینی کامپیوترها به مشتریهای چربی منتقل کردند. مدیریت پیچیده فناوری اطلاعات. در طول دهه ۲۰۰۰، برنامه‌های وب به اندازه کافی بالغ شدند تا بتوانند با نرم‌افزارهای کاربردی رقیب برای یک معماری معماری خاص رقابت کنند. عواملی که باعث ایجاد روند رایانش ابری در سالهای ۲۰۱۰ شد.

مقایسه با شبکه «همتابه‌همتا» 
علاوه بر مدل سرویس دهنده-سرور، برنامه‌های محاسباتی توزیع شده اغلب از معماری برنامه peer-to-peer (P2P) استفاده می‌کنند.

در مدل سرویس گیرنده - سرور، سرور اغلب به گونه ای طراحی شده‌است که به عنوان یک سیستم متمرکز عمل می‌کند که به بسیاری از سرویس گیرندگان سرویس می‌دهد. توان محاسباتی، حافظه و نیازهای ذخیره‌سازی سرور باید متناسب با حجم کار مورد انتظار مقیاس بندی شود. سیستم‌های تعادل بار و خرابی که معمولاً برای مقیاس گذاری سرور فراتر از یک ماشین فیزیکی استفاده می‌شود.

Load Balancing به صورت توزیع متد و کارآمد شبکه یا ترافیک برنامه در سرورهای متعدد در مزرعه سرور تعریف می‌شود. هر توازن بار بین دستگاه‌های سرویس گیرنده و سرورهای باطن قرار می‌گیرد، درخواست‌های ورودی را به هر سرور موجود که قادر به انجام آنها باشد دریافت و سپس توزیع می‌کند.

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

هر دو سرور سرویس گیرنده و سرویس دهنده به عنوان زیر مجموعه سیستم‌های توزیع شده نظیر به نظیر در نظر گرفته می‌شوند.

جستارهای وابسته 
 سرور
 کارخواه کوچک
 کارخواه بزرگ
 معماری‌های مختلف پایگاه داده‌ها

منابع 

ارتباطات بین پردازشی
پروتکل‌های لایه کاربرد
سرویس‌دهنده‌ها (رایانش)
سرویس‌گیرنده‌ها (رایانش)
معماری شبکه
نرم‌افزارهای موبایل
واژگان عمومی شبکه