سامانههای پردازش جریان : استورم و هِرون
استورم[۱] ابتدا توسط یکی از مهندسین شرکت BackType، آقای Nathan Marz تولید و توسعه داده شد که پس از خریداری شدن توسط توئیتر، متن باز شده و سپس به بنیاد آپاچی واگذار شد. این پروژه که توسط شرکتهای معتبری مانند یاهو و توئیتر مورد استفاده قرارگرفت، به سرعت به عنوان یک بستر پردازشی بلادرنگ و توزیع شده در دنیا مطرح شد.
از آنجا که استورم، یکی از اولین سامانههای تخصصی برای پردازش جریان در مقیاس کلان بود، به استورم، هدوپ دنیای پردازش جریان هم گفته میشد. در مستندات رسمی استورم، توصیف آن به صورت زیر آمده است :
«استورم پردازش حجم نامحدود دادههای جریانی را به گونهای مطمئن، ممکن میسازد همان کاری که هدوپ برای پردازشهای زمانمند و گروهی انجام میدهد.»
http://storm.apache.org
استورم، در ابتدا با هدف مقیاسپذیری و تحمل خطا ایجاد شد و تضمین کرد که هر رخداد، حتماً یک بار پردازش میشود.
در بستر استورم، با دو مولفه اصلی که ترکیب آنها تشکیل دهنده یک گراف غیر مدور هستند، مواجهیم: گرههای ورودی یا Spout و گرههای پردازشی یا Bolt. به گراف پردازشی که این گرهها را به هم متصل میکند، توپولوژی گفته می شود. هر توپولوژی، به صورت پیشفرض امکان اجرا روی کلاستری از سیستمها را دارد.
دادهها از طریق Spout ها به ترتیب وارد مجموعهای از Bolt ها شده و کارهایی از قبیل تغییر شکل، ذخیره در بانکهای اطلاعاتی، افزوده شدن آمار و مانند آن در این بین انجام میپذیرد.
مثال زیر یک سیستم عملیاتی مبتنی براستورم را برای بررسی لحظهای ترافیک یک شبکه را نشان میدهد که بستههای در حال حرکت در شبکه، از طریق kafka Spout وارد سامانه استورم شده و توسط گرههای مختلف Bolt پردازش و درصورت مشاهده مورد مشکوک، هشدارهای لازم در این چرخه تولید خواهد شد.
توپولوژی استورم گاهاً با کارهای روش کلاسیک توزیع و تجمیع [۲] مقایسه میشود اما تفاوت اصلی و مهم آن این است که یک توپولوژی همواره در حال اجراست مگر اینکه به صورت دستی متوقف شود درصورتیکه در روش پردازش توزیع و تجمیع، براساس درخواست کاربر مجموعه عملیاتی شروع و بعد از مدت زمان لازم برای حصول نتیجه، به پایان میرسد.
خوبی دنیای متنباز[۳] این است که امروزه Spout های زیادی برای اتصال به منابع دادهای مختلف در دسترس است. حتی آداپتورهایی برای اتصال مستقیم به HDFS نیز در دسترس است.
سخن آخر اینکه استورم معمولاً همراه با سایر فناوریهای مانند صف توزیع شده کافکا به کار میرود و البته در تجربه کاری که چند سال پیش با استورم داشتیم، متاسفانه نحوه عیبیابی و اشکالزدایی آن کمی اذیت کننده بود بخصوص زمانی که سیستم به صورت ناگهانی متوقف میشد و دلیل آن را در لاگهای سیستم پیدا نمیکردیم.
به دلیل ساختار قدیمی و مشکلاتی که در استورم وجود داشت، توئیتر این سامانه را که خود توسعه و به بنیاد آپاچی واگذار کرده بود را با چارچوب پردازشی جدیدتری با نام هِرون در سال ۲۰۱۴ جایگزین کرد و تا امروز، توسعههای زیادی روی آن انجام شده است و اتکای توئیتر به عنوان یکی از بزرگترین تولیدکنندگان داده در دنیا به این پروژه که فعلا در مرحله رشد در بنیاد آپاچی است و نسخه اولیه آن هنوز رسما وارد بازار نشده است، امیدبخش آیندهای خوب برای این سامانه است.
مزیت بزرگ هِرون، شباهت زیاد آن با استورم است به گونهای که کدهای قبلی که با استورم نوشته شده است را به راحتی میتوان با هِرون هم اجرا کرد (منبع ).
نقاط قوت این سامانه پردازش جریان نوین را در شکل زیر میتوانید مشاهده کنید :
برای مشاهده نمونه کد اجرایی هِرون به این مقاله میتوانید مراجعه نمایید.
[۱] Apache Storm
[۲] Map/Reduce Jobs
[۳] Open Source