کافکا و Spark Streaming؛ درسهای پنج سال در پروداکشن
خلاصهٔ کاملتر
نویسندهای که پنج سال کافکا و Spark Structured Streaming را در پروداکشن (نه دمو) برای پردازش ادعاهای بیمه، تلهمتری تولید و تراکنش مالی با SLA و الزامات انطباق اجرا کرده، تفاوت نسخهی شیکاماشکننده با نسخهی زشتتراماقابلاتکا را توضیح میده.
اولین درس، چکپوینت است: برای هر جاب استریمینگ که نیاز به بازیابی داره غیرقابلچشمپوشیه، اما چکپوینت روی دیسک محلی یعنی جاب فقط از ریاستارت پروسه بازیابی میشه نه از خرابی نود. محل چکپوینت باید از روز اول روی ذخیرهسازی پایدار مشترک (مثل ADLS Gen2) باشه. چکپوینت آفستهای کافکا و state store را نگه میداره؛ حذف دستی آن یا تغییر نام کوئری، آفست مصرفکننده را ریست میکنه.
درس دوم، اندازهی micro-batch: بازهی trigger را طوری انتخاب کن که فایلهای خروجی Delta در محدودهی ۵۰ تا ۵۰۰ مگابایت بشن؛ فایلهای خیلی کوچک بدهی compaction میسازن و خیلی بزرگ فشار حافظه. مثلاً برای تلهمتری از trigger ۳۰ثانیهای استفاده میکنن:
telemetry_query = df.writeStream \
.trigger(processingTime="30 seconds") \
.format("delta") \
.option("checkpointLocation", checkpoint_path) \
.start(output_path)دربارهی پارتیشن و موازیسازی: هر پارتیشن کافکا با یک تسک Spark در هر micro-batch مصرف میشه؛ اگه پردازش downstream سنگینتره با repartition() موازیسازی را بالا ببر، و اگه topic مثلاً ۲۰۰ پارتیشن داره ولی کلاستر ۳۲ هسته، با سربار context switching روبهرو میشی. درس مهم بعدی، watermark برای عملیات stateful است: بدون watermark، state بینهایت رشد میکنه و executor به OOM میرسه؛ آستانهی watermark هم یک تصمیم تجاریه که به تأخیر منبع بستگی داره.
در نهایت، مانیتورینگ از روز اول: سه متریک حیاتی consumer lag بهازای هر پارتیشن (مهمترین)، مدت micro-batch (اگه از بازهی trigger بیشتر شد یعنی گلوگاه پردازش)، و اندازهی state store (نشت حافظهی در راه). راهانداختن این سه متریک در زمان استقرار، نه بعد از اولین حادثه، چند قطعی را جلوگیری کرده.
نکات کلیدی:
- چکپوینت را از روز اول روی ذخیرهسازی پایدار مشترک بذار، نه دیسک محلی
- بازهی trigger را طوری بچین که فایلهای خروجی ۵۰ تا ۵۰۰ مگابایت بشن
- برای عملیات stateful حتماً watermark تعریف کن تا حافظه بینهایت رشد نکنه
- consumer lag، مدت micro-batch و اندازهی state store را از روز اول مانیتور کن




