GH GambleHub

جریان جریان

جریان چیست

جریان یک واکنش مداوم به توالی بی پایان از وقایع (ورود به سیستم معامله، کلیک، پرداخت، تله متری)، با حداقل تاخیر و تضمین اینکه ایالات درست است. بر خلاف دسته، جایی که «ما تمام انباشته شده در طول دوره را می گیریم»، جریان داده ها را به عنوان رسیدن به آن پردازش می کند، حالت را حفظ می کند و زمان رویداد را در نظر می گیرد.

مفاهیم کلیدی

رویداد یک واقعیت تغییر ناپذیر با 'event _ time' و منحصر به فرد 'event _ id' است.
زمان رویداد در مقابل زمان پردازش - اولین بار از منبع، دوم - زمانی که اپراتور در واقع رویداد را دید.

ویندوز - رویدادهای گروه بر اساس زمان:
  • غلت زدن، پرش/کشویی، جلسه.
  • واترمارک ها - ارزیابی که «رویدادهای قبل از T قبلاً وارد شده اند»، به شما امکان می دهد پنجره ها را ببندید و انتظار برای داده های دیرهنگام را محدود کنید.
  • Lateness - رویدادهایی با «event _ time» کمتر از علامت فعلی ؛ قوانین تکمیل اغلب اعمال می شود.
  • State - جداول محلی/حالت کلید برای aggregates، joins، deduplication.
  • فشار پشتی - فشار زمانی که خروجی پایین دست بیش از حد است ؛ توسط پروتکل و بافر کنترل می شود.

اساس معماری

1. منبع: کارگزار رویداد (Kafka/NATS/Pulsar)، CDC از DB، صف ها، جمع آوری فایل ها/ورود به سیستم.
2. موتور جریان: محاسبه پنجره ها، aggregates، joyns، الگوهای (CEP)، مدیریت ایستگاه های دولتی و بازرسی.
3. سینک: پایگاه داده OLTP/OLAP، موتور جستجو، کش، موضوعات، ذخیره سازی برای ویترین/گزارش.
4. رجیستری طرح: کنترل تکامل payload و سازگاری.
5. قابلیت مشاهده: معیارها، ردیابی، سیاهههای مربوط، داشبورد تاخیر و علامت های سفید.

معناشناسی زمان و سفارش

همیشه زمان رویداد را ترجیح دهید: این تنها متغیر برای تاخیر و وقفه است.
حوادث می توانند از نظم خارج شوند ؛ سفارش فقط در کلید حزب تضمین شده است.

علامت های سفید اجازه می دهد:
  • بستن پنجره ها و انتشار نتایج ؛
  • محدود کردن «چقدر ما در انتظار» رویدادهای تاخیر («مجاز _ lateness»).
  • برای رویدادهای دیرهنگام، از retractions/upserts استفاده کنید: محاسبه مجدد aggregates و رویدادهای اصلاحی.

وضعیت و قابلیت اطمینان

حالت کلید: داده های aggregates (مبالغ، شمارنده ها، ساختارها برای deduplication) توسط کلید ها جابجا می شوند.
Checkpoint/Savepoint - عکس های فوری وضعیت دوره ای برای بازیابی ؛ savepoint - عکس فوری مدیریت شده برای مهاجرت نسخه کد.

دقیقا یک بار در اثر به دست می آید:
  • معاملات «خواندن-پردازش-نوشتن» (متعهد سینک + موقعیت خواندن) ؛
  • غرق idempotent (upsert/ادغام) + جداول deduplication ؛
  • با versioning aggregates (همزمانی خوش بینانه).

ویندوز، تجمع، پیوستن

پنجره ها:
  • غلت زدن: گزارش های دوره ای ساده (دقیقه، ساعت).
  • پرش/کشویی: معیارهای «کشویی» (در 5 دقیقه در افزایش 1 دقیقه).
  • جلسه: طبیعی برای جلسات سفارشی و ضد تقلب.
  • مجموع: مجموع/شمارش/avg/تقریبا متمایز (HyperLogLogLog)، صدک (TDigest/CKMS).
  • پیوستن جریان جریان: نیاز به بافر هر دو طرف توسط کلید و زمان, احترام 'allowed _ skew'.
  • پیوستن به جدول جریان (KTable) - یک دایرکتوری یا وضعیت فعلی را اضافه می کند (به عنوان مثال، «محدودیت کاربر فعال»).

