स्ट्रीमिंग डेटा

AWS पर एप्लिकेशन विकसित करना

Ricardo Sueiras

Principal Technologist

स्ट्रीमिंग डेटा की मूल बातें

 

स्ट्रीमिंग-डेटा

  • रिकॉर्ड आते ही लगातार प्रोसेस होते हैं.
  • प्रोड्यूसर स्ट्रीम में लिखते हैं.
  • कंज्यूमर स्वतंत्र और पैरेलल पढ़ते हैं.
  • बैच जॉब का इंतज़ार किए बिना ट्रैफिक स्पाइक्स संभालता है.
AWS पर एप्लिकेशन विकसित करना

स्ट्रीमिंग डेटा के घटक क्या हैं?

 

स्ट्रीमिंग सिस्टम घटक

  • प्रोड्यूसर: ऐप्स जो रिकॉर्ड निकालते हैं.
  • स्ट्रीम: टिकाऊ, क्रमबद्ध बफर जो प्रोड्यूसर को कंज्यूमर से डीकपल करते हैं.
  • कंज्यूमर: ऐप्स जो रिकॉर्ड पढ़ते और प्रोसेस करते हैं.
  • स्टोरेज और रिटेंशन: रिकॉर्ड दोबारा चलाने के लिए कितने समय उपलब्ध रहेंगे, यह तय करता है.
AWS पर एप्लिकेशन विकसित करना

शार्ड्स

 

शार्ड्स

 

  • शार्ड्स थ्रूपुट और पैरेलल प्रोसेसिंग की इकाइयाँ हैं.
  • पार्टिशन कीज़ रिकॉर्ड्स को शार्ड्स में बाँटती हैं.
  • क्रम केवल एक शार्ड के भीतर सुनिश्चित है.
  • कंज्यूमर प्रोग्रेस ट्रैक और फेल्यर से रिकवर करने के लिए चेक-पॉइंटिंग का उपयोग करते हैं.
AWS पर एप्लिकेशन विकसित करना

स्ट्रीमिंग डेटा के लिए AWS मैनेज्ड सेवाएँ

  • Amazon Kinesis Data Streams.
  • Amazon Data Firehose.
  • स्ट्रीमिंग डेटा एप्लिकेशन के कोर बिल्डिंग ब्लॉक्स.

 

AWS सेवाएँ

AWS पर एप्लिकेशन विकसित करना

Kinesis Data Streams

  • लो-लेटेंसी स्ट्रीमिंग.
  • कॉन्फ़िगरेबल रिटेंशन: 24 घंटे (डिफ़ॉल्ट) से 365 दिन तक.
  • टिकाऊ, रीप्लेएबल स्ट्रीम.
  • कई कंज्यूमर पैरेलल पढ़ सकते हैं.
  • डेवलपर्स शार्ड्स से स्केल मैनेज करते हैं.

 

Kinesis Data Streams

AWS पर एप्लिकेशन विकसित करना

Kinesis Data Streams कब उपयोग करें

  • रियल-टाइम लेटेंसी चाहिए तो इसे चुनें.
  • रिकॉर्ड्स का रीप्ले आवश्यक है.
  • कई स्वतंत्र कंज्यूमर हैं.
  • कस्टम ट्रांसफ़ॉर्मेशन लॉजिक चाहिए.

 

Kinesis Data Streams

AWS पर एप्लिकेशन विकसित करना

रिकॉर्ड लिखना

 

क्लाइंट लाइब्रेरीज़

  • पार्टिशन कीज़ शार्ड प्लेसमेंट और ऑर्डरिंग नियंत्रित करती हैं.
  • PutRecords प्रति रिक्वेस्ट अधिकतम 500 रिकॉर्ड या 5 MB बैच करता है.
  • फेल्यर प्रति रिकॉर्ड रिपोर्ट होते हैं.
  • FailedRecordCount फेल रिकॉर्ड्स पहचानने में मदद करता है.
AWS पर एप्लिकेशन विकसित करना

रिकॉर्ड कंज्यूम करना: क्लासिक

 

क्लासिक

 

  • कंज्यूमर जरूरत पर Kinesis API को पोल करते हैं.
  • राइट लिमिट: 1 MB/sec या 1,000 रिकॉर्ड/sec.
  • रीड लिमिट: 2 MB/sec या 5 GetRecords कॉल/sec.
AWS पर एप्लिकेशन विकसित करना

रिकॉर्ड कंज्यूम करना: स्ट्रीम स्टार्ट

 

