پرش به محتوای اصلی
مهندسی داده

پردازش جریان داده بلادرنگ با کافکا

مبانی پردازش جریان رویداد با Apache Kafka؛ معماری موضوع و پارتیشن، تضمین تحویل، پردازش جریان و الگوهای رایج برای داده‌ی بلادرنگ.

تیم مهندسی داده گلدیتا۱۸ آذر ۱۴۰۴۱۲ دقیقه مطالعه

بسیاری از کاربردهای امروزی نمی‌توانند منتظر پردازش دسته‌ای شبانه بمانند. تشخیص تقلب، پایش لحظه‌ای، توصیه‌ی بلادرنگ و واکنش فوری به رویدادها همگی نیازمند پردازش داده در لحظه‌ی وقوع‌اند. Apache Kafka به استاندارد عملی زیرساخت جریان رویداد تبدیل شده است و درک آن برای هر مهندس داده‌ای ضروری است. این مقاله مبانی و الگوهای کلیدی آن را بررسی می‌کند.

کافکا در هسته‌ی خود یک لاگ توزیع‌شده‌ی پایدار و مقیاس‌پذیر است که رویدادها را به ترتیب ثبت می‌کند و به مصرف‌کنندگان متعدد اجازه می‌دهد آن‌ها را با سرعت خود بخوانند. این مدل ساده اما قدرتمند، پایه‌ی معماری‌های رویدادمحور مدرن است.

مفاهیم بنیادی: موضوع، پارتیشن و آفست

داده در کافکا در موضوع‌ها سازمان می‌یابد و هر موضوع به چند پارتیشن تقسیم می‌شود. پارتیشن واحد موازی‌سازی و مقیاس‌پذیری است؛ هر پارتیشن یک دنباله‌ی مرتب و تغییرناپذیر از رویدادهاست. ترتیب تنها درون یک پارتیشن تضمین می‌شود، نه در کل موضوع. هر رویداد یک آفست یکتا دارد و مصرف‌کننده با ردیابی آفست می‌داند تا کجا خوانده است.

  • کلید رویداد تعیین می‌کند رویداد به کدام پارتیشن می‌رود؛ رویدادهای هم‌کلید ترتیبشان حفظ می‌شود.
  • افزایش پارتیشن، توان موازی‌سازی را بالا می‌برد اما تضمین ترتیب سراسری را از بین می‌برد.
  • گروه مصرف‌کننده امکان توزیع بار خواندن میان چند نمونه را با هماهنگی خودکار فراهم می‌کند.

تضمین تحویل و پایداری

کافکا سه سطح تضمین تحویل ارائه می‌دهد: حداکثر یک‌بار، حداقل یک‌بار و دقیقاً یک‌بار. انتخاب میان آن‌ها یک مصالحه‌ی کلاسیک میان عملکرد و دقت است. حداقل یک‌بار رایج‌ترین انتخاب است که ممکن است به تکرار منجر شود، بنابراین مصرف‌کننده باید ایده‌مپوتنت باشد. تضمین دقیقاً یک‌بار قدرتمند اما پرهزینه‌تر است و برای جریان‌های مالی و حساس ارزش دارد.

در سامانه‌های جریان، طراحی برای تکرار رویداد یک گزینه نیست، یک ضرورت است؛ مصرف‌کننده‌ی شما باید ایده‌مپوتنت باشد.

از پیام‌رسانی تا پردازش جریان

کافکا فقط جابه‌جایی رویداد نیست؛ روی آن می‌توان پردازش جریان واقعی انجام داد. کتابخانه‌ها و موتورهای پردازش جریان امکان تبدیل، فیلتر، تجمیع و پیوند جریان‌ها را در لحظه فراهم می‌کنند. مفهوم کلیدی در اینجا پنجره‌بندی زمانی است؛ چون داده‌ی جریانی بی‌پایان است، تجمیع‌ها روی بازه‌های زمانی مانند پنجره‌های غلتان یا کشویی تعریف می‌شوند.

زمان رویداد در برابر زمان پردازش

یک ظرافت مهم در پردازش جریان، تفاوت زمان رویداد یعنی لحظه‌ی وقوع واقعی و زمان پردازش یعنی لحظه‌ی رسیدن به سامانه است. رویدادها می‌توانند با تأخیر یا خارج از ترتیب برسند. سامانه‌ی بالغ باید بر اساس زمان رویداد محاسبه کند و با مکانیزم‌هایی مانند واترمارک، رویدادهای دیررس را به‌درستی مدیریت کند تا نتایج تجمیعی دقیق بمانند.

الگوهای رایج معماری رویدادمحور

کافکا چند الگوی قدرتمند را ممکن می‌کند. در منبع رویداد، حالت سامانه به‌جای ذخیره‌ی مستقیم، به‌صورت دنباله‌ای از رویدادها نگه‌داری می‌شود که امکان بازسازی تاریخ کامل را می‌دهد. در ثبت تغییرات داده، تغییرات پایگاه‌داده به‌صورت جریان رویداد منتشر می‌شوند تا سامانه‌های دیگر بلادرنگ همگام بمانند. این الگوها جداسازی سامانه‌ها و مقیاس‌پذیری بالا را فراهم می‌کنند.

ملاحظات عملیاتی

اجرای کافکا در تولید نیازمند توجه به پایش تأخیر مصرف‌کننده، مدیریت سیاست نگه‌داری داده، تنظیم تعداد پارتیشن متناسب با رشد آینده و طراحی شِمای رویداد با قابلیت تکامل است. تغییر شِما بدون مدیریت می‌تواند مصرف‌کنندگان را بشکند، بنابراین استفاده از یک رجیستری شِما برای حفظ سازگاری اهمیت زیادی دارد.

GoldData Gateway قابلیت اتصال و پردازش جریان بلادرنگ مبتنی بر معماری رویدادمحور را با پایش، تضمین تحویل و مدیریت شِما فراهم می‌کند تا سازمان‌ها بتوانند از داده در لحظه‌ی وقوع ارزش بیافرینند.

آماده‌اید داده را به طلا تبدیل کنید؟

با کارشناسان گلدیتا درباره‌ی نیاز سازمان خود گفت‌وگو کنید؛ از معماری داده تا استقرار هوش مصنوعی، کنار شما هستیم.