جریان داده در AWS – انجمن DEV

در این پست بررسی می کنیم که جریان داده چیست و نگاهی به سرویس های پخش داده AWS خواهیم داشت.
جریان داده
جریان داده (همچنین به عنوان جریان رویداد شناخته می شود) یک جریان مداوم داده است که توسط هزاران منبع تولید می شود. منابع جریان دادهها میتوانند گزارشهای برنامه، دادههای جریان کلیک از وبسایتها و دستگاههای تلفن همراه، دادههای تلهمتری از دستگاههای IoT، ردیابی مکان همزمان و غیره باشند. سوابق دادههای جریانی معمولاً کوچک و در محدوده بایتها و کیلوبایتها هستند.
با جریان داده، حجم بالایی از داده های با سرعت بالا از منابع مختلف را می توان در زمان واقعی دریافت، پردازش و تجزیه و تحلیل کرد. سرویس جریان داده، داده های ارسال شده از منابع مختلف را جمع آوری می کند، آن ها را برای مدت زمان مشخصی ذخیره می کند، و داده ها را می توان به طور نامحدود برای این مدت بازپخش کرد. چندین برنامه مختلف می توانند به طور همزمان و مستقل داده ها را مصرف کنند.
روش های مختلفی برای پردازش داده های جریانی وجود دارد: پردازش دسته ای و پردازش جریانی. در سیستم های سنتی ابتدا داده ها ذخیره و سپس پردازش می شوند. با خدمات پردازش جریانی، داده ها را می توان در حال مصرف، غنی سازی و تجزیه و تحلیل کرد.
پردازش دسته ای در مقابل پردازش جریانی
سیستم پردازش دسته ای، مجموعه بزرگی از داده ها را به عنوان ورودی می گیرد، کاری را برای پردازش آن اجرا می کند و داده های خروجی را تولید می کند. ورودی محدود است، اندازه شناخته شده و محدودی دارد، به طوری که فرآیند دسته ای می داند چه زمانی خواندن ورودی را به پایان رسانده است. اما در واقعیت، بیشتر دادهها بدون محدودیت هستند زیرا به تدریج در طول زمان میرسند، بنابراین با فرآیند دستهای، دادهها به تکههایی با مدت زمان ثابت تقسیم میشوند، مثلاً در ساعت یا در روز. معمولاً کارهای دستهای برنامهریزی میشوند که به صورت دورهای اجرا شوند، و اغلب مدتی طول میکشد تا کار تکمیل شود، از چند دقیقه تا چند روز. تغییرات در ورودی فقط در خروجی منعکس می شود، ساعت ها یا روزها بعد زمانی که کار کامل می شود. پردازش دسته ای برای تجزیه و تحلیل داده های تاریخی، یادگیری ماشین و غیره مناسب است.
با پردازش جریانی، داده ها به طور مداوم در زمان واقعی پردازش می شوند، حتی قبل از ذخیره شدن. پردازش جریانی مانند پردازش دستهای، دادههای ورودی را مصرف میکند و خروجی تولید میکند، اما این کار را روی رویدادها بلافاصله پس از وقوع انجام میدهد. داده ها را می توان بر اساس رکورد به رکورد یا در پنجره های زمانی کشویی پردازش کرد. پردازش جریان برای برنامه های حساس به زمان در نظر گرفته شده است، جایی که داده ها باید به محض رسیدن پردازش شوند. به تأخیر به ترتیب ثانیه یا میلی ثانیه نیاز دارد. این برای برنامه های معاملاتی بلادرنگ سهام، فیدهای رسانه های اجتماعی، سیستم های هشدار و غیره مناسب است.
هر دو رویکرد حتی می توانند با داشتن یک لایه بلادرنگ و یک لایه دسته ای ترکیب شوند. دادهها ابتدا برای استخراج بینشهای بلادرنگ پردازش میشوند و سپس برای ذخیرهسازی از جایی که میتوانند برای سناریوهای پردازش دستهای مختلف استفاده شوند، باقی میمانند.
خدمات جریان AWS
جریان داده در AWS توسط خانواده خدمات Amazon Kinesis فعال شده است.
Amazon Kinesis Data Stream یک سرویس داده استریم کاملاً مدیریت شده است که جریان های داده را جمع آوری و ذخیره می کند. می تواند به طور مداوم ترابایت داده در ساعت را از صدها هزار منبع گرفته و ذخیره کند. داده ها به ترتیبی که دریافت شده اند ذخیره می شوند و می توانند به طور نامحدود در این مدت پخش شوند. میتوانید برنامههای پردازش جریانی بسازید که دادههای جریانهای Kinesis را با Kinesis Data Analytics، Lambda یا Spark Streaming مصرف میکنند.
Amazon Kinesis Data Firehose جریانهای داده را در فروشگاههای داده AWS مانند S3، Redshift، ElasticSearch و غیره بارگیری میکند. دادههای جریانی را در مقصدهای ذخیرهسازی با مدیریت صفر بارگیری میکند.
Amazon Kinesis Data Analytics تجزیه و تحلیل بلادرنگ در جریان داده را فعال می کند. این امکان را می دهد تا داده ها را به طور مداوم پردازش کنید و در چند ثانیه یا چند دقیقه بینش دریافت کنید.
جزئیات بیشتر در مورد پردازش دسته ای و جریانی را می توان در طراحی برنامه های کاربردی داده فشرده توسط مارتین کلپمن یافت. سناریوها و نمونه های جریان داده را می توان در این Whitepaper AWS یافت.