स्ट्रीम-स्टार्ट

  • कंज्यूमर तय करते हैं कि स्ट्रीम में कहाँ से पढ़ना शुरू करें.
  • TRIM_HORIZON: शार्ड का सबसे पुराना उपलब्ध रिकॉर्ड.
  • LATEST: अगला नया रिकॉर्ड.
  • AT_SEQUENCE_NUMBER या AFTER_SEQUENCE_NUMBER: किसी विशिष्ट सीक्वेंस नंबर से.
  • AT_TIMESTAMP: दिए गए टाइमस्टैम्प पर या उसके बाद.
AWS पर एप्लिकेशन विकसित करना

रिकॉर्ड कंज्यूम करना: एन्हांस्ड फैन-आउट

  • प्रत्येक रजिस्टर्ड कंज्यूमर को प्रति शार्ड समर्पित 2 MB/sec मिलता है.
  • रिकॉर्ड HTTP/2 पुश से डिलीवर होते हैं.
  • कई स्वतंत्र कंज्यूमर को लो लेटेंसी चाहिए तो इसे उपयोग करें.
  • और उसी स्ट्रीम पर हाई थ्रूपुट भी चाहिए.

 

पैटर्न - एन्हांस्ड फैन-आउट

AWS पर एप्लिकेशन विकसित करना

Lambda इवेंट सोर्स मैपिंग

  • Lambda Kinesis को पोल करता है और बैच में इनवोक करता है.
  • BatchSize और MaximumBatchingWindow बैच का आकार/विंडो सेट करते हैं.
  • ParallelizationFactor: प्रति शार्ड समांतर इनवोकेशंस.
  • BisectBatchOnFunctionError: फेल बैच को बाँटकर पॉइज़न पिल अलग करता है.
  • ReportBatchItemFailures: सफल रिकॉर्ड्स पर रीट्राई से बचाता है.
  • OnFailure: अनप्रोसेसबले बैच SQS या SNS DLQ को भेजता है.

 

Lambda इवेंट सोर्सिंग

AWS पर एप्लिकेशन विकसित करना

Data Firehose

  • मैनेज्ड सर्विस जो स्ट्रीमिंग डेटा को डेस्टिनेशंस तक पहुँचाती है.
  • टार्गेट: Amazon S3, Redshift, और HTTP एंडपॉइंट्स.
  • बफ़रिंग, फ़ॉर्मेट कन्वर्ज़न, और Lambda ट्रांसफ़ॉर्मेशन सपोर्ट.
  • अधिक लेटेंसी, सेकंड्स से मिनट्स तक बफ़र्ड.
  • रीप्ले या लॉन्ग-टर्म रिटेंशन नहीं.
  • डेटा को सरलता से डेस्टिनेशन तक भेजने के लिए बढ़िया.

 

Data Firehose

AWS पर एप्लिकेशन विकसित करना

पैटर्न: हॉट-कोल्ड

 

पैटर्न - हॉट/कोल्ड

 

  • हॉट-कोल्ड पैटर्न Data Streams और Data Firehose को जोड़ता है.
  • Data Streams प्रोड्यूसर के लिए रियल-टाइम प्रोसेसिंग सक्षम करता है.
  • Firehose उसी स्रोत के रिकॉर्ड्स S3 में आर्काइव करता है.
AWS पर एप्लिकेशन विकसित करना

Kinesis बनाम SQS

 

SQS बनाम Kinesis

 

  • कई कंज्यूमर के साथ क्रमबद्ध, रीप्लेएबल स्ट्रीम के लिए Kinesis उपयोग करें.
  • Kinesis समय-श्रृंखला और क्रमबद्ध डेटा के लिए उपयुक्त है.
  • टास्क डिस्ट्रीब्यूशन के लिए SQS उपयोग करें.
AWS पर एप्लिकेशन विकसित करना

स्ट्रीमिंग डेटा को स्केल करना

 

स्केलिंग

  • डेटा स्ट्रीम शार्ड्स में विभाजित होती हैं.
  • पार्टिशन कीज़ रिकॉर्ड्स को एक विशिष्ट शार्ड पर रूट करती हैं.
  • वही की हमेशा उसी शार्ड पर जाती है, क्रम बना रहता है.
  • असमान पार्टिशन कीज़ हॉट शार्ड्स बनाती हैं.
  • हाई-कार्डिनैलिटी कीज़ से कम करें.
  • स्केल आउट/इन के लिए रीशार्ड करें.
