اخبار

استفاده تیم نقشه اسنپ از Vector و Clickhouse در نسخه جدید بخش تحلیل داده‌های قبل از سفر

گزارشی از مقاله "جمع آوری و تحلیل داده های قبل از سفر در تیم نقشه اسنپ"

مقدمه:

اخیرا مقاله‌ای توسط فرزین نصیری در وبلاگ ایشان منتشر شد که در این مقاله به بررسی چالش های جمع آوری و تحلیل داده های قبل از سفر (pre-ride) در تیم نقشه اسنپ می پردازد. حجم زیاد داده ها، پیچیدگی ذاتی آنها و نیاز به حفظ امنیت، از جمله چالش های این فرآیند هستند. در این نوشتار و بعد از توضیح معماری جدید این واحد، بر نقش دو ابزار قدرتمند، Vector و Clickhouse در سیستم جدید جمع آوری و تحلیل داده ها تمرکز شده است.

ضمن تشکر از جناب نصیری بابت به اشتراک گذاشتن این مقاله ارزشمند، در این نوشتار مسایل مطرح شده را از زاویه دید مهندسی داده با هم بررسی میکنیم.

سیستم قبلی:

سیستم قبلی که برای این منظور استفاده می شد، SSP نام داشت و با زبان جاوا نوشته شده بود. این سیستم از Apache Flink برای پردازش داده ها، Logstash برای جابجایی لاگ ها و Elastic Search برای ذخیره سازی داده ها استفاده می کرد. کافکا هم در بخشی از مسیر جابجایی داده، فرآیند انتقال را تسهیل می‌کرد.

لاگ‌استش امروزه بسیار کمتر استفاده می‌شود و خود الستیک‌سرچ ابزارهای جدیدتری را برای انتقال داده‌ها پیشنهاد می‌دهد (Beat ها). از طرفی آپاچی فلینک هم برای پردازش بلادرنگ تک‌رخدادها مورد استفاده میشود و یکی از فناوری‌های به بلوغ رسیده بنیاد آپاچی در حوزه پردازش داده است اما زمانی سراغ آن می رویم که واقعا نیازمند پردازش لحظه‌ای تک‌رخدادها (مثلا درخواست سفر یک مسافر)‌ با انجام مجموعه‌ای از عملیات پردازشی سنگین و پشت سر هستیم. استفاده از آپاچی فلینک هم نیاز به آموزش تیم فنی دارد و هم نگهداری آن، سربار مضاعفی برای نگهداری خط پردازش داده محسوب می شود که تیم نقشه اسنپ در نسخه جدید، آنرا با برنامه‌هایی که به صورت داخلی با GO توسعه داده‌اند جایگزین کردند.

مشکلات سیستم قبلی:

  • سربار و پیچیدگی بالا: به دلیل استفاده از چندین ابزار مختلف، سیستم قبلی بسیار پیچیده بود و نگهداری و توسعه آن دشوار بود.
  • مصرف زیاد منابع: سیستم قبلی به دلیل عدم کارایی، منابع زیادی را مصرف می کرد.
  • عدم مقیاس پذیری مناسب: سیستم قبلی به سختی می توانست با افزایش حجم داده ها مقیاس بندی شود.

راه حل جدید:

سیستم جدید از ابزارهای زیر برای دریافت اطلاعات قبل از سفر و ذخیره و پردازش آنها استفاده می کند:

  • Vector: برای انتقال داده ها به صورت کارآمد و مقیاس پذیر
  • Go: برای توسعه سرویس های پردازش داده
  • Clickhouse: برای ذخیره سازی داده ها به صورت سریع و مقیاس پذیر

مزایای استفاده از Vector:

  • سرعت بالا: Vector می تواند داده ها را با سرعت بسیار بالایی جابجا کند.
  • مقیاس پذیری: Vector به راحتی می تواند با افزایش حجم داده ها مقیاس بندی شود.
  • سادگی: Vector ابزاری ساده و آسان برای استفاده است.
  • قابلیت اطمینان: Vector ابزاری قابل اعتماد و پایدار است.
معماری Vector

مزایای استفاده از Clickhouse:

  • سرعت بالا: Clickhouse می تواند کوئری های پیچیده را با سرعت بسیار بالایی اجرا کند.
  • مقیاس پذیری: Clickhouse به راحتی می تواند با افزایش حجم داده ها مقیاس بندی شود.
  • فشرده سازی داده ها: Clickhouse می تواند داده ها را به طور فشرده ذخیره کند تا فضای ذخیره سازی کمتری اشغال شود.
  • قابلیت اطمینان: Clickhouse ابزاری قابل اعتماد و پایدار است.

مهاجرت:

مهاجرت به سیستم جدید به صورت گام به گام انجام شد و در حال حاضر این سیستم به طور کامل در تیم نقشه اسنپ مورد استفاده قرار می گیرد.

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

نتیجه:

استفاده از Vector و Clickhouse در سیستم جدید جمع آوری و تحلیل داده های قبل از سفر، مزایای قابل توجهی را به ارمغان آورده است، از جمله:

  • کاهش چشمگیر سربار و پیچیدگی
  • کاهش مصرف منابع
  • افزایش مقیاس پذیری
  • افزایش سرعت پردازش داده ها
  • افزایش قابلیت اطمینان

نکات برجسته:

  • استفاده از دو ابزار مدرن و قدرتمند Vector و Clickhouse
  • ایجاد یک خط پردازش داده داخلی بدون استفاده از ابزارهای رایج
  • تمرکز بر مقیاس پذیری، سرعت و reliability
  • مهاجرت گام به گام به سیستم جدید

این مقاله می تواند به عنوان یک الگو برای تیم های دیگر که به دنبال جمع آوری و تحلیل داده های حجیم هستند، مورد استفاده قرار گیرد.

جمع بندی:

این مقاله به طور جامع و دقیق به بررسی چالش ها و راه حل های جمع آوری و تحلیل داده های قبل از سفر در اسنپ می پردازد. تمرکز این مقاله بر نقش دو ابزار Vector و Clickhouse‌و زبان GO در سیستم جدید است. توضیحات ارائه شده در این مقاله می تواند برای مهندسان داده و سایر افراد فعال در این حوزه مفید باشد.

ٰVector.Dev

قبلا در دوره مهندسی داده در بخش ابزارهای ETL این ابزار مفید که هنوز در ابتدای راه بود را معرفی کرده ام. امروزه از این ابزار برای Observability Data یا داده‌های مانیتورینگ زیرساخت استفاده میشود هر چند می‌توان از آن برای خواندن داده‌ها از کافکا و ذخیره آن در انواع دیتابیس‌ها هم استفاده کرد.

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا