حتماً با اپلیکیشن مزخرفی بهنام واتساپ کار کردهاید. واتساپ در تیم مزخرف خود، به همکار خوبی مثل شما نیاز دارد تا بهعنوان یک مهندس، بتوانید این اپلیکیشن را بهبود دهید. یکی از مهمترین کارهایی که برای نگهداری و کارایی واتساپ نیاز است، ایجاد چندین سرور و پخش نمودن درخواستهای کاربران میان آنهاست.
برای دانلود پروژهی اولیه روی این لینک کلیک کنید.
سیستم apiها
واتساپ، از قبل ۴ کانتینر برای apiهای خود تدارک دیده که شما از جزئیات apiها کاملاً بیخبر هستید و محتویات این apiها کاملاً محرمانه میباشد. این apiها، در فایل docker-compose.yml
وجود دارند و تنها کاری که شما باید انجام دهید، اضافه کردن یک سیستم لودبالانس بر روی پورت 80
این سیستم، در کنار بقیهی کانتینرها میباشد.
لودبالانس
اضافه کردن یک container در فایل docker-compose.yml
که بر روی پورت 80
سرور فعال باشد و میان ۴ سرویس موجود، عملیات لودبالانس را بهصورت کاملاً مساوی انجام دهد. به این نکته توجه داشته باشید که این لودبالانس میان سرویسها باید کاملاً مساوی اتفاق بیوفتد و تمامی ریکوئستها دقیقاً میان سرویسها بهطور برابر پخش شوند.
فراموش نکنید که تنها میتوانید از ایمیجهای Standard در رجیستری کوئرا استفاده نمایید. فرقی نمیکند با چه ایمیج یا تکنولوژیای این کار را انجام دهید. حتی میتوانید خودتان برنامهای بنویسید که لودبالانس انجام دهد. تنها نکتهی مهم این است که بر روی پورت 80
آن برنامه را اجرا نمایید.
همچنین توجه داشته باشید ممکن است برچسب ایمیج موردنظر شما لزوما :latest
نباشد، برای مثال ایمیج HAProxy
تنها به دو صورت registry.gitlab.com/qio/standard/haproxy:2.5
و registry.gitlab.com/qio/standard/haproxy:2.5-alpine
وجود دارند.
نکتهی مهم
شما اجازهی build کردن ایمیج جدید نخواهید داشت و در صورتی که میخواهید خودتان برنامهای بنویسید که کار لودبالانس را انجام دهد، باید از پوشهی data
که برای ایجاد volume در نظر گرفتیم استفاده کنید و برنامهی خود را به درون کانتینرهای موجود volume کنید. مثلاً برنامهای پایتونی نوشتهاید که در ایمیج پایتون استاندارد کوئرا volume میشود و در entrypoint آن را اجرا میکنید.
ایجاد Volume
در صورتیکه نیاز دارید فایل یا مسیری را به درون هریک از containerها Volume کنید، میتوانید از پوشهای بهنام data
استفاده کنید. و برای ایجاد Volume از Relative Path استفاده کنید. برای مثال:
services:
sample_container:
image: "registry.gitlab.com/qio/standard/someimage:latest"
volumes:
- ./data/somefile:/somefile
فراموش نکنید که فایل somefile
را درون پوشهی data
قرار داده و آن را برای داوری ارسال نمایید. برای مثال، پوشهی ارسالی شما برای داوری کوئرا به شکل زیر میتواند باشد:
.
├── data
│ └── somefile
└── docker-compose.yml
اگر محتوای پوشه data
تان خالی است، میتوانید این پوشه را ارسال نکنید.
توجه: سیستم داوری کوئرا بهصورت خودکار فایل docker-compose.yml
را با کامند up
اجرا میکند. شما نیازی به کد یا اسکریپتی برای اجرای این کار ندارید.
نحوه ارسال پاسخ
شما فقط میتوانید مسیرهای هایلایت شده را تغییر دهید:
.
├── data
│ └── ...
├── docker-compose.yml
└── requirements.txt
در نهایت این پوشه را zip کرده و ارسال کنید. توجه کنید که پس از extract کردن فایل zip شما، باید فایل docker-compose.yml
را ببینیم.
ارسال پاسخ برای این سؤال