AWS पर एप्लिकेशन विकसित करना

कैपेसिटी मोड: प्रोविज़न्ड

  • दो कैपेसिटी मोड उपलब्ध हैं.
  • प्रोविज़न्ड मोड फिक्स्ड शार्ड काउंट उपयोग करता है, मैन्युअल मैनेजमेंट.
  • लागत और कैपेसिटी पूर्वानुमेय रहती है.
  • थ्रॉटलिंग और ओवर-प्रोविज़निंग से बचने को मॉनिटरिंग चाहिए.

 

कैपेसिटी मोड्स

AWS पर एप्लिकेशन विकसित करना

कैपेसिटी मोड: ऑन-डिमांड

  • ऑन-डिमांड मोड ट्रैफिक के अनुसार स्वतः स्केल होता है.
  • मैन्युअल शार्ड मैनेजमेंट नहीं.
  • अनिश्चित वर्कलोड के लिए ऑपरेशंस सरल होते हैं.
  • लम्बे भारी ट्रैफिक पर अधिक लागत.

 

कैपेसिटी मोड्स

AWS पर एप्लिकेशन विकसित करना

Kinesis Producer Library (KPL)

  • AWS लाइब्रेरीज़ स्केलेबल प्रोड्यूसर और कंज्यूमर बनाना सरल करती हैं.
  • Kinesis Producer Library (KPL) रिकॉर्ड्स को बैच और एग्रीगेट करती है.
  • यह रिकॉर्ड्स को कंप्रेस करती है और फेल्यर पर रीट्राई करती है.
  • प्रोड्यूसर थ्रूपुट अधिकतम करने को असिंक्रोनस बफ़र करती है.

 

क्लाइंट लाइब्रेरीज़

AWS पर एप्लिकेशन विकसित करना

Kinesis Consumer Library (KCL)

 

क्लाइंट लाइब्रेरीज़

 

  • Kinesis Consumer Library (KCL) शार्ड कोऑर्डिनेशन संभालता है.
  • यह वर्कर लीज़िंग और चेक-पॉइंटिंग मैनेज करता है.
  • स्टेट DynamoDB टेबल में स्टोर होता है.
  • कंज्यूमर उसी स्टेट से पता लगाते हैं कि कहाँ से फिर शुरू करें.
AWS पर एप्लिकेशन विकसित करना

फेल्यर हैंडलिंग: इडेम्पोटेंसी

 

फेल्यर हैंडलिंग

 

  • Kinesis डिलीवरी at-least-once है, इसलिए डुप्लिकेट संभव हैं.
  • कंज्यूमर को इडेम्पोटेंट डिज़ाइन करें.
  • सीक्वेंस नंबर या DynamoDB में बिज़नेस की से डेडुप्लिकेट करें.
  • कंज्यूमर सीक्वेंस नंबर या टाइमस्टैम्प से रिटेन्ड रिकॉर्ड्स फिर पढ़ सकते हैं.
AWS पर एप्लिकेशन विकसित करना

फेल्यर हैंडलिंग: थ्रूपुट एरर्स

 

फेल्यर हैंडलिंग

 

  • ProvisionedThroughputExceededException थ्रॉटलिंग संकेत देता है.
  • शार्ड काउंट बढ़ाकर हल करें.
  • पार्टिशन की डिस्ट्रीब्यूशन सुधारें.
  • बैकऑफ़ के साथ रीट्राई करें.
  • कैपेसिटी मोड बदलें.
AWS पर एप्लिकेशन विकसित करना
  • CloudWatch में IncomingBytes और IncomingRecords ट्रैक करें.
  • थ्रॉटलिंग के लिए WriteProvisionedThroughputExceeded देखें.
  • कंज्यूमर लैग तब होता है जब कंजम्पशन प्रोडक्शन से धीमा है.
  • GetRecords.IteratorAgeMilliseconds ट्रैक करें: हाई एज लैग दर्शाती है.

 

लॉगिंग और मॉनिटरिंग

AWS पर एप्लिकेशन विकसित करना

सिक्योरिटी

  • AWS KMS से एट-रेस्ट सर्वर-साइड एन्क्रिप्शन.
  • ट्रांज़िट में TLS से एन्क्रिप्शन.
  • IAM पॉलिसीज़ एक्सेस नियंत्रित करती हैं.

 

सिक्योरिटी

AWS पर एप्लिकेशन विकसित करना

अभ्यास करते हैं!

AWS पर एप्लिकेशन विकसित करना

Preparing Video For Download...