یکی از بخش های مهم در میکروسرویس ها Service Registry می باشد که برای مدیریت و پیدا کردن سرویس ها استفاده می شود. به عبارت دیگر به میکروسرویس ها اجازه می دهد که یکدگیر را شناسایی کرده و ارتباط برقرار کنند. همانطور که می دانیم در میکروسرویس ها هر سرویس به صورت مستقل عمل می کند، هر سرویس آدرس های IP و پورت های خود را دارد و این ممکن است به هر دلیلی تغییر کند. با توجه به این موضوع اگر سرویس ها بخواهند به صورت static هم دیگر را پیدا کنند با مشکلات زیادی مواجه می شوند. به زبان ساده تر می توانیم بگوییم که مانند یک دیتابیس مرکزی عمل می کند که در آن اطلاعات سرویس ها ذخیره و استفاده می شود.
نحوه ی عملکرد
ثبت سرویس (Registration): زمانی که یک میکروسرویس در دسترس قرار می گیرد اطلاعات خود را مانند نام IP، PORT و ... در رجیستری ثبت می کند.
پیدا کردن سرویس (Discovery): زمانی که یک میکروسرویس نیاز به سرویس دیگری دارد از سرویس رجیستری برای پیدا کردن آدرس و اطلاعات آن استفاده می کند.
بررسی سلامت سرویسها (Health Check): هر میکروسرویس به صورت دوره ای وضعیت خود را به سرویس رجیستری با اطلاعاتی مانند سالم، غیرفعال و... اطلاع می دهد. همچنین خود سرویس رجیستری نیز می تواند وضعیت سلامت یک سرویس را بررسی کند.
توزیع بار (Load Balancing): همچنین سرویس رجیستری می تواند با استفاده از الگوریتم های مختلف درخواست ها را بین سرویس ها توزیع کند.
بهروزرسانی (Update): اگر به هر دلیلی هرکدام از سرویس ها دچار تغییر شده یا غیر فعال شوند اطلاعات مربوط به آن ها در سرویس رجیستری بروزرسانی می شود.
همچنین دو نوع Discovery اصلی داریم
Server-side Discovery: در این نوع کلاینت درخواست خودش را به Gateway یا Load Balancer ارسال می کند و آن واسط با استفاده از اطلاعات سرویس رجیستری درخواست رو به سرویس مربوط ارسال می کنند.
Client-side Discovery: در اینجا کلاینت به صورت مستقیم درخواستش را به سرویس رجیستری ارسال می کند و آدرس را مستقیم از آن دریافت می کند.
روش های پیاده سازی
DNS-based Implementation: در این پیاده سازی از DNS که به راحتی قابل شناسایی می باشد برای پیدا کردن سرویس ها استفاده می شود. هر سرویس یک domian دارد
Sidecar and Key/Value Store: در این روش یک سرویس جانبی کنار سرویس اصلی اجرا می شود که در آن از یک Key/Value Store مانند Consul برای مدیریت اطلاعات سرویس ها استفاده می شود. چرا Consual؟ چون به طور خاص برای مدیریت تنظیمات و پیدا کردن سرویس ها کاربرد دارد.
Library-based Service Discovery: در این روش نیز از لایبرری هایی مانند Netflix Eureka در اپ استفاده می شود.
در پایان، برای پیاده سازی Service Registry در میکروسرویس ها باید با توجه به شرایط از روش مناسب برای Discovery استفاده کنیم تا بتوانیم بیشترین کارایی را دریافت کنیم.