بسیاری از بهترین پلتفرمها برای مدیریت، ذخیرهسازی و تجزیه و تحلیل دادههای جریان، پروژههای منبع باز آپاچی، همراه با پیادهسازی تجاری و ابری آن پروژهها هستند.
دادههای جریانی بهطور مداوم، اغلب توسط هزاران منبع داده، مانند حسگرها یا گزارشهای سرور، تولید میشود. رکوردهای داده های جریانی اغلب کوچک هستند، شاید هر کدام چند کیلوبایت باشد، اما تعداد زیادی از آنها وجود دارد و در بسیاری از موارد جریان بدون توقف ادامه می یابد. در این مقاله، پیشزمینهای ارائه میدهیم و نحوه انتخاب یک پلتفرم داده جریانی را مورد بحث قرار میدهیم.
پلتفرمهای داده جریانی چگونه کار میکنند؟
حذف و صادرات داده. به طور کلی، هر دو انتقال داده و صادرات داده از طریق اتصالات داده انجام میشوند که برای سیستمهای خارجی تخصصی هستند. در برخی موارد یک فرآیند ETL (استخراج، تبدیل و بارگذاری) یا ELT (استخراج، بارگیری و تبدیل) برای مرتب کردن مجدد، تمیز کردن و شرطی کردن داده ها برای مقصد وجود دارد.
مصرف دادههای جریانی اغلب دادههای تولید شده توسط چندین منبع، گاهی اوقات هزاران منبع، مانند دستگاههای IoT (اینترنت اشیا) را میخواند. گاهی اوقات دادهها برای تجزیه و تحلیل عمیق و یادگیری ماشین به انبار داده یا دریاچه داده صادر میشود.
Pub/sub و موضوعات. بسیاری از پلتفرمهای داده جریانی، از جمله Apache Kafka و Apache Pulsar، یک مدل انتشار و اشتراک را با دادههای سازماندهی شده در موضوعات پیادهسازی میکنند. داده های دریافت شده ممکن است با یک یا چند موضوع برچسب گذاری شوند، به طوری که مشتریان مشترک در هر یک از آن موضوعات می توانند داده ها را دریافت کنند. به عنوان مثال، در یک مورد استفاده از انتشار اخبار آنلاین، مقاله ای در مورد سخنرانی یک سیاستمدار ممکن است با عنوان اخبار فوری، اخبار ایالات متحده و سیاست برچسب گذاری شود، به طوری که می تواند در هر یک از آن بخش ها توسط نرم افزار صفحه آرایی تحت نظارت قرار گیرد. ویرایشگر بخش (انسانی).
تجزیه و تحلیل دادهها. پلتفرمهای جریان داده معمولاً فرصتی برای انجام تجزیه و تحلیل در دو نقطه در خط لوله دارند. اولی بخشی از جریان بیدرنگ است و دومی در یک نقطه پایانی پایدار است. به عنوان مثال، Apache Kafka دارای قابلیتهای تحلیلی بیدرنگ ساده در Streams API خود است و همچنین میتواند برای محاسبات بیدرنگ پیچیدهتر، با Apache Samza یا پردازشگر تحلیل دیگری تماس بگیرد. فرصت های بیشتری برای تجزیه و تحلیل و یادگیری ماشینی وجود دارد که داده ها در یک فروشگاه داده دائمی پست شوند. این پردازش میتواند تقریباً همزمان یا یک فرآیند دستهای دورهای باشد.
توابع بدون سرور مانند AWS Lambda ممکن است با جریان های داده برای تجزیه و تحلیل سوابق داده های جریانی با استفاده از برنامه های سفارشی استفاده شود. توابع بدون سرور جایگزینی برای پردازشگرهای تحلیل جریانی مانند Apache Flink هستند.
خوشهبندی. پلتفرمهای جریان داده به ندرت نمونههای منفرد هستند، مگر برای نصبهای توسعه و آزمایش. پلتفرمهای جریان تولید نیاز به مقیاسبندی دارند، بنابراین معمولاً به صورت دستهای از گرهها اجرا میشوند. جدیدترین راه برای اجرای این مورد برای جریان رویداد ابری، روی یک پلت فرم بدون سرور و کشسان مانند Confluent Cloud است.
مورد استفاده از پخش جریانی
فهرست موارد استفاده زیر از اسناد منبع باز کافکا آمده است:
- برای پردازش پرداختها و تراکنشهای مالی در زمان واقعی، مانند بورسها، بانکها و بیمهها.
- برای ردیابی و نظارت بر خودروها، کامیونها، ناوگان و محمولهها در زمان واقعی، مانند لجستیک و صنعت خودرو.
- برای گرفتن و تجزیه و تحلیل مداوم دادههای حسگر از دستگاههای IoT یا سایر تجهیزات، مانند کارخانهها و پارکهای بادی.
- برای جمعآوری و واکنش فوری به تعاملات و سفارشهای مشتری، مانند خردهفروشی، صنعت هتل و سفر، و برنامههای کاربردی تلفن همراه.
- برای نظارت بر بیماران در مراقبتهای بیمارستانی و پیشبینی تغییرات در وضعیت برای اطمینان از درمان به موقع در مواقع اضطراری.
- برای اتصال، ذخیره و در دسترس قرار دادن داده های تولید شده توسط بخش های مختلف یک شرکت.
- بهعنوان پایهای برای پلتفرمهای داده، معماریهای رویداد محور و میکروسرویسها عمل میکند.
کافکا همچنین موارد استفاده مشتری نامگذاری شده را فهرست میکند، برای مثال: نیویورک تایمز از Apache Kafka و Kafka Streams API استفاده می کند برای ذخیره و توزیع محتوای منتشر شده در زمان واقعی در برنامه ها و سیستم های مختلف که آن را در دسترس خوانندگان قرار می دهند.
معیارهای انتخاب پلت فرم داده جریانی
شاخصهای کلیدی عملکرد (KPI) برای پلتفرمهای داده جریانی عبارتند از نرخ رویداد، توان عملیاتی (نرخ رویداد ضربدر اندازه رویداد)، تأخیر، قابلیت اطمینان، و تعداد موضوعات (برای معماریهای pub-sub). مقیاس بندی را می توان با افزودن گره ها در یک هندسه خوشه ای انجام داد، که قابلیت اطمینان را نیز افزایش می دهد. مقیاس گذاری در سیستم عامل های بدون سرور به صورت خودکار انجام می شود. همه پلتفرمهای داده جریانی لزوماً همه KPIهای شما را برآورده نمیکنند.
پشتیبانی از زبان برنامهنویسی مشتری میتواند در میان پلتفرمهای داده جریانی متمایز باشد، زیرا توسعهدهندگان یا مشاوران شما برنامههای مشتری را مینویسند. برای مثال، منبع باز Apache Kafka به طور رسمی به شما امکان می دهد تا Streams API را از جاوا یا اسکالا (هر دو JVM) فراخوانی کنید. زبان ها)، اما یک پروژه انجمنی به نام librdkafka وجود دارد که از زبان های دیگر برای کلاینت ها از جمله C/C++، Go پشتیبانی می کند. ، دات نت و پایتون. Confluent مجموعه باینری های رسمی و امضا شده خود را برای librdkafka نگهداری می کند.
در مقابل، طوفان آپاچی از ابتدا طراحی شد تا با هر زبان برنامه نویسی قابل استفاده باشد، از طریق کامپایلر بین زبانی Apache Thrift. Apache Pulsar از کلاینتها در Java، Go، Python، C++، Node.js، WebSocket و C# پشتیبانی میکند. Amazon Kinesis Streams API از همه زبانهایی که دارای SDK یا CDK هستند پشتیبانی میکند: جاوا، جاوا اسکریپت، .NET، PHP، Python، Ruby، Go، C++، و Swift.
پشتیبانی از اتصال میتواند عامل دیگری باشد. در حالت ایده آل، اتصال دهنده ها برای همه منابع داده شما باید از قبل در دسترس و آزمایش شده باشند. به عنوان مثال، فهرستهای Confluent بیش از ۱۲۰ رابط در دسترس برای کافکا، برخی فقط منبع (مثلاً Splunk)، برخی فقط سینک (مانند Snowflake) و برخی هم سینک و هم منبع (مانند Microsoft SQL Server). لیست Confluent شامل کانکتورهای توسعه یافته توسط جامعه است. اگر نیاز دارید که کانکتورهای کافکا خود را در جاوا بنویسید، میتوانید از Kafka Connect API استفاده کنید. .
هنگام تصمیمگیری برای میزبانی پلتفرم دادههای جریانی، باید مکانهای منابع داده و مخزنهای خود را در نظر بگیرید. به طور کلی، شما می خواهید تاخیر جریان را به حداقل برسانید، که به معنای نگه داشتن اجزا در نزدیکی یکدیگر است. از سوی دیگر، برخی از پلتفرمهای داده جریانی از خوشههای توزیعشده جغرافیایی پشتیبانی میکنند، که میتواند تأخیر منابع دوردست و غرقها را کاهش دهد.
شما همچنین باید قابلیت مدیریت پلتفرم های داده جریانی نامزد خود را در نظر بگیرید. برخی از پلتفرمها به سختی پیکربندی و نگهداری میشوند مگر اینکه در اجرای آنها تخصص داشته باشید. سایرین، به ویژه سرورهای ابری که از نظر تجاری پشتیبانی می شوند، شهرت دارند که مدیریت آنها بسیار آسان است.
پلتفرمها و سرویسهای کلیدی جریان داده
Amazon Kinesis
Amazon Kinesis به شما امکان میدهد دادههای جریانی را در زمان واقعی جمعآوری، پردازش و تجزیه و تحلیل کنید. دارای سه سرویس برای داده ها (جریان های داده، Data Firehose و تجزیه و تحلیل داده ها) و یک سرویس برای رسانه (جریان های ویدیویی). Kinesis Data Streams یک سرویس هضم است که می تواند به طور مداوم گیگابایت داده در ثانیه از هزاران منبع دریافت کند. Kinesis Data Analytics میتواند جریانهای داده را در زمان واقعی با SQL یا Apache Flink پردازش کند. Kinesis Data Firehose میتواند جریانهای داده را برای تجزیه و تحلیل بیدرنگ با ابزارهای هوش تجاری موجود در فروشگاههای داده AWS ضبط، تبدیل و بارگذاری کند. اگر میخواهید به جای استفاده از SQL یا Flink، جریان را با یک برنامه پردازش کنید، میتوانید از توابع بدون سرور AWS Lambda به جای Kinesis Data Analytics استفاده کنید.
Apache Flink
Apache Flink یک چارچوب متن باز، Java/Scala/Python و موتور پردازش توزیع شده برای محاسبات حالت است. جریان های داده نامحدود و محدود. Flink برای اجرا در تمام محیطهای خوشهای رایج و انجام محاسبات با سرعت درون حافظه و در هر مقیاسی طراحی شده است. Flink با مدیران منابع کلاستر معمولی مانند Hadoop YARN، Apache Mesos و Kubernetes ادغام می شود، اما می تواند به عنوان یک خوشه مستقل نیز اجرا شود.
آپاچی کافکا
Apache Kafka یک پلتفرم پخش رویداد منبع باز، جاوا/اسکالا برای خطوط لوله داده با کارایی بالا است. جریان تجزیه و تحلیل، یکپارچه سازی داده ها، و برنامه های کاربردی حیاتی. رویدادهای کافکا سازماندهی می شوند و به طور پایدار در موضوعات ذخیره می شوند. کافکا در ابتدا در LinkedIn توسعه یافت و در حال حاضر اکثریت سهم بازار پخش جریان رویدادها، از جمله نسخه تجاری Confluent را در اختیار دارد.
کافکا دارای پنج API اصلی است:
- Admin API برای مدیریت و بازرسی موضوعات، کارگزاران، و سایر اشیاء کافکا.
- API تولیدکننده برای انتشار (نوشتن) جریانی از رویدادها برای یک یا چند مورد موضوعات کافکا.
- Consumer API برای اشتراک (خواندن) یک یا چند موضوع و پردازش جریان رویدادهایی که برای آنها ایجاد می شود.
- Kafka Streams API برای پیادهسازی برنامههای پردازش جریانی و میکروسرویسها. این توابع سطح بالاتری را برای پردازش جریانهای رویداد، از جمله تبدیلها، عملیات حالتپذیر مانند تجمعها و پیوستنها، پنجرهسازی، پردازش بر اساس زمان رویداد و موارد دیگر ارائه میکند. ورودی از یک یا چند مبحث خوانده می شود تا خروجی به یک یا چند مبحث تولید شود و به طور موثر جریان های ورودی را به جریان های خروجی تبدیل کند.
- Kafka Connect API برای ساخت و اجرای اتصالدهندههای واردات/صادرات قابل استفاده مجدد که مصرف میکنند (خواندن) یا تولید (نوشتن) جریان رویدادها از و به سیستم ها و برنامه های کاربردی خارجی تا بتوانند با کافکا یکپارچه شوند. به عنوان مثال، یک اتصال دهنده به یک پایگاه داده رابطه ای مانند PostgreSQL ممکن است هر تغییری را در مجموعه ای از جداول ثبت کند. با این حال، در عمل، شما معمولاً نیازی به پیادهسازی رابطهای خود ندارید، زیرا جامعه کافکا در حال حاضر صدها کانکتور آماده برای استفاده را ارائه میکند.
Apache Pulsar
Apache Pulsar یک پیامرسان pub-sub توزیعشده با Java/C++/Python منبع باز، بومی ابری است. و پلت فرم استریم Pulsar در ابتدا در یاهو توسعه داده شد. ویژگی های تپ اختر عبارتند از:
- پشتیبانی بومی از چندین خوشه در یک نمونه Pulsar، با یکپارچه تکثیر جغرافیایی پیامها در میان خوشهها.
- تأخیر انتشار بسیار کم و پایان به انتها.
- مقیاسپذیری یکپارچه برای بیش از یک میلیون موضوع.
- یک API مشتری با اتصالهایی برای جاوا، برو، Python< /a> و C++.
- چند حالتهای اشتراک (انحصاری، به اشتراک گذاشته شده، و failover) برای موضوعات.
- تحویل تضمین شده پیام با ارائه ذخیرهسازی دائمی پیام توسط Apache BookKeeper.
- یک چارچوب محاسباتی سبک و بدون سرور، توابع Pulsar، برای استریم بومی پردازش داده ها.
- یک چارچوب اتصال دهنده بدون سرور، Pulsar IO، که بر اساس توابع Pulsar ساخته شده است ، که انتقال داده ها به داخل و خارج از Apache Pulsar را آسان تر می کند.
- ذخیرهسازی طبقهای که دادهها را از فضای ذخیرهسازی گرم/گرم به سرد منتقل میکند. /ذخیرهسازی طولانیمدت (مانند Amazon S3 و Google Cloud Storage) زمانی که دادهها در حال قدیمی شدن هستند.
آپاچی سمزا
Apache Samza یک چارچوب پردازش جریانی منبع باز توزیع شده، Scala/Java است که در ابتدا در LinkedIn توسعه داده شد، در ارتباط با (آپاچی) کافکا. Samza به شما اجازه می دهد تا برنامه های حالت دار بسازید که داده ها را در زمان واقعی از چندین منبع از جمله آپاچی کافکا پردازش می کنند. ویژگی های Samza عبارتند از:
- API یکپارچه: یک API ساده برای توصیف منطق برنامه به روشی مستقل از منبع داده. یک API یکسان میتواند دادههای دستهای و جریانی را پردازش کند.
- قابلیت اتصال در هر سطح: داده ها را از هر منبعی پردازش و تبدیل کنید. Samza ادغام های داخلی را با Apache Kafka، < ارائه می دهد. a href="https://samza.apache.org/learn/documentation/1.6.0/connectors/kinesis.html" rel="nofollow">AWS Kinesis، مرکز رویداد Azure (کافکا بومی Azure به عنوان یک سرویس)، Elasticsearch، و Apache Hadoop. همچنین، ادغام با منابع خود بسیار آسان است.
- Samza به عنوان یک کتابخانه جاسازی شده: با برنامه های کاربردی موجود خود یکپارچه شوید و نیاز به چرخش و راه اندازی یک خوشه جداگانه برای پردازش جریانی را از بین ببرید. Samza را می توان به عنوان یک کتابخانه سرویس گیرنده سبک وزن جاسازی شده در برنامه های جاوا/اسکالا.
- یکبار بنویسید، هرجا اجرا کنید: گزینههای استقرار انعطافپذیر< /a> برای اجرای برنامهها در هر جایی – از ابرهای عمومی گرفته تا محیطهای کانتینری گرفته تا سختافزارهای فلزی خالی.
- Samza به عنوان یک سرویس مدیریت شده: با ادغام با مدیران خوشه محبوب، از جمله Apache YARN.
- تحمل خطا: به طور شفاف وظایف را به همراه وضعیت مرتبط با آنها در صورت خرابی انتقال می دهد. Samza از host-affinity پشتیبانی می کند و ایست بازرسی افزایشی برای فعال کردن بازیابی سریع از شکست.
- Massive scale: در برنامه هایی که از چندین ترابایت حالت استفاده می کنند و بر روی هزاران هسته اجرا می شوند، آزمایش نبرد شده است. Samza قدرتها به چندین شرکت بزرگ از جمله LinkedIn، Uber، TripAdvisor، و Slack.
Apache Spark
Apache Spark یک موتور چند زبانه است که عمدتاً در اسکالا برای اجرای مهندسی داده، علم داده نوشته شده است. و یادگیری ماشین در ماشین ها یا خوشه های تک گره. هم داده های دسته ای و هم داده های جریان لحظه ای را مدیریت می کند. اسپارک در U.C. برکلی و نویسندگان Spark Databricks را تأسیس کردند.
طوفان آپاچی
طوفان آپاچی یک چارچوب محاسباتی پردازش جریان توزیع شده است که عمدتاً در Clojure نوشته شده است. در طوفان، یک جریان یک دنباله نامحدود از تاپل ها است که به صورت موازی به صورت توزیع شده پردازش و ایجاد می شود. یک توپولوژی نموداری از فشارها و پیچ و مهرهها است که با گروهبندی جریان مرتبط هستند. توپولوژی ها منطقی را تعریف می کنند که جریان ها را پردازش می کند. یک فشار منبع جریان در یک توپولوژی است. تمام پردازش ها در توپولوژی ها در پیچ و مهره انجام می شود. Storm با بسیاری از سیستمها و کتابخانههای دیگر، از جمله کافکا، کاساندرا، ردیس و کینزیس ادغام میشود.
پست های مرتبط
نحوه انتخاب یک پلت فرم داده جریانی
نحوه انتخاب یک پلت فرم داده جریانی
نحوه انتخاب یک پلت فرم داده جریانی