Consumer API এবং Consumer Group

Kafka Consumer এর ভূমিকা - অ্যাপাচি কাফকা (Apache Kafka) - Big Data and Analytics

336

অ্যাপাচি কাফকা (Apache Kafka) একটি ডিস্ট্রিবিউটেড স্ট্রিমিং প্ল্যাটফর্ম যা Producer এবং Consumer এর মধ্যে ডেটা প্রেরণ এবং গ্রহণের কাজ পরিচালনা করে। Consumer API এবং Consumer Group কাফকার এই ব্যবস্থার গুরুত্বপূর্ণ অংশ, যা ডেটার প্রসেসিং এবং গ্রাহক (consumer) থেকে ডেটা গ্রহণের প্রক্রিয়া নিয়ন্ত্রণ করে।


Kafka Consumer API

Kafka Consumer API হলো সেই ইন্টারফেস, যা কনসিউমারকে কাফকা টপিক থেকে মেসেজ (ডেটা) গ্রহণ করার সুযোগ দেয়। কনসিউমার এক বা একাধিক টপিক থেকে মেসেজ পাঠ (consume) করতে পারে এবং এই প্রক্রিয়া নিয়ন্ত্রণ করে Kafka Consumer API।

১. Consumer API এর মূল উপাদান

Kafka Consumer API-এর কয়েকটি গুরুত্বপূর্ণ উপাদান হল:

  • Consumer: এটি একটি ক্লাস বা ইন্টারফেস যা এক বা একাধিক টপিক থেকে মেসেজ গ্রহণ করে। কনসিউমার মেসেজগুলি কনসিউম করে এবং সেগুলোর প্রসেসিং করে।
  • subscribe(): কনসিউমার একটি বা একাধিক টপিকের উপর সাবস্ক্রাইব করার জন্য subscribe() মেথড ব্যবহার করে।
  • poll(): poll() মেথড ব্যবহার করে কনসিউমার টপিক থেকে মেসেজ গ্রহণ করে। এটি একটি ব্লকিং মেথড, যার মাধ্যমে কনসিউমার নতুন মেসেজ পাওয়ার জন্য অপেক্ষা করে।
  • commit(): মেসেজের অফসেট (offset) কমিট করার জন্য commit() মেথড ব্যবহার করা হয়। এটি নিশ্চিত করে যে কনসিউমার কোনো মেসেজ সফলভাবে প্রসেস করেছে।

২. Consumer API এর প্রক্রিয়া

  1. কনসিউমার তৈরি: প্রথমে একটি কনসিউমার অবজেক্ট তৈরি করতে হবে, যা কাফকা ব্রোকারে সংযুক্ত হয়।
  2. টপিক সাবস্ক্রাইব করা: কনসিউমার একটি বা একাধিক টপিকের উপর সাবস্ক্রাইব করে, যাতে সে সেগুলি থেকে মেসেজ পেতে পারে।
  3. মেসেজ পড়া (Poll): কনসিউমার poll() মেথডের মাধ্যমে মেসেজ পড়তে শুরু করে। এটি একটি নির্দিষ্ট সময়ের মধ্যে নতুন মেসেজ সংগ্রহ করে।
  4. অফসেট কমিট করা: কনসিউমার তার মেসেজ প্রসেস করার পর commit() মেথড ব্যবহার করে তার শেষ পড়া মেসেজের অফসেটটি কমিট করে।
Properties properties = new Properties();
properties.put("bootstrap.servers", "localhost:9092");
properties.put("group.id", "test-group");
properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(properties);
consumer.subscribe(Collections.singletonList("my-topic"));

while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        System.out.println("Consumed record: " + record.value());
    }
    consumer.commitSync(); // commit offset after processing
}

Kafka Consumer Group

Kafka Consumer Group হলো এক বা একাধিক কনসিউমারের একটি গ্রুপ, যারা একসাথে একটি নির্দিষ্ট টপিক বা টপিকের পার্টিশন থেকে ডেটা গ্রহণ করে। কনসিউমার গ্রুপ কাফকায় গুরুত্বপূর্ণ একটি কনসেপ্ট, কারণ এটি লোড ব্যালেন্সিং এবং পারফরম্যান্স অপটিমাইজেশনে সাহায্য করে।

