Namespace و Storage Model
در این بخش سعی میکنیم برخی قسمتها مثل Namespace و Storage Model رو برای شما توضیح بدهیم تا با ساختار و نحوه پیاده سازی این مفاهیم بر روی فندق آشنا شوید.
Namespace
هر Namespace یک فضای مجازی بر روی ابر فندق است. سرویسهای شما بر روی Namespaceای که خود شما موقع ثبت نام، نام آن را مشخص کردهاید اجرا میشوند. سرویسهای یک Namespace از طریق شبکه داخلی میتوانند به یکدیگر دسترسی داشته باشند.
همچنین هر Namespace فضاهای ذخیرهسازی )Storage( مختص به خود را دارد که فقط سرویسهایی که در آن Namespace در حال اجرا هستند به آنها دسترسی دارند.
در حال حاضر برای هر کاربر پس از عضویت به طور خودکار یک Namespace با نامی که زمان ثبت نام مشخص کرده ایجاد میشود.
Network
هر Namespace میزبان تعدادی سرویس است که کاربر آنها را ساخته است. هر سرویس دارای یک آدرس IP
و یک service_name
است.
برای درک بهتر موضوع به تصویر زیر توجه کنید.
همانگونه که مشاهده می کنید در این Namespace تعداد 4 سرویس ساخته شده است و فندق به هر سرویس ایجاد شده یک IP اختصاص داده و همینطور هر سرویس دارای مشخصه دیگری به نام service_name
است.
مشخصه اصلی برای آنکه سرویسها همدیگر را پیدا کنند و با هم تعامل داشته باشند service_name
است، زیرا که اگر تحت هر شرایطی یکی از سرویسها Redeploy شود، IP جدیدی به آن تخصیص داده خواهد شد.
برای مثال اگر فرض کنیم سرویس SVC1 با SVC2 در تعامل بوده ولی بعد از مدتی
نسخه جدیدی از سرویس SVC2 بر روی فندق deploy شده باشد، سرویس SVC1 با پرس و جو از DNS میتواند IP جدید سرویس مورد نظر را پیدا کند و به تعامل ادامه دهد.
DNS
همانطور که میدانیم هر وبسایت و یا وبسرویس در فضای اینترنت دارای یک شناسه با نام IP است، اما از آنجایی که بخاطر سپردن این IP Addressها دشوار است، از سرویسی به نام DNS یا Domain Name System استفاده میشود، این سرویس وظیفه ترجمه نامها به IP منتسب شده به آن را بر عهده دارد.
در فندق نیز هر Namespace دارای DNS Server مختص به خود است که وظیفه ترجمه نام سرویسها به IP سرویس را بر عهده دارد.
Storage
همانطور که انتظار میرود هر سرویس باید بتواند در فضایی مانا اطلاعات خود را ذخیره و بازیابی کند، به همین جهت هر Namepace به همراه یک فضای ذخیره و بازیابی اطلاعاتی ساخته میشود.
به صورت پیش فرض همه سرویسها به این فضای اطلاعاتی دسترسی دارند و میتوانند عملیات Read و Write بر روی آن انجام دهند.
نکته
توجه داشته باشید هر Container دارای یک فضای Storage داخلی است اما استفاده از آن توصیه نمیشود زیرا که این فضا مانا نیست و هر بار که Container از بین برود، اطلاعات شما هم به همراه آن Container از بین میرود.