آپاچی فلینک چیست؟
آپاچی فلینک یک موتور توزیعشده و متنباز برای پردازش حالتدار روی مجموعههای داده نامحدود (جریانها) و محدود (دستهها) است. برنامههای پردازش جریان به گونهای طراحی شدهاند که به طور مداوم، با حداقل زمان توقف، اجرا شوند و دادهها را به محض ورود پردازش کنند. آپاچی فلینک برای پردازش با تأخیر کم، انجام محاسبات در حافظه، برای دسترسی بالا، حذف نقاط منفرد خرابی و برای مقیاسپذیری افقی طراحی شده است.
ویژگیهای آپاچی فلینک شامل مدیریت پیشرفته حالت با تضمین سازگاری دقیقاً یکبار، معناشناسی پردازش زمان رویداد با مدیریت پیچیده دادههای خارج از ترتیب و تأخیری است. آپاچی فلینک برای جریانمحور بودن توسعه یافته است و یک رابط برنامهنویسی واحد برای پردازش جریان و دستهای ارائه میدهد.
چرا باید از آپاچی فلینک استفاده کنید؟
آپاچی فلینک به دلیل مجموعه گستردهای از ویژگیها، برای ساخت انواع مختلف برنامههای جریان و دستهای استفاده میشود.
برخی از انواع رایج برنامههای کاربردی که توسط آپاچی فلینک پشتیبانی میشوند عبارتند از:
- برنامههای رویدادمحور: رویدادها را از یک یا چند جریان رویداد دریافت میکنند و محاسبات، بهروزرسانیهای حالت یا اقدامات خارجی را اجرا میکنند. پردازش حالتدار امکان پیادهسازی منطقی فراتر از تبدیل پیام واحد را فراهم میکند، جایی که نتایج به تاریخچه رویدادهای دریافتی بستگی دارد.
- برنامههای تحلیل داده: اطلاعات و بینشها را از دادهها استخراج میکنند. به طور سنتی با پرس و جو از مجموعههای داده محدود اجرا میشوند و پرس و جوها را دوباره اجرا میکنند یا نتایج را برای گنجاندن دادههای جدید اصلاح میکنند. با آپاچی فلینک، تجزیه و تحلیل میتواند با بهروزرسانی مداوم، پرس و جوهای جریان یا پردازش رویدادهای دریافتی در زمان واقعی، به طور مداوم نتایج را ارسال و بهروزرسانی کند، اجرا شود.
- برنامههای خطوط لوله داده: دادهها را برای انتقال از یک ذخیرهسازی داده به ذخیرهسازی دیگر تبدیل و غنی میکنند. به طور سنتی، استخراج-تبدیل-بارگذاری (ETL) به صورت دورهای، در دستهها اجرا میشود. با آپاچی فلینک، این فرآیند میتواند به طور مداوم عمل کند و دادهها را با تأخیر کم به مقصد خود منتقل کند.
آپاچی فلینک چگونه کار میکند؟
فلینک یک موتور پردازش جریان با توان عملیاتی بالا و تأخیر کم است. یک برنامه فلینک شامل یک نمودار جریان داده غیر حلقوی پیچیده دلخواه است که از جریانها و تبدیلها تشکیل شده است. دادهها از یک یا چند منبع داده دریافت میشوند و به یک یا چند مقصد ارسال میشوند. سیستمهای منبع و مقصد میتوانند جریانها، صفهای پیام یا ذخیرهگاههای داده باشند و شامل فایلها، پایگاه دادههای محبوب و موتورهای جستجو باشند. تبدیلها میتوانند حالتدار باشند، مانند تجمیعها در پنجرههای زمانی یا تشخیص الگوهای پیچیده.
تحمل خطا توسط دو مکانیسم جداگانه به دست میآید: بررسی دورهای و خودکار حالت برنامه، که به یک ذخیرهسازی دائمی کپی میشود، تا امکان بازیابی خودکار در صورت خرابی فراهم شود. ذخیرهسازیهای درخواستی، ذخیره یک تصویر سازگار از حالت اجرا، برای امکان توقف و از سرگیری، بهروزرسانی یا انشعاب کار فلینک شما، با حفظ حالت برنامه در سراسر توقفها و راهاندازیهای مجدد. مکانیسمهای بررسی و ذخیرهسازی ناهمزمان هستند و یک تصویر ثابت از حالت را بدون “توقف جهان” میگیرند، در حالی که برنامه به پردازش رویدادها ادامه میدهد.
مزایای آپاچی فلینک چیست؟
- پردازش مجموعههای داده نامحدود (جریانها) و محدود (دستهها): آپاچی فلینک میتواند مجموعههای داده نامحدود و محدود، یعنی جریانها و دادههای دستهای را پردازش کند. جریانهای نامحدود شروعی دارند اما عملاً بینهایت هستند و هرگز پایان نمییابند. پردازش به طور نظری هرگز نمیتواند متوقف شود. دادههای محدود، مانند جداول، محدود هستند و میتوانند از ابتدا تا انتها در یک زمان محدود پردازش شوند. آپاچی فلینک الگوریتمها و ساختارهای داده را برای پشتیبانی از پردازش محدود و نامحدود از طریق رابط برنامهنویسی یکسان ارائه میدهد. برنامههایی که دادههای نامحدود را پردازش میکنند به طور مداوم اجرا میشوند. برنامههایی که دادههای محدود را پردازش میکنند، اجرای خود را هنگام رسیدن به انتهای مجموعههای داده ورودی به پایان میرسانند.
- اجرای برنامهها در مقیاس: آپاچی فلینک برای اجرای برنامههای حالتدار تقریباً در هر مقیاسی طراحی شده است. پردازش به هزاران کار موازی تقسیم میشود که بین چندین ماشین به طور همزمان توزیع میشوند. حالت نیز به صورت افقی تقسیم و توزیع میشود و امکان نگهداری چندین ترابایت در چندین ماشین را فراهم میکند. حالت به صورت افزایشی در یک ذخیرهسازی دائمی بررسی میشود.
- عملکرد در حافظه: دادههای جریان یافته از طریق برنامه و حالت بین چندین ماشین تقسیم میشوند. از این رو، محاسبه میتواند با دسترسی به دادههای محلی، اغلب در حافظه، کامل شود.
- سازگاری حالت دقیقاً یکبار: برنامههای فراتر از تبدیل پیام واحد حالتدار هستند. منطق تجاری باید رویدادها یا نتایج میانی را به خاطر بسپارد. آپاچی فلینک سازگاری حالت داخلی را حتی در صورت خرابی و در سراسر توقف و راهاندازی مجدد برنامه تضمین میکند. تأثیر هر پیام بر حالت داخلی همیشه دقیقاً یکبار اعمال میشود، صرف نظر از اینکه برنامه ممکن است هنگام بازیابی یا راهاندازی مجدد، موارد تکراری را از منبع داده دریافت کند.
- محدوده وسیعی از اتصالدهندهها: آپاچی فلینک دارای تعدادی اتصالدهنده اثباتشده به سیستمهای پیامرسانی و جریان محبوب، ذخیرهگاههای داده، موتورهای جستجو و سیستم فایل است. برخی از نمونهها عبارتند از آپاچی کافکا، Amazon Kinesis Data Streams، Amazon SQS، Active MQ، Rabbit MQ، NiFi، OpenSearch و ElasticSearch، DynamoDB، HBase و هر پایگاه دادهای که مشتری JDBC را ارائه میدهد.
- سطوح انتزاع چندگانه: آپاچی فلینک سطوح انتزاع چندگانهای را برای رابط برنامهنویسی ارائه میدهد. از SQL جریان سطح بالاتر و Table API، با استفاده از انتزاعهای آشنا مانند جدول، join و group by. DataStream API سطح انتزاع پایینتری را ارائه میدهد اما کنترل بیشتری نیز دارد، با معناشناسی جریانها، پنجرهبندی و نگاشت. و در نهایت، ProcessFunction API کنترل دقیقی بر پردازش هر پیام و کنترل مستقیم حالت ارائه میدهد. همه رابطهای برنامهنویسی به طور یکپارچه با مجموعههای داده نامحدود (جریانها) و محدود (جداول) کار میکنند. سطوح مختلف انتزاع را میتوان در یک برنامه استفاده کرد، به عنوان ابزار مناسب برای حل هر مشکل.
- زبانهای برنامهنویسی چندگانه: آپاچی فلینک را میتوان با چندین زبان، از SQL جریان سطح بالا گرفته تا پایتون، Scala، جاوا و همچنین سایر زبانهای JVM مانند Kotlin برنامهنویسی کرد.
موارد استفاده از آپاچی فلینک چیست؟
موارد استفاده از آپاچی فلینک شامل موارد زیر است:
- تشخیص تقلب، تشخیص ناهنجاری، هشدار مبتنی بر قانون، شخصیسازی UX در زمان واقعی: نمونههایی از موارد استفاده برای برنامههای رویدادمحور هستند. فلینک برای همه این موارد استفاده که نیاز به پردازش جریانهای رویداد به صورت حالتدار دارند، با در نظر گرفتن تکامل در طول زمان، تشخیص الگوهای پیچیده یا محاسبه آمار در پنجرههای زمانی برای تشخیص انحرافات از آستانههای مورد انتظار، کاملاً مناسب است.
- نظارت بر کیفیت، تحلیل موردی دادههای زنده، تحلیل کلیکاستریم، ارزیابی آزمایش محصول: موارد استفاده از تحلیل جریان هستند که فلینک میتواند به طور کارآمد از آنها پشتیبانی کند. با استفاده از سطح بالای انتزاع رابط برنامهنویسی SQL یا Table API، میتوانید همان تجزیه و تحلیل را هم روی دادههای زنده جریان و هم دستههای دادههای تاریخی اجرا کنید.
- نظارت بر سیستم فایل و نوشتن دادهها در یک گزارش، تحقق یک جریان رویداد در یک پایگاه داده، ساخت تدریجی و اصلاح یک شاخص جستجو: موارد استفادهای هستند که توسط ETL مداوم به طور کارآمد پشتیبانی میشوند. با استفاده از مجموعه گستردهای از اتصالدهندهها، فلینک میتواند مستقیماً از انواع مختلف ذخیرهگاه داده بخواند، جریانهای رویداد تغییر را دریافت کند و حتی تغییرات را مستقیماً ثبت کند. با دریافت و پردازش مداوم تغییرات و بهروزرسانی مستقیم سیستمهای مقصد، فلینک میتواند تأخیر همگامسازی دادهها را به چند ثانیه یا کمتر کاهش دهد.
چه کسی از آپاچی فلینک استفاده میکند؟
- NortonLifeLock: NortonLifeLock یک شرکت جهانی امنیت سایبری و حریم خصوصی اینترنت است که خدماتی را به میلیونها مشتری برای امنیت دستگاه، و حریم خصوصی هویت و آنلاین برای خانه و خانواده ارائه میدهد.
NortonLifeLock یک محصول VPN را به عنوان یک سرویس رایگان به کاربران ارائه میدهد. بنابراین آنها باید محدودیتهای استفاده را در زمان واقعی اجرا کنند تا کاربران رایگان را از استفاده از سرویس زمانی که استفاده آنها بیش از حد مجاز است، متوقف کنند. چالش NortonLifeLock این است که این کار را به روشی قابل اعتماد و مقرون به صرفه انجام دهد.
NortonLifeLock پیادهسازی تجمیع سطح کاربر و دستگاه را با استفاده از آپاچی فلینک ساده کرد.
- Samsung SmartThings: SmartThings به عنوان یک شرکت تابعه مستقل سامسونگ، یکی از экоسیستمهای پیشرو اینترنت اشیا در جهان است و سادهترین راه را برای هر کسی برای ایجاد یک خانه هوشمند ایجاد میکند.
Samsung SmartThings با مشکلاتی مانند رزرو منابع برای برنامههای کاربردی فردی مواجه بود. این امر باعث تأخیر و کاهش عملکرد در هنگام پردازش دادهها شد. در نهایت آنها را به سربار پرهزینه در حفظ بارهای کاری در عملیات سوق داد. آنها مجبور به بازسازی پلتفرم داده شدند.
آنها از آپاچی اسپارک به آپاچی فلینک نقل مکان کردند.
- BT Group: BT Group ارائهدهنده پیشرو مخابرات و شبکه در بریتانیا و ارائهدهنده پیشرو خدمات و راهحلهای ارتباطی جهانی است که به مشتریان در ۱۸۰ کشور خدمات ارائه میدهد. فعالیتهای اصلی آن در بریتانیا شامل ارائه خدمات تلفن ثابت، تلفن همراه، پهنای باند و تلویزیون (از جمله ورزش) و طیف وسیعی از محصولات و خدمات بر روی شبکههای ثابت و سیار همگرا به مشتریان مصرفکننده، تجاری و بخش دولتی است.
BT به یک برنامه نظارت بر سرویس برای پشتیبانی از راهاندازی Digital Voice، محصول جدید مصرفی خود که امکان تماس صوتی با کیفیت بالا را از طریق شبکه پهنای باند بریتانیا فراهم میکند، نیاز داشت.
BT یک سرویس تجزیه و تحلیل رویدادمحور با استفاده از آپاچی فلینک ساخت تا دادههای سرویس را دریافت، پردازش و تجسم کند.
- Autodesk: Autodesk، ارائهدهنده پیشرو نرمافزار طراحی و مهندسی سهبعدی، میخواهد کاری بیش از ایجاد و ارائه نرمافزار انجام دهد. همچنین میخواهد اطمینان حاصل کند که میلیونها کاربر جهانی آن بهترین تجربه را در اجرای آن نرمافزار دارند.
Autodesk نرمافزاری را برای افرادی که چیزهایی میسازند، میسازد. آنها به بیش از ۲۰۰ میلیون مشتری خدمات ارائه میدهند. آنها باید سیلوها را حذف میکردند تا مشکلات مشتری را سریعتر پیدا و برطرف کنند. آنها یک راه ثابت برای جمعآوری و اندازهگیری معیارها با یک تیم عملیاتی کوچک بدون افزایش هزینهها یا ایجاد قفل داده میخواستند.
- NHL: لیگ ملی هاکی دومین لیگ قدیمی از چهار لیگ بزرگ ورزشی حرفهای در آمریکای شمالی است. امروزه، NHL شامل ۳۲ باشگاه عضو است که هر کدام نشان دهنده ترکیب بینالمللی لیگ هستند و بازیکنانی از بیش از ۲۰ کشور در فهرستهای تیم حضور دارند.
NHL با چالشهای فنی متعددی روبرو بود، مانند تعیین ویژگیهای مورد نیاز و روشهای مدلسازی برای پیشبینی رویدادی که مقدار زیادی عدم قطعیت دارد، و تعیین نحوه استفاده از دادههای حسگر PPT جریان برای شناسایی محل وقوع درگیری، بازیکنان درگیر و احتمال برنده شدن هر بازیکن در درگیری، همه در عرض چند صد میلیثانیه.
NHL با استفاده از آپاچی فلینک، نه تنها توانست برنده یک درگیری را پیشبینی کند، بلکه پایهای برای حل تعدادی از مشکلات مشابه به روشی در زمان واقعی و مقرون به صرفه ایجاد کرد.
- Poshmark: Poshmark یک بازار اجتماعی پیشرو برای سبک جدید و دست دوم برای زنان، مردان، کودکان، حیوانات خانگی، خانه و موارد دیگر است. جامعه آنها با بیش از ۸۰ میلیون نفر در سراسر ایالات متحده، کانادا، استرالیا و هند، آینده خرید را به گونهای ساده، اجتماعی و پایدار شکل میدهد.
Poshmark بر دستیابی به رشد برتر از طریق شخصیسازی و بهبود تجربه کاربر متمرکز بوده است. رویکرد اولیه استفاده از پردازش دستهای برای شخصیسازی و امنیت، انتظارات بهبود تجربه مشتری را برآورده نکرد.
Poshmark شخصیسازی در زمان واقعی را با استفاده از غنیسازی دادههای در زمان واقعی با آپاچی فلینک طراحی کرد.