১. Consumer Group এর কাজের ধারণা

  • সবার জন্য আলাদা পার্টিশন: একটি কনসিউমার গ্রুপে একাধিক কনসিউমার থাকতে পারে, কিন্তু কাফকা নিশ্চিত করে যে একটি নির্দিষ্ট পার্টিশন শুধুমাত্র এক কনসিউমার দ্বারা পড়া হয়। যদি দুটি কনসিউমার একই গ্রুপের অংশ হয়, তবে তারা একে অপরের মধ্যে কাজ ভাগ করে নেবে।
  • পার্টিশন বিভক্তি: প্রতিটি কনসিউমার পার্টিশনগুলো থেকে ডেটা পড়তে পারে। যদি টপিকের পার্টিশন সংখ্যা কনসিউমারের চেয়ে বেশি হয়, তবে কিছু কনসিউমার পার্টিশন থেকে ডেটা পাবেন না। কিন্তু যদি কনসিউমারের সংখ্যা পার্টিশন সংখ্যা কম হয়, তবে কয়েকটি কনসিউমার একাধিক পার্টিশন থেকে ডেটা পড়বে।
  • অফসেট ম্যানেজমেন্ট: কনসিউমার গ্রুপের প্রতিটি কনসিউমার তার নিজস্ব offset ট্র্যাক করে, যা জানায় যে কনসিউমার কতদূর ডেটা পড়েছে। এটি নিশ্চিত করে যে ডেটা পুনরায় পাঠানো না হয় এবং সব ডেটা একবারই প্রসেস হয়।

২. Consumer Group এর সুবিধা

  • লোড ব্যালেন্সিং: একাধিক কনসিউমার গ্রুপে ভাগ হয়ে ডেটা প্রসেস করা হলে লোড শেয়ারিং সম্ভব হয়, যার ফলে সিস্টেমের স্কেলেবিলিটি বৃদ্ধি পায়।
  • ফল্ট টলারেন্স: একটি কনসিউমার যদি ব্যর্থ হয়, তবে অন্য কনসিউমার তার দায়িত্ব গ্রহণ করে, ফলে ডেটার প্রসেসিং থেমে থাকে না।
  • স্কেলেবিলিটি: কনসিউমার গ্রুপের মাধ্যমে সহজেই আরও কনসিউমার যোগ করে সিস্টেমের স্কেল বৃদ্ধি করা যায়।

৩. Consumer Group এর কার্যপদ্ধতি

  1. গ্রুপ আইডি: কনসিউমার গ্রুপের জন্য একটি গ্রুপ আইডি নির্ধারণ করতে হয়। এই গ্রুপ আইডি একাধিক কনসিউমারের মধ্যে একটি অভিন্ন হতে হবে, যাতে তারা একই গ্রুপে কাজ করতে পারে।
  2. অফসেট ম্যানেজমেন্ট: প্রতিটি কনসিউমার তার নিজস্ব অফসেট ম্যানেজ করে, যার মাধ্যমে নিশ্চিত হয় যে কনসিউমার পুনরায় ডেটা পড়ছে না এবং পূর্ববর্তী মেসেজগুলো বাদ যাচ্ছে না।
  3. পার্টিশন ম্যানেজমেন্ট: প্রতিটি কনসিউমার গ্রুপের কনসিউমার একাধিক পার্টিশন থেকে ডেটা প্রসেস করার জন্য কাফকা নিজেই পার্টিশনগুলি ভাগ করে দেয়।

সারাংশ

Kafka Consumer API কনসিউমারদের কাফকা টপিক থেকে ডেটা গ্রহণ করার সুযোগ দেয়। এটি subscribe(), poll(), এবং commit() এর মতো মেথডের মাধ্যমে কাজ করে। Consumer Group একাধিক কনসিউমারকে একটি গ্রুপে নিয়ে আসে, যা একে অপরের মধ্যে ডেটা ভাগ করে নেয়। এটি লোড ব্যালেন্সিং, ফল্ট টলারেন্স, এবং স্কেলেবিলিটি নিশ্চিত করে। কনসিউমার গ্রুপের মাধ্যমে ডেটা প্রসেসিংকে আরও কার্যকর এবং পারফরম্যান্ট করা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...