التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams
تعلّم تنفيذ التجميع ضمن نوافذ زمنية وإدارة مخازن الحالة في Kafka Streams لحساب العدادات والمجاميع والمقاييس المتراكمة عبر تدفقات الأحداث.
التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams درس مجاني في Advanced Spring Boot 4: Event-Driven Architecture (Kafka) على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Advanced Spring Boot 4: Event-Driven Architecture (Kafka)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Advanced Spring Boot 4: Event-Driven Architecture (Kafka) 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Stateful vs Stateless
Operations like map and filter are stateless. Aggregations such as counting or summing require state that persists across records.
Kafka Streams manages this state for you in local state stores.
Grouping a Stream
Before aggregating you group records by key with groupByKey or groupBy.
KGroupedStream<String, Order> grouped =
orders.groupBy((key, order) -> order.getCustomerId());Counting per Key
A simple aggregation: count orders per customer. The result is a KTable backed by a state store.
KTable<String, Long> counts = grouped.count();General Aggregation
Use aggregate for custom accumulation. You provide an initializer and an adder function.
KTable<String, Double> totals = grouped.aggregate(
() -> 0.0,
(key, order, sum) -> sum + order.getAmount());Introducing Windows
Often you want aggregations over a time window, e.g. orders in the last 5 minutes. Kafka Streams supports tumbling, hopping, and session windows.
Tumbling Windows
A tumbling window is fixed-size and non-overlapping. Each record belongs to exactly one window.
grouped
.windowedBy(TimeWindows.ofSizeWithNoGrace(Duration.ofMinutes(5)))
.count();Hopping Windows
Hopping windows have a size and a smaller advance, so they overlap. A record can fall into multiple windows.
TimeWindows.ofSizeAndGrace(Duration.ofMinutes(5), Duration.ofSeconds(30))
.advanceBy(Duration.ofMinutes(1));Session Windows
Session windows group records separated by gaps of inactivity — ideal for user sessions where activity bursts then pauses.
grouped
.windowedBy(SessionWindows.ofInactivityGapWithNoGrace(Duration.ofMinutes(10)))
.count();State Store Fault Tolerance
State stores are backed by compacted changelog topics in Kafka. If an instance fails, its state is rebuilt from the changelog on another instance.
Querying State Interactively
Interactive Queries let you read state store values directly from the application, exposing aggregations via a REST endpoint without an external database.
ReadOnlyKeyValueStore<String, Long> store =
streams.store(StoreQueryParameters.fromNameAndType(
"counts", QueryableStoreTypes.keyValueStore()));Putting It Together
Windowed, stateful aggregations turn raw event streams into live metrics. Group by key, choose a window type, aggregate, and optionally expose the state via interactive queries.
Quick Check
Test your understanding of windowing.
Recap
You learned windowing and stateful aggregations.
- Group with
groupByKeybefore aggregating. - Use
countoraggregateto build a KTable. - Tumbling, hopping, and session windows handle time differently.
- State stores are fault-tolerant via changelog topics.
تعلم Advanced Spring Boot 4: Event-Driven Architecture (Kafka) مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 12
- الدروس
- 48
الأسئلة الشائعة
هل درس «التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams» مجاني؟
نعم — نص درس «التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Advanced Spring Boot 4: Event-Driven Architecture (Kafka)، انتقل إلى CoddyKit PRO. تتضمن دورة Advanced Spring Boot 4: Event-Driven Architecture (Kafka) 4 دروس في المجموع.
ماذا ستتعلم في «التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams»؟
تعلّم تنفيذ التجميع ضمن نوافذ زمنية وإدارة مخازن الحالة في Kafka Streams لحساب العدادات والمجاميع والمقاييس المتراكمة عبر تدفقات الأحداث. تتمرن على Advanced Spring Boot 4: Event-Driven Architecture (Kafka) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Advanced Spring Boot 4: Event-Driven Architecture (Kafka)؟
لا تُشترط خبرة سابقة. Advanced Spring Boot 4: Event-Driven Architecture (Kafka) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Advanced Spring Boot 4: Event-Driven Architecture (Kafka) هذا؟
نعم. كل درس في Advanced Spring Boot 4: Event-Driven Architecture (Kafka) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مقدمة إلى Kafka Streams
- معالجة التدفقات باستخدام KStream وKTable
- بناء تطبيق تدفق بسيط
- التقسيم إلى نوافذ والتجميع ذي الحالة في Kafka Streams