طراحی سطح پایین (LLD) یک برنامه اشتراک گذاری سواری

Summarize this content to 400 words in Persian Lang
یک برنامه اشتراکگذاری سواری، مانند Uber یا Lyft، شامل سیستمها و فرآیندهای پیچیدهای است که سواران را به طور یکپارچه با رانندگان مرتبط میکند. در این وبلاگ به بررسی این موضوع خواهیم پرداخت طراحی سطح پایین (LLD) یک برنامه اشتراکگذاری سواری برای درک اجزا، تعاملات و اصول طراحی که چنین پلتفرمهایی را نیرو میدهند.
بررسی اجمالی نیازمندیها
الزامات عملکردی:
ثبت نام و ورود کاربر: سواران و رانندگان باید قادر به ثبت نام و ورود به سیستم باشند.
رزرو سوار: سواران باید بتوانند با تعیین محل تحویل و تحویل، یک سفر رزرو کنند.
تطبیق راننده: سیستم باید نزدیکترین راننده موجود را به سوارکار اختصاص دهد.
ردیابی بلادرنگ: سواران باید بتوانند موقعیت مکانی راننده را در زمان واقعی ردیابی کنند.
سیستم پرداخت: سوارکاران می توانند با استفاده از روش های مختلف هزینه سواری خود را پرداخت کنند.
رتبه بندی و نظرات: سواران و رانندگان باید بتوانند یکدیگر را رتبه بندی و بررسی کنند.
الزامات غیر کاربردی:
مقیاس پذیری: سیستم باید تعداد زیادی کاربر را به طور همزمان مدیریت کند.
قابلیت اطمینان: از رزرو و پرداخت دقیق اطمینان حاصل کنید.
تأخیر کم: به روز رسانی بلادرنگ باید سریع و بدون درز باشد.
تحمل خطا: سیستم را به خوبی کنترل کنید.
اجزای کلیدی و مسئولیت های آنها
1. سرویس کاربر
مسئولیت ها:
ثبت نام و احراز هویت کاربر.
پروفایل های کاربر (سواران و رانندگان) را حفظ کنید.
نهادهای کلیدی:
کاربر: حاوی جزئیاتی مانند شناسه کاربری، نام، ایمیل، تلفن، نوع (سوار/راننده) و غیره است.
جزئیات راننده: اطلاعات خودرو، گواهینامه، وضعیت در دسترس بودن.
2. خدمات مدیریت سواری
مسئولیت ها:
به سوارکاران اجازه رزرو سفرها را بدهید.
چرخه عمر یک سواری را حفظ کنید (درخواست، پذیرفته شده، تکمیل شده).
وضعیت های سواری را پیگیری کنید.
نهادهای کلیدی:
سواری: شامل شناسه سواری، شناسه سوار، شناسه راننده، مکان های تحویل و تحویل، وضعیت، کرایه و غیره است.
3. سرویس تطبیق راننده
مسئولیت ها:
با استفاده از داده های موقعیت جغرافیایی، نزدیکترین درایور موجود را شناسایی کنید.
راننده را به سوارکار اختصاص دهید.
الگوریتم های کلیدی:
فرمول هاورسین: فاصله بین دو مکان را با استفاده از طول و عرض جغرافیایی محاسبه کنید.
صف اولویت: برای حفظ نزدیکترین درایورهای موجود که بر اساس فاصله مرتب شده اند.
4. سرویس مکان یابی بلادرنگ
مسئولیت ها:
ردیابی مکان واقعی رانندگان.
موقعیت راننده را در حین سواری با راکب به اشتراک بگذارید.
نهادهای کلیدی:
مکان: شامل شناسه راننده، طول جغرافیایی، طول جغرافیایی، مهر زمانی است.
تکنولوژی:
WebSocket یا MQTT برای به روز رسانی در زمان واقعی.
5. خدمات پرداخت
مسئولیت ها:
کرایه سواری را بر اساس مسافت و زمان محاسبه کنید.
فرآیند پرداخت از طریق روش های مختلف (کارت اعتباری، کیف پول و غیره).
رسیدگی به بازپرداخت و لغو.
نهادهای کلیدی:
پرداخت: شامل شناسه پرداخت، شناسه سواری، مبلغ، وضعیت (موفقیت / ناموفق).
ویژگی های کلیدی:
ادغام با درگاه های پرداخت (به عنوان مثال، Stripe، PayPal).
6. خدمات رتبه بندی و بررسی
مسئولیت ها:
به سواران و رانندگان اجازه دهید تا یکدیگر را ارزیابی و بررسی کنند.
رتبه بندی و بازخورد فروشگاه
نهادهای کلیدی:
رتبه بندی: شامل شناسه سواری، شناسه کاربری، شناسه راننده، امتیاز، نظرات.
7. سرویس اطلاع رسانی
مسئولیت ها:
اعلانها را برای سواران و رانندگان ارسال کنید (مثلاً درخواستهای سواری، بهروزرسانی وضعیت).
تکنولوژی:
اعلانهای فشاری (Firebase Cloud Messaging یا Apple Push Notification Service).
ادغام پیامک و ایمیل
طراحی پایگاه داده
جداول و روابط:
جدول کاربر:
user_id (کلید اصلی)
نام، ایمیل، تلفن، نوع (سوار/راننده) و غیره
جدول جزئیات درایور:
driver_id (کاربر ارجاع دهنده کلید خارجی)
اطلاعات_خودرو، شماره_گواهینامه، وضعیت_در دسترس بودن.
میز سواری:
ride_id (کلید اصلی)
rider_id (کاربر ارجاع دهنده کلید خارجی)
driver_id (کاربر ارجاع دهنده کلید خارجی)
محل_انتقال، مکان_افتاده، کرایه، وضعیت.
جدول مکان:
location_id (کلید اصلی)
driver_id (کاربر ارجاع دهنده کلید خارجی)
طول جغرافیایی، طول جغرافیایی، مهر زمانی
جدول پرداخت:
pay_id (کلید اصلی)
ride_id (سوار ارجاع کلید خارجی)
مبلغ، روش_پرداخت، وضعیت.
جدول رتبه بندی:
rating_id (کلید اصلی)
ride_id (سوار ارجاع کلید خارجی)
user_id، امتیاز، نظرات.
نمودار توالی: رزرو یک سفر
مراحل:
رایدر با وارد کردن مکانهای حمل و نقل، درخواست سواری میکند.
سرویس مدیریت سواری یک درخواست سواری ایجاد می کند.
سرویس تطبیق راننده نزدیکترین راننده موجود را شناسایی کرده و درخواست را ارسال می کند.
راننده سواری را می پذیرد یا رد می کند.
پس از پذیرش، سوار تاییدیه دریافت می کند و ردیابی بلادرنگ آغاز می شود.
پس از اتمام سفر، خدمات پرداخت کرایه را پردازش می کند.
هم راننده و هم راننده می توانند تجربه را ارزیابی و بررسی کنند.
نمودار کلاس
کلاس های کلیدی:
کاربر: ویژگی ها عبارتند از user_id، نام، ایمیل، تلفن، نوع (Rider/Driver).
سوار شوید: ویژگی ها شامل ride_id، rider، driver، pickup_location، dropoff_location، کرایه، status.
راننده: کاربر را با ویژگیهای اضافی مانند خودرو_info، License_number گسترش میدهد.
پرداخت: ویژگی ها عبارتند از payment_id، ride، مقدار، payment_method، status.
مکان: ویژگی ها شامل راننده، طول جغرافیایی، طول جغرافیایی، مهر زمانی است.
رتبه بندی: ویژگی ها عبارتند از سواری، کاربر، امتیاز، نظرات.
پشته تکنولوژیکی
Backend:
Node.js با Express.js برای ساخت API
Frontend:
React.js برای یک تجربه کاربری یکپارچه
پایگاه داده:
MySQL یا PostgreSQL برای ذخیره سازی داده های ساخت یافته
ردیس برای ذخیره مکان های راننده
ارتباط بلادرنگ:
وب سوکت ها یا Firebase برای به روز رسانی مکان
درگاه پرداخت:
ادغام با راه راه، پی پال، یا خدمات مشابه
چالش ها و راه حل ها
مقیاس پذیری:
از یک معماری میکروسرویس برای مقیاس بندی اجزای جداگانه به طور مستقل استفاده کنید.
به روز رسانی در زمان واقعی:
از WebSockets یا MQTT برای کاهش تأخیر ردیابی زنده استفاده کنید.
درایور در دسترس بودن:
پیاده سازی یک سیستم صف برای مدیریت موثر درخواست های راننده.
تحمل خطای سیستم:
از تلاشهای مجدد و مکانیسمهای بازگشتی برای عملیات حیاتی (مثلاً پردازش پرداخت) اطمینان حاصل کنید.
یک برنامه اشتراکگذاری سواری، مانند Uber یا Lyft، شامل سیستمها و فرآیندهای پیچیدهای است که سواران را به طور یکپارچه با رانندگان مرتبط میکند. در این وبلاگ به بررسی این موضوع خواهیم پرداخت طراحی سطح پایین (LLD) یک برنامه اشتراکگذاری سواری برای درک اجزا، تعاملات و اصول طراحی که چنین پلتفرمهایی را نیرو میدهند.
بررسی اجمالی نیازمندیها
الزامات عملکردی:
- ثبت نام و ورود کاربر: سواران و رانندگان باید قادر به ثبت نام و ورود به سیستم باشند.
- رزرو سوار: سواران باید بتوانند با تعیین محل تحویل و تحویل، یک سفر رزرو کنند.
- تطبیق راننده: سیستم باید نزدیکترین راننده موجود را به سوارکار اختصاص دهد.
- ردیابی بلادرنگ: سواران باید بتوانند موقعیت مکانی راننده را در زمان واقعی ردیابی کنند.
- سیستم پرداخت: سوارکاران می توانند با استفاده از روش های مختلف هزینه سواری خود را پرداخت کنند.
- رتبه بندی و نظرات: سواران و رانندگان باید بتوانند یکدیگر را رتبه بندی و بررسی کنند.
الزامات غیر کاربردی:
- مقیاس پذیری: سیستم باید تعداد زیادی کاربر را به طور همزمان مدیریت کند.
- قابلیت اطمینان: از رزرو و پرداخت دقیق اطمینان حاصل کنید.
- تأخیر کم: به روز رسانی بلادرنگ باید سریع و بدون درز باشد.
- تحمل خطا: سیستم را به خوبی کنترل کنید.
اجزای کلیدی و مسئولیت های آنها
1. سرویس کاربر
-
مسئولیت ها:
- ثبت نام و احراز هویت کاربر.
- پروفایل های کاربر (سواران و رانندگان) را حفظ کنید.
-
نهادهای کلیدی:
- کاربر: حاوی جزئیاتی مانند شناسه کاربری، نام، ایمیل، تلفن، نوع (سوار/راننده) و غیره است.
- جزئیات راننده: اطلاعات خودرو، گواهینامه، وضعیت در دسترس بودن.
2. خدمات مدیریت سواری
-
مسئولیت ها:
- به سوارکاران اجازه رزرو سفرها را بدهید.
- چرخه عمر یک سواری را حفظ کنید (درخواست، پذیرفته شده، تکمیل شده).
- وضعیت های سواری را پیگیری کنید.
-
نهادهای کلیدی:
- سواری: شامل شناسه سواری، شناسه سوار، شناسه راننده، مکان های تحویل و تحویل، وضعیت، کرایه و غیره است.
3. سرویس تطبیق راننده
-
مسئولیت ها:
- با استفاده از داده های موقعیت جغرافیایی، نزدیکترین درایور موجود را شناسایی کنید.
- راننده را به سوارکار اختصاص دهید.
-
الگوریتم های کلیدی:
- فرمول هاورسین: فاصله بین دو مکان را با استفاده از طول و عرض جغرافیایی محاسبه کنید.
- صف اولویت: برای حفظ نزدیکترین درایورهای موجود که بر اساس فاصله مرتب شده اند.
4. سرویس مکان یابی بلادرنگ
-
مسئولیت ها:
- ردیابی مکان واقعی رانندگان.
- موقعیت راننده را در حین سواری با راکب به اشتراک بگذارید.
-
نهادهای کلیدی:
- مکان: شامل شناسه راننده، طول جغرافیایی، طول جغرافیایی، مهر زمانی است.
-
تکنولوژی:
- WebSocket یا MQTT برای به روز رسانی در زمان واقعی.
5. خدمات پرداخت
-
مسئولیت ها:
- کرایه سواری را بر اساس مسافت و زمان محاسبه کنید.
- فرآیند پرداخت از طریق روش های مختلف (کارت اعتباری، کیف پول و غیره).
- رسیدگی به بازپرداخت و لغو.
-
نهادهای کلیدی:
- پرداخت: شامل شناسه پرداخت، شناسه سواری، مبلغ، وضعیت (موفقیت / ناموفق).
-
ویژگی های کلیدی:
- ادغام با درگاه های پرداخت (به عنوان مثال، Stripe، PayPal).
6. خدمات رتبه بندی و بررسی
-
مسئولیت ها:
- به سواران و رانندگان اجازه دهید تا یکدیگر را ارزیابی و بررسی کنند.
- رتبه بندی و بازخورد فروشگاه
-
نهادهای کلیدی:
- رتبه بندی: شامل شناسه سواری، شناسه کاربری، شناسه راننده، امتیاز، نظرات.
7. سرویس اطلاع رسانی
-
مسئولیت ها:
- اعلانها را برای سواران و رانندگان ارسال کنید (مثلاً درخواستهای سواری، بهروزرسانی وضعیت).
-
تکنولوژی:
- اعلانهای فشاری (Firebase Cloud Messaging یا Apple Push Notification Service).
- ادغام پیامک و ایمیل
طراحی پایگاه داده
جداول و روابط:
-
جدول کاربر:
- user_id (کلید اصلی)
- نام، ایمیل، تلفن، نوع (سوار/راننده) و غیره
-
جدول جزئیات درایور:
- driver_id (کاربر ارجاع دهنده کلید خارجی)
- اطلاعات_خودرو، شماره_گواهینامه، وضعیت_در دسترس بودن.
-
میز سواری:
- ride_id (کلید اصلی)
- rider_id (کاربر ارجاع دهنده کلید خارجی)
- driver_id (کاربر ارجاع دهنده کلید خارجی)
- محل_انتقال، مکان_افتاده، کرایه، وضعیت.
-
جدول مکان:
- location_id (کلید اصلی)
- driver_id (کاربر ارجاع دهنده کلید خارجی)
- طول جغرافیایی، طول جغرافیایی، مهر زمانی
-
جدول پرداخت:
- pay_id (کلید اصلی)
- ride_id (سوار ارجاع کلید خارجی)
- مبلغ، روش_پرداخت، وضعیت.
-
جدول رتبه بندی:
- rating_id (کلید اصلی)
- ride_id (سوار ارجاع کلید خارجی)
- user_id، امتیاز، نظرات.
نمودار توالی: رزرو یک سفر
مراحل:
- رایدر با وارد کردن مکانهای حمل و نقل، درخواست سواری میکند.
- سرویس مدیریت سواری یک درخواست سواری ایجاد می کند.
- سرویس تطبیق راننده نزدیکترین راننده موجود را شناسایی کرده و درخواست را ارسال می کند.
- راننده سواری را می پذیرد یا رد می کند.
- پس از پذیرش، سوار تاییدیه دریافت می کند و ردیابی بلادرنگ آغاز می شود.
- پس از اتمام سفر، خدمات پرداخت کرایه را پردازش می کند.
- هم راننده و هم راننده می توانند تجربه را ارزیابی و بررسی کنند.
نمودار کلاس
کلاس های کلیدی:
- کاربر: ویژگی ها عبارتند از user_id، نام، ایمیل، تلفن، نوع (Rider/Driver).
- سوار شوید: ویژگی ها شامل ride_id، rider، driver، pickup_location، dropoff_location، کرایه، status.
- راننده: کاربر را با ویژگیهای اضافی مانند خودرو_info، License_number گسترش میدهد.
- پرداخت: ویژگی ها عبارتند از payment_id، ride، مقدار، payment_method، status.
- مکان: ویژگی ها شامل راننده، طول جغرافیایی، طول جغرافیایی، مهر زمانی است.
- رتبه بندی: ویژگی ها عبارتند از سواری، کاربر، امتیاز، نظرات.
پشته تکنولوژیکی
Backend:
- Node.js با Express.js برای ساخت API
Frontend:
- React.js برای یک تجربه کاربری یکپارچه
پایگاه داده:
- MySQL یا PostgreSQL برای ذخیره سازی داده های ساخت یافته
- ردیس برای ذخیره مکان های راننده
ارتباط بلادرنگ:
- وب سوکت ها یا Firebase برای به روز رسانی مکان
درگاه پرداخت:
- ادغام با راه راه، پی پال، یا خدمات مشابه
چالش ها و راه حل ها
-
مقیاس پذیری:
- از یک معماری میکروسرویس برای مقیاس بندی اجزای جداگانه به طور مستقل استفاده کنید.
-
به روز رسانی در زمان واقعی:
- از WebSockets یا MQTT برای کاهش تأخیر ردیابی زنده استفاده کنید.
-
درایور در دسترس بودن:
- پیاده سازی یک سیستم صف برای مدیریت موثر درخواست های راننده.
-
تحمل خطای سیستم:
- از تلاشهای مجدد و مکانیسمهای بازگشتی برای عملیات حیاتی (مثلاً پردازش پرداخت) اطمینان حاصل کنید.