• Airbridge विज्ञापन क्लिक, इंस्टॉल और खरीदारी जैसे events को real time में match करता है, इसलिए events को तेज़ी से process करना ही नहीं, बल्कि उन्हें आवश्यक क्रम में process करना और loss/duplication रोकना भी महत्वपूर्ण है।
  • पहले Kafka messages को micro-batch में लाकर event type के अनुसार sequentially process किया जाता था।
    • क्रम को control करना आसान था, लेकिन पहले वाले event की processing का इंतज़ार करते समय दूसरे workers idle हो जाते थे।
    • जब हर worker की processing speed में अंतर और hot partition साथ आ जाते, तो server बढ़ाने पर भी processing speed अटक जाती थी।
  • इसे हल करने के लिए Project Differential design किया गया।
    • micro-batch हटाकर, event type के अनुसार Consumer उसी Kafka topic को independently पढ़ता है।
    • ordering guarantee पूरे topic पर नहीं, बल्कि partition level पर की जाती है, और configuration ऐसी रखी गई कि order-sensitive समान user flow के events जितना संभव हो उसी partition में जाएँ।
    • बाद वाला Consumer, पहले वाले Consumer की processing position को overtake नहीं कर सकता, और offset या event time के आधार पर safety distance रखा जाता है।
    • जिन messages को पहला Consumer process नहीं करता, उन्हें अगले Consumer को सौंपकर reuse किया जाता है, और buffer भर जाने पर Kafka को सीधे पढ़ने वाले Polling Mode में switch किया जाता है।
  • internally, हर partition के लिए ConsumerSuite/PartitionedConsumerChain रखा गया है, और LimitedEventProcessor control करता है कि पहले वाले Consumer के checkpoint से आगे न जाए।
    • CommitManager buffering और asynchronous processing के दौरान भी सिर्फ़ वास्तव में complete हुए continuous offsets को Kafka में commit करने का management करता है।
  • test operation में यह confirm हुआ कि यह event loss/duplication के बिना काम करता है, और मौजूदा micro-batch तरीके की तुलना में processing speed 10 गुना से अधिक बेहतर हुई।
  • यह एक ऐसा case है जिसमें complete global order बनाने के बजाय, वास्तविक business के लिए ज़रूरी order को best effort से बनाए रखते हुए throughput हासिल किया गया।
  • आगे structure simplification, Spot Instance termination की स्थितियों से निपटने के लिए adaptive flow control, और sequential processing को ही कम करने वाले architecture improvements पर विचार किया जा रहा है।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.