مجید
2 سال پیش توسط مجید مطرح شد
2 پاسخ

نحوه ذخیره اطلاعات در میکروسرویس ها

سلام
می خوام بدونم فرآیند ذخیره و بازیابی اطلاعات توی میکروسرویس ها به چه شکله؟
چون در حال مطالعه هستم می خوام یه کانسپت داشته باشم برای همین این سوال رو مطرح کردم.
 تصویر

فرض کنید دوتا میکرو سرویس به این شکل داریم (شاید مثالم درست نباشه فکر کنم برای رسوندن مفهوم کفایت می کنه)
یک سرویس که اطلاعات هر سنسور و کلیه دستگاهای موجود در شبکه رو مدیریت می کنه.
یه سرویس دیگه که اطلاعات دریافتی از هر سنسور رو پردازش و ذخیره می کنه
می خوام بدونم این اطلاعات به همین شکلی که تووی شکل هست ذخیره میشه؟
و اینکه زمانی که بخوایم اطلاعات مثلا 1000 تا سنسور خاص رو از سرویس دیتا بگیریم به چه شکل عمل میشه؟(یه کاربر درخواست میده اطلاعات سنسورها A1 ,B1 ,S85 ,.....)
اگه سنسورها زمانی که دیتا رو میفرستند با Name شناسایی بشن یعنی اطلاعاتی که سرویس دیتا می گیره به صورت زیر باشه:

{
name:A1,
code:85A8
loc:74,
.....
}

موقع ذخیره تووی دیتابیس باید قبلش با استفاده از name ای دی رو از سرویس sensors بگیریم بعد ذخیره کنیم یا راه دیگه ای وجود داره؟فرض کنید ممکن باشه یه نام تکراری باشه .


ثبت پرسش جدید
Banana Life
@shift.delete 2 سال پیش آپدیت شد
0

سلام
-کلیت معماری میکروسرویس ها بر میگرده به مستقل عمل کردن اجزای یک اپلیکیشن یعنی برعکس معماری یکپارچه که در ان اجزای اپلیکیشن به یکدیگر وابسته هستند.
-طبق مثالی که زدید سرویس مدیرت اطلاعات و سرویس دریافت اطلاعات هر کدامش دیتابیس مستقل خودشون را دارند و وقتی عملی صورت بگیرد هیچ سرویس به صورت مستقیم از سرویس دیگه درخواست نمیفرسته بلکه در یک گیت وی gateway یعنی لایه که تمام محاسبات که در ان به دو یا چند سرویس نیازاست را برعهده داره و طرف کلاینت از همین gateway اطلاعات را ارسال و دریافت میکنند. برای گرفتن اطلاعات دیتابیس با id کاربر صورت میگره نه اسم و برای ذخیره اطلاعات هم همین طور با داشتن یه id کاربر ذخیره میشه و وقتی کاربر اون اطلاعات را بعدا خواست همون اطلاعات با id کاربر ست باشه فرستاده میشه.
-در قسمت درخواست های زیاد به یک سرویس معمولا به صورت asynchronous نوبتی در صف انجام میشه که یک زمان را باید بین درخواست ها به وجود بیاریم که سرویس کرش نکنه و همچنین حفظ در خواستی ها.( مثلا استفاده از RabbitMQ).
-یه نمونه ساده API محصول و سفارش با معماری میکروسرویس. (زبان سی شارپ).
https://github.com/MousaAzm/FreakyFashion-MicroServices
سوالی بود بپرسید.


مجید
@majid4073 2 سال پیش آپدیت شد
0

@shift.delete
ولی تاجایی که خوندم میکروسرویس ها با هم تعامل دارند و ارتباط برقرار می کنند البته اکثر مواقع از مسیج بروکرها استفاده میشه
فرض کنید یه API داریم و کاربری اون رو صدا میزنه
اطلاعاتی که کاربر می خواد: اطلاعات سنسورهایی هست که دمای بالای 100 درجه رو ثبت کردن .تووی دیتابیس سرویس دیتا دما و id سنسور وجود داره .تووی سرویس مدیریت سنسورها مشخصات و لوکیشن سنسورها وجود داره (البته این یه مثاله و در عمل باید تووی یه سرویس باشن) .
کاربر API رو فراخوانی میکنه و Gateway اونو میفرسته سمت سرویس دیتا .سوالم اینه بعد از دریافت اطلاعات دماهای بالای 100 خود سرویس دیتا هم باید نام و لوکیشن هر سنسور رو از سرویس اول بگیره .یعنی یه ایونت نیازه که بره اطلاعات رو واکشی کنه و در پاین بده به کاربر؟ یا از طریق دیگه انجام میشه؟
بعضی ها دیدم مسیج بروکرها رو پیشنهاد دادن بعضی ها صرفا API کار کرده بودند یعنی همه سرویسها کلا دستکاری اطلاعات با API ها انجام میشه و هر دیتایی بین میکروسرویس ها از طریق فراخوانی API مورد نیاز بود که یه مسیر رفت و برگشت اضافه داشت

آیا مرسوم هست که Id از دیتابیس یک سرویس تووی جدول یک سرویس دیگه به این شکل ذخیره بشه؟چون اینجوری به هم وابسته هستن.
این ها چجوری مدیریت میشه؟
چون دیگه بحث relationship تووی دیتابیس ها بین دو سرویس برای جلوگیری از درج Id های غیر مرتبط وجود نداره.و باید تووی برنامه مدیریت بشه.
و اگه سنسوری از سرویس اول حذف بشه قاعدتا باید اطلاعات سنسور تووی دیتابیس سرویس دیتا هم باید حذف بشه.
مدیریت اینها به چه شکل میشه ؟ از طریق مسیج بروکرها هست؟
چندتا سوال دیگه اگه ارتباط دوتا سرویس از طریق مسیج بروکرها باشه بحث احراز هویت هم باید انجام بشه ؟
و چطور انجام میشه؟
اگه سرویس Auth وجود داشته باشه از همون استفاده میشه ؟یا از روش دیگه ای
برای این سوالات جواب های مختلفی دیدم صرفا می خوام بدونم دوستانی که تجربه دارند کدوم روش بهتره و چه مزایایی داره؟


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

ورود یا ثبت‌نام