سعید حمزه نژاد
سعید حمزه نژاد
خواندن ۳ دقیقه·۴ ماه پیش

پیاده سازی سرویس لایو لوکیشن با قابلیت تحمل ۲۰۰ هزار ریکوست در ثانیه

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


تو مرحله اول این سرویس فقط وظیف رایت کردن و نوشتن دیتا توی دیتابیس رو داره . ما قرار هستش که از ساده ترین سیستم دیزاین و کدنویسی شروع کنیم و با افزایش دادن لود سیستم و ماینتور کردنش، بیایم و این سیستم دیزاین رو تغییرش بدیم و از قابلیت های زبان برنامه نویسی گولنگ مثل کانکارنسی استفاده کنیم تا ببینیم چقدر میتونیم با این تغییرات از هزینه های یک شرکت برای تهیه ریسورس مصرفی مثل سرور رو کاهش بدیم و کاری کنیم که این پروژه مقیاس پذیر بشه ، یعنی بتونه اسکیل کنه و پاسخگوی ۲۰۰ هزار ریکسوت در ثانیه باشه . قطعا ما با یک سرور با ۴ گیگ رم و ۲ کور سی پی یو و یک دیتابیس پستگرس نمیتونیم پاسخگوی این تعداد ریکوست باشیم و باید کاری کنیم که این سرویس مقیاس پذیر باشه و ما در آینده با کمک یکی از شرکت‌ها که قرار هستش اسپانسر ما بشه یک کلاستر کوبر برای تست خودمون خواهیم داشت و اونجا که اوج هیجان ما شروع میشه :)

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

من برای شروع کار یک سرور با سیستم عامل ابونتو، ۴ گیگ رم و دو کور cpu تهیه کردم و روش یه سری ابزار مثل داکر، گرافانا، پروموتیوسو پستگرس رو نصب کردم، بعدش یه سرویس رو با گولنگ پیاده سازی کردم که دیتای لوکیشن رو دریافت میکنه و توی دیتابیس پسترگرس ذخیره میکنه . همزمان یه سرویس دیگه رو هم به عنوان لود تست با گولینگ پیاده سازی کردم که میتونه تا ۲۰۰ هزار ریکوست در ثانیه ایجاد کنه و دیتای مورد نیاز رو سمت سرویس لوکیشن بفرسته اما فعلا تنظیمش کردنم که حداکثر تا ۴۰ ریکوست رو سمت این سرویس بفرسته . با این وجود میبنیم که حدود ۱۳ درصد از ۴ گیگ رم و همچنین حدود ۲۳ درصد از توان cpu با دو کور هسته داره استفاده میشه .ریسپانس تایم هم با حدود ۲.۵ میلیون لوکیشن ایجاد شده روی تقریبا ۲۵۰ میلی ثانیست .

توی قسمت بعدی میریم سراغ نصب ابزارهای مورد نیازمون و شروع کد نویسی و یک تجربه هیجان انگیز.

شما میتونید اموزش ها رو در :


کانال تلگرام : @uncodev

کانال یوتیوب : https://www.youtube.com/@uncodev


دنبال کنید ...

برنامه نویسیسیستم دیزاینمایکروسرویسمیکرو سرویس
مهندس نرم افزار در اسنپ اکسپرس و سابقا در زرین‌پال
شاید از این پست‌ها خوشتان بیاید