آپاچی کافکا که در ابتدا در لینکدین توسعه یافت، یکی از بالغترین پلتفرمها برای پخش رویدادها است. کافکا برای خطوط لوله داده با عملکرد بالا، تجزیه و تحلیل جریان، یکپارچه سازی داده ها و برنامه های کاربردی حیاتی استفاده می شود.
ذخیره همه دادههای شما در یک انبار داده و تجزیه و تحلیل آن با استفاده از یک فرآیند دستهای شبانه، دیگر برای نظارت و مدیریت یک کسبوکار یا فرآیند به موقع کافی نیست. درعوض، شما باید تجزیه و تحلیل بلادرنگ ساده جریان های داده را علاوه بر ذخیره داده ها برای تجزیه و تحلیل عمیق بعدی انجام دهید.
آپاچی کافکا، که در ابتدا در لینکدین توسعه یافت، یکی از بالغترین پلتفرمها برای پخش رویدادها است. موارد کمکی کافکا عبارتند از Apache Flink، Apache Samza، Apache Spark، طوفان آپاچی، Databricks، و Ververica. جایگزین های کافکا عبارتند از Amazon Kinesis، Apache Pulsar، Azure Stream Analytics، Confluent، و Google Cloud Dataflow.
یکی از نکات منفی کافکا این است که راه اندازی خوشه های بزرگ کافکا می تواند مشکل باشد. پیادهسازیهای ابری تجاری کافکا، مانند Confluent Cloud و Amazon Managed Streaming برای Apache Kafka، آن و سایر مشکلات را با قیمتی برطرف میکنند.
آپاچی کافکا تعریف شده
Apache Kafka یک پلت فرم متن باز، جاوا/اسکالا، توزیع شده پخش رویداد برای خطوط لوله داده با عملکرد بالا است. ، تجزیه و تحلیل جریان، یکپارچه سازی داده ها، و برنامه های کاربردی حیاتی. رویدادهای کافکا سازماندهی شده و در موضوعات ذخیره می شوند.
کافکا دارای پنج API اصلی است:
- Admin API برای مدیریت و بازرسی موضوعات، کارگزاران، و سایر اشیاء کافکا.
- API تولیدکننده برای انتشار (نوشتن) جریانی از رویدادها برای یک یا چند مورد موضوعات کافکا.
- Consumer API برای اشتراک (خواندن) یک یا چند موضوع و پردازش جریان رویدادهایی که برای آنها ایجاد می شود.
- Kafka Streams API برای پیادهسازی برنامههای پردازش جریانی و میکروسرویسها. این توابع سطح بالاتری را برای پردازش جریانهای رویداد، از جمله تبدیلها، عملیات حالتپذیر مانند تجمعها و پیوستنها، پنجرهسازی، پردازش بر اساس زمان رویداد و موارد دیگر ارائه میکند. ورودی از یک یا چند مبحث خوانده می شود تا خروجی به یک یا چند مبحث تولید شود و به طور موثر جریان های ورودی را به جریان های خروجی تبدیل کند.
- Kafka Connect API برای ساخت و اجرای اتصالدهندههای واردات/صادرات قابل استفاده مجدد که مصرف میکنند (خواندن) یا تولید (نوشتن) جریانی از رویدادها از و به سیستم ها و برنامه های کاربردی خارجی تا بتوانند با کافکا ادغام شوند. به عنوان مثال، یک اتصال دهنده به یک پایگاه داده رابطه ای مانند PostgreSQL ممکن است هر تغییری را در مجموعه ای از جداول ثبت کند. با این حال، در عمل، شما معمولاً نیازی به پیادهسازی رابطهای خود ندارید، زیرا جامعه کافکا در حال حاضر صدها کانکتور آماده برای استفاده را ارائه میکند.
برای پیادهسازی پردازش جریانی که پیچیدهتر از آن چیزی است که بتوانید به راحتی با Streams API انجام دهید، میتوانید کافکا را با آپاچی سامزا (در زیر بحث شده) یا Apache Flink ادغام کنید.
برای نسخه تجاری پشتیبانی شده از Apache Kafka، Confluent را در نظر بگیرید.
کافکا چگونه کار می کند؟
کافکا یک سیستم توزیعشده متشکل از سرورها و مشتریانی است که از طریق یک پروتکل شبکه TCP با کارایی بالا ارتباط برقرار میکنند. الف>. میتوان آن را بر روی سختافزار فلزی خالی، ماشینهای مجازی، و کانتینرها در محل و همچنین در محیطهای ابری مستقر کرد.
سرورها: کافکا بهعنوان خوشهای از یک یا چند سرور اجرا میشود که میتواند چندین مرکز داده یا منطقه ابری را پوشش دهد. برخی از این سرورها لایه ذخیره سازی را تشکیل می دهند که کارگزار نامیده می شود. سرورهای دیگر Kafka Connect را اجرا میکنند تا بهطور مداوم دادهها را بهعنوان جریان رویداد وارد و صادر کنند تا کافکا با موجود شما یکپارچه شود. سیستم هایی مانند پایگاه های داده رابطه ای و همچنین سایر خوشه های کافکا. برای اینکه بتوانید موارد استفاده حیاتی ماموریت را پیاده سازی کنید، یک خوشه کافکا بسیار مقیاس پذیر و قابل تحمل خطا است. اگر هر یک از سرورهای آن از کار بیفتد، سرورهای دیگر کار آنها را به عهده خواهند گرفت تا از عملکرد مداوم بدون از دست دادن داده اطمینان حاصل کنند.
مشتریان: مشتریان کافکا به شما امکان میدهند برنامههای کاربردی و ریزسرویسهای توزیعشده را بنویسید که جریانهای رویدادها را به صورت موازی، در مقیاس و به شیوهای بدون خطا میخوانند، مینویسند و پردازش میکنند، حتی در مورد مشکلات شبکه یا خرابی ماشین کافکا با تعدادی از مشتریان ارسال میشود که توسط دهها مشتری ارائه شده توسط جامعه کافکا مشتریان کافکا برای جاوا و اسکالا از جمله کتابخانه سطح بالاتر جریان های کافکا و برای Go در دسترس هستند. ، Python، C/C++، و بسیاری از زبان های برنامه نویسی دیگر و همچنین REST API.
Apache Samza چیست؟
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.
کافکا و همجوار
Confluent Platform یک اقتباس تجاری از آپاچی کافکا توسط سازندگان اصلی کافکا است که در محل و در محل ارائه شده است. در ابر. Confluent Cloud از ابتدا به عنوان یک سرور بدون سرور، الاستیک، مقرون به صرفه و کاملاً بازسازی شد. سرویس بومی ابری مدیریت میشود و روی سرویسهای وب آمازون، مایکروسافت آژور و پلتفرم Google Cloud اجرا میشود.
کافکا در ارائه دهندگان عمده خدمات ابری
پخش جریانی مدیریتشده آمازون برای آپاچی کافکا (MSK) با Confluent Cloud و Amazon Kinesis در AWS وجود دارد. هر سه در اصل خدمات یکسانی را انجام می دهند. در Microsoft Azure، Apache Kafka در HDInsight و Confluent Cloud با Azure Event Hubs و Azure Stream Analytics همزیستی دارند. در Google Cloud، Google Cloud Dataflow، Google Cloud Dataproc، Google Cloud Pub/Sub، و Google Cloud BigQuery با Confluent Cloud همزیستی دارند.
نمونه های استفاده از کافکا
Tencent (یک مشتری Confluent) استفاده شده است کافکا برای ایجاد خطوط لوله داده برای ورود گزارش های بین منطقه ای، پلت فرم های یادگیری ماشین، و ارتباطات ناهمزمان بین میکروسرویس ها. Tencent به توان عملیاتی و تأخیر کمتری نسبت به یک خوشه کافکا نیاز داشت، بنابراین خوشه های کافکا خود را در یک لایه پروکسی قرار داد تا یک طرح کافکا فدرال ایجاد کند که بیش از ۱۰ تریلیون پیام در روز را با حداکثر پهنای باند خوشه ۲۴۰ گیگابیت بر عهده دارد. s.
Microsoft Azure یک نمونه اولیه راهحل پردازش دادههای اینترنت اشیا سرتاسر با Confluent Cloud، کارگزاران و رابطهای MQTT، فروشگاه تحلیلی Azure Cosmos DB، Azure Synapse Analytics و Azure Spring Cloud. مقاله ارجاع شده شامل تمام مراحل راه اندازی است.
ACERTUS یک سیستم مدیریت ناوگان خودرو سرتاسر با Confluent Cloud، ksqlDB (پایگاه داده SQL تخصصی برای جریان داده)، AWS Lambda، و یک انبار داده Snowflake. ACERTUS گزارش می دهد که در سال اول بیش از ۱۰ میلیون دلار درآمد از این سیستم ایجاد کرده است، که جایگزین یک سیستم عمدتا دستی شده است.
همانطور که دیدیم، کافکا میتواند مشکلات واقعی و در مقیاس بزرگی را که به دادههای جریانی نیاز دارند، حل کند. در عین حال، راههای زیادی برای طراحی راهحلهای مبتنی بر کافکا و اتصال کافکا با تجزیه و تحلیل و ذخیرهسازی وجود دارد.
پست های مرتبط
آپاچی کافکا چیست؟ جریان رویداد مقیاس پذیر
آپاچی کافکا چیست؟ جریان رویداد مقیاس پذیر
آپاچی کافکا چیست؟ جریان رویداد مقیاس پذیر