کار با داده های عقب مانده و تکراری

Deduplication: توسط 'event _ id' یا '(producer_id، دنباله)' ؛ کلیدهای «مشاهده شده» را با TTL ≥ پنجره redo ذخیره کنید.
رویدادهای دیرهنگام: اجازه پس پردازش پنجره برای «X» پس از بسته شدن (retractions/upserts).
تکراری نادرست: تنظیم مصالح idempotently و رفع «ALREADY_APPLIED» در سیاهههای مربوط.

مقیاس و عملکرد

کلید sharding: موازی سازی را فراهم می کند ؛ مواظب کليد هات باش.
Backpressure: محدود کردن موازی، استفاده از دسته و فشرده سازی در هنگام انتشار.
علامت های سفید: بیش از حد تهاجمی نباشید - علامت های سخت پیش بینی را کاهش می دهند اما نسبت به روز رسانی های دیر افزایش می یابد.
وضعیت: فرمت (RocksDB/state store/in memory) را با توجه به اندازه و الگوهای دسترسی انتخاب کنید. TTL را تمیز کنید.
Autoscaling: با تاخیر، CPU، اندازه دولت، زمان GC.

قابلیت اطمینان و راه اندازی مجدد

سینک ظرفشویی یا معامله متعهد با تثبیت افست اساس صحت است.
پردازش مجدد پس از راه اندازی مجدد مجاز است ؛ اثر باید «دقیقا یک بار» باقی بماند.
DLQ/پارکینگ: ارسال سوابق مشکل به یک موضوع جداگانه با دلایل ؛ پردازش مجدد را فراهم کنید.

💡 > قابلیت مشاهده (چه چیزی برای اندازه گیری)

تاخیر بر اساس منبع (بر اساس زمان و پیام)

علامت گذاری به عنوان/زمان رویداد فعلی و نسبت رویدادهای اواخر.
اپراتورهای توان/تاخیر، p95/p99 پایان به پایان.
اندازه دولت/rocksdb I/O، نرخ بازرسی/مدت زمان.
نرخ DLQ، درصد deduplication/retray.
CPU/GC/هیپ، زمان مکث.

ایمنی و انطباق

طبقه بندی داده ها: علامت PII/PCI در نمودارها، ذخیره حداقل، رمزگذاری حالت و عکس های فوری.
کنترل دسترسی: ACL های جداگانه برای جداول موضوع/حالت و برای غرق شدن.
بازخورد: مطابق با الزامات قانونی (GDPR/حق فراموش شدن).
حسابرسی: ورود «event _ id»، «trace _ id»، نتیجه: «APPLIED/ALREADY _ APPLIED/RETRIVED».

الگوهای پیاده سازی

1. CDC → normalization → رویدادهای دامنه: تغییرات پایگاه داده خام را پخش نمی کند، نقشه به حقایق کسب و کار قابل درک است.
2. جعبه خروجی برای تولید کنندگان: واقعیت معامله + رویداد - در یک معامله پایگاه داده.
3. هسته در مقابل غنی شده: حداقل بار در جریان بحرانی، غنی سازی - ناهمزمان.
4. Replay-friendliness: پیش بینی ها/ویترین ها باید از ورودی دوباره جمع شوند.
5. Idempotency توسط طراحی: کلید عملیات/رویداد، طرح upsert، نسخه از aggregates.

تست کردن

واحد/اموال مبتنی بر: ثابت از aggregates و تحولات.
تست جریان: جریان رویداد ثابت با خارج از ترتیب و تکراری → چک پنجره و deduplication.
پنجره های طلایی: پنجره های مرجع/aggregates و تنظیمات دیررس مجاز.
تزریق خطا: بین «اثر ثبت شده» و «جبران متعهد» قرار می گیرد.
Replay tests: مونتاژ مجدد ویترین از ابتدای log = وضعیت فعلی.

