JavadAgha
JavadAgha
خواندن ۲ دقیقه·۶ ماه پیش

مدل های Pull در مقابل Push در جمع آوری داده های مربوط به Metrics

دو روش برای جمع آوری داده های مربوط به متریک وجود دارد: pull یا push. این که کدام روش بهتر است، بحثی دائمی است و پاسخ روشنی وجود ندارد. در این مقاله ما به مدل pull نگاهی خواهیم انداخت. شکل 1 جمع آوری داده ها با مدل pull روی HTTP را نشان می دهد. ما جمع کننده های اختصاصی معیار داریم که به صورت دوره ای مقادیر معیار را از برنامه های در حال اجرا دریافت می کنند.

در این رویکرد، جمع کننده متریک باید لیست کامل نقاط انتهایی سرویس (service endpoint) را که داده ها از آنها جمع آوری می شود را بداند. یک رویکرد ساده استفاده از یک فایل برای نگهداری اطلاعات DNS/IP برای هر نقطه انتهایی سرویس در سرورهای «جمع کننده متریک (metric collector)» است. در حالی که این ایده ساده است، اما نگهداری از این رویکرد در محیطی با مقیاس بزرگ که سرورها به طور مکرر اضافه یا حذف می شوند تا حدودی دشوار است و ما می خواهیم اطمینان حاصل کنیم که جمع کننده های متریک جمع آوری داده‌های متریک‌ را از سرورهای جدید از دست ندهند.

خبر خوب این است که ما یک راه حل قابل اعتماد، مقیاس پذیر و قابل نگهداری از طریق Service Discovery ارائه شده توسط Kubernetes یا Zookeeper و غیره در اختیار داریم، که در آن سرویس ها میزان در دسترس بودن (availability) خود را ثبت می کنند و هر زمان که لیست نقاط انتهایی سرویس تغییر کند، جمع کننده متریک می تواند توسط مؤلفه کشف سرویس مطلع شود. کشف سرویس شامل قوانین پیکربندی در مورد زمان و مکان جمع آوری معیارها است، همانطور که در شکل 2 نشان داده شده است.

شکل 3 مدل pull را به صورت جزئی توضیح می دهد.

  1. جمع کننده متریک که متادیتای (Metadata) مربوط به پیکربندی نقاط انتهایی سرویس را از
    Service Discovery دریافت می کند. متادیتا شامل فاصله زمانی pull، آدرس های IP، پارامترهای زمان توقف و تلاش مجدد و غیره است.
  2. جمع کننده متریک داده های متریک را از طریق یک نقطه انتهایی HTTP از پیش تعریف شده (برای مثال، /metrics) دریافت می کند. برای در معرض قرار دادن نقطه انتهایی (expose the endpoint)،معمولاً باید یک کتابخانه کلاینت به سرویس اضافه شود. در شکل 3 بیانگر سرویسی از وب سرورها است.
  3. (اختیاری) جمع کننده متریک یک نوتیفیکیشن رویداد (event notification) تغییر را با Service Discovery ثبت می کند تا هر زمان که نقاط انتهایی سرویس تغییر کند، یک به روز رسانی دریافت کند. از طرف دیگر، جمع‌کننده متریک می‌تواند به طور دوره‌ای تغییرات نقطه پایانی (endpoint) را بررسی کند.


metricsمهندسی نرم افزارطراحی سیستم های نرم افزاریdevops
کنجکاو در مباحث مهندسی نرم افزار
شاید از این پست‌ها خوشتان بیاید