هزینه و بهینه سازی

ویندوز و واترمارک بر تأخیر/منابع تأثیر می گذارند: هرچه پنجره طولانی تر و «تأخیر مجاز» بیشتر باشد، حالت بیشتر است.
کدک ها و فشرده سازی: تعادل CPU/شبکه.
خروجی دسته بندی: تماس های شبکه و معاملات کمتر.
فیلتر کردن زود هنگام («pushdown»): دور انداختن بیش از حد به عنوان نزدیک به منبع که ممکن است.

ضد ضربه

کراوات به زمان پردازش که در آن زمان رویداد مورد نیاز است → تجزیه و تحلیل نادرست.
عدم توانایی در سینک → اثرات دوگانه در راه اندازی مجدد.
جهانی «مگا کلید»: یک پارتیشن داغ موازی است.
CDC های خام به عنوان رویدادهای عمومی: طرح های DB نشت، شکنندگی در تکامل.
بدون DLQ: پیام های «سمی» کل خط لوله را مسدود می کند.
تاخیر سخت ثابت به جای علامت: یا انتظار ابدی و یا از دست دادن داده ها.

نمونه هایی از دامنه ها

پرداخت/امور مالی

جریان پرداخت. ', پنجره برای ضد تقلب (جلسه + CEP), پدر بزرگ توسط' operation _ id '.
اثر دقیقا یک بار در هنگام ارسال به دفتر حسابداری (upsert + نسخه).

بازاریابی/تبلیغات

پنجره های کشویی CTR/تبدیل، اضافه کردن کلیک ها و برداشت ها با تحمل '± Δ t'، جمع آوری برای مناقصه.

iGaming/خدمات آنلاین

تعادل/محدودیت های زمان واقعی، مأموریت ها/دستاوردها (پنجره های جلسه)، الگوهای ضد تقلب و هشدارها.

قالب های کوتاه (کد شبه)

پنجره با علامت های سفید و به روز رسانی دیر

pseudo stream
.withEventTime(tsExtractor)
.withWatermark(maxAllowedLag=2m)
.window(TUMBLING, size=1m, allowedLateness=30s)
.keyBy(user_id)
.aggregate(sum, retractions=enable)
.sink (upsert_table )//idempotent upsert by (user_id, window_start)

سینک تراکنش با تثبیت افست

pseudo begin tx upsert target_table using event, key=(k)
update consumer_offsets set pos=:pos where consumer=:c commit

چک لیست تولید

  • زمان رویداد و استراتژی علامت تعریف شده است. پنجرهها و «allowed _ lateness» انتخاب میشوند.
  • غرق idempotent یا معامله متعهد با افست.
  • رجیستری طرح و حالت های سازگاری فعال هستند ؛ تکامل افزوده
  • معیارها: تاخیر، علامت گذاری، p95/p99، DLQ، اندازه دولت، مدت زمان بازرسی.
  • تست: خارج از سفارش، تکراری، راه اندازی مجدد، پخش.
  • سیاست های PII/نگهداری برای دولت و عکس های فوری.
  • برنامه مقیاس بندی و استراتژی های فشار برگشتی.
  • مستندات قراردادهای پنجره و تنظیمات (به روز رسانی اواخر).

سوالات متداول

زمان رویداد مورد نیاز است ؟

اگر صحت معیارها و سازگاری مهم باشد، بله. زمان پردازش برای محاسبات فنی/نظارت مناسب است، اما تجزیه و تحلیل را مختل می کند.

آیا دقیقا یک بار لازم است ؟

نکته: برای اثرات بحرانی. اغلب، حداقل یک بار + سینک ظرفشویی کافی است.

چگونه پنجره ها را انتخاب کنیم ؟

ساخت در SLAs کسب و کار: «آخرین 5 دقیقه →» رقص «, جلسات کاربر →» جلسه «, گزارش دقیقه →» غلت.

با دادههای دیرهنگام چه کنیم ؟

اجازه محدود 'allowed _ lateness' و تنظیمات موضوع (upsert/retract). ویترین مشتری باید قادر به بروز رسانی باشد.

مجموع

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

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.