Schema Registry দিয়ে Kafka এবং Avro এর মধ্যে Schema Management

Avro এবং Apache Kafka Integration - অ্যাপাচি অভ্র (Avro) - Big Data and Analytics

446

Apache Avro এবং Apache Kafka একত্রে ব্যবহার করা হলে, ডেটা সিরিয়ালাইজেশন এবং ডিস্ট্রিবিউটেড মেসেজিং সিস্টেমে কার্যকারিতা এবং স্কেলেবিলিটি অনেক বেড়ে যায়। তবে এই দুইটি সিস্টেমের মধ্যে ডেটার স্কিমা schema management একটি গুরুত্বপূর্ণ বিষয় হয়ে দাঁড়ায়। Schema Registry হল একটি গুরুত্বপূর্ণ টুল যা Kafka এবং Avro এর মধ্যে স্কিমা পরিচালনা এবং রক্ষণাবেক্ষণ করে।


Schema Registry কী?

Schema Registry হল একটি সার্ভিস যা Avro স্কিমাগুলিকে সংরক্ষণ, পরিচালনা এবং ব্যবহার করার জন্য কেন্দ্রীয় জায়গা হিসেবে কাজ করে। এটি Apache Kafka ক্লাস্টারের সাথে একত্রে কাজ করে এবং নিশ্চিত করে যে মেসেজ এবং ডেটার স্কিমা সঠিকভাবে সংজ্ঞায়িত এবং ম্যানেজড থাকে।

  • Centralized schema storage: Schema Registry স্কিমাগুলি এক জায়গায় সংরক্ষণ করে, যাতে ডেটার কাঠামো সহজেই অ্যাক্সেস করা যায়।
  • Schema versioning: Schema Registry স্কিমাগুলির বিভিন্ন ভার্সন রাখে, যার মাধ্যমে schema evolution সাপোর্ট করা হয়।
  • Compatibility checks: Schema Registry নিশ্চিত করে যে নতুন স্কিমা পুরোনো স্কিমার সাথে সামঞ্জস্যপূর্ণ, যাতে ডেটার গঠন পরিবর্তন হলেও ব্যাকওয়ার্ড কমপ্যাটিবিলিটি বজায় থাকে।

Kafka এবং Avro এর মধ্যে Schema Management

Kafka এবং Avro এর মধ্যে Schema Management খুবই গুরুত্বপূর্ণ, কারণ Kafka একটি মেসেজিং সিস্টেম এবং Avro একটি ডেটা সিরিয়ালাইজেশন ফরম্যাট। Schema Registry ব্যবহার করে, আপনি নিশ্চিত করতে পারেন যে Avro স্কিমা সঠিকভাবে সংরক্ষিত এবং ব্যবহৃত হচ্ছে, এবং স্কিমা সংস্করণ এবং কমপ্যাটিবিলিটি নিশ্চিত করা হচ্ছে।

১. Avro Schema Creation and Registration

Avro স্কিমা তৈরি এবং রেজিস্টার করার প্রক্রিয়াটি Schema Registry মাধ্যমে করা হয়। Kafka মেসেজ প্রেরণের আগে, Avro স্কিমা Schema Registry তে রেজিস্টার করা হয়, যাতে সঠিক স্কিমা ব্যবহার করে ডেটা সিরিয়ালাইজ করা যায়।

Avro Schema উদাহরণ:

{
   "type": "record",
   "name": "User",
   "fields": [
      {"name": "name", "type": "string"},
      {"name": "age", "type": "int"},
      {"name": "email", "type": "string"}
   ]
}

এই স্কিমাটি যখন তৈরি হয়, তখন এটি Schema Registry তে রেজিস্টার করতে হবে যাতে Kafka মেসেজটি সঠিকভাবে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা যায়।

২. Schema Evolution and Compatibility

একটি বড় সিস্টেমে, schema time-to-time পরিবর্তন হতে পারে, এবং Schema Registry নিশ্চিত করে যে এই পরিবর্তনগুলি আগের স্কিমার সাথে সঙ্গতিপূর্ণ। সাধারণত, ৩টি কমপ্যাটিবিলিটি লেভেল থাকে:

  • Backward Compatibility: নতুন স্কিমা পুরোনো স্কিমার সঙ্গে কাজ করতে পারবে (পুরোনো ডেটা নতুন স্কিমায় কাজ করবে)।
  • Forward Compatibility: পুরোনো স্কিমা নতুন স্কিমার সঙ্গে কাজ করবে (নতুন ডেটা পুরোনো স্কিমায় কাজ করবে)।
  • Full Compatibility: স্কিমার মধ্যে কোনো পরিবর্তনই একে অপরের সাথে সমস্যা সৃষ্টি করবে না (Backwards এবং Forwards উভয়ই কমপ্যাটিবল)।

স্কিমা ইভোলিউশনের ফলে, ডেটার কাঠামো পরিবর্তন হলেও পুরোনো এবং নতুন স্কিমা উভয়ই সঠিকভাবে কাজ করতে পারে।

৩. Kafka Producer and Consumer Integration with Schema Registry

Kafka Producer এবং Kafka Consumer উভয়কেই Schema Registry এর সাথে ইন্টিগ্রেট করতে হয়, যাতে তারা যথাযথ স্কিমা ব্যবহার করে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারে।

Producer Configuration Example (Java):

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "io.confluent.kafka.serializers.KafkaAvroSerializer");
props.put("value.serializer", "io.confluent.kafka.serializers.KafkaAvroSerializer");
props.put("schema.registry.url", "http://localhost:8081");

Producer<String, GenericRecord> producer = new KafkaProducer<>(props);

Consumer Configuration Example (Java):

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.deserializer", "io.confluent.kafka.serializers.KafkaAvroDeserializer");
props.put("value.deserializer", "io.confluent.kafka.serializers.KafkaAvroDeserializer");
props.put("schema.registry.url", "http://localhost:8081");

KafkaConsumer<String, GenericRecord> consumer = new KafkaConsumer<>(props);

এই কনফিগারেশনের মাধ্যমে Producer এবং Consumer Schema Registry থেকে স্কিমা তথ্য পাবেন এবং তা সঠিকভাবে ডেটার সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন নিশ্চিত করবে।


Schema Registry ব্যবহার করার সুবিধা

  1. Centralized Schema Management: একটি একক জায়গায় সমস্ত স্কিমা সংরক্ষণ করা হয়, যা ডেটা ব্যবস্থাপনা সহজ এবং কার্যকরী করে তোলে।
  2. Schema Evolution: Schema Registry স্কিমা ইভোলিউশন সাপোর্ট করে, ফলে ডেটার কাঠামো পরিবর্তন হলেও পুরোনো এবং নতুন ডেটার মধ্যে সামঞ্জস্য বজায় থাকে।
  3. Compatibility Checks: স্কিমার মধ্যে পরিবর্তনের ফলে কোনো সমস্যা তৈরি না হয়, তা নিশ্চিত করার জন্য Schema Registry কমপ্যাটিবিলিটি চেক করে।
  4. Integration with Kafka: Schema Registry সহজেই Kafka Producer এবং Consumer এর সাথে ইন্টিগ্রেট করতে পারে, যাতে ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন সঠিকভাবে পরিচালিত হয়।

সারাংশ

Schema Registry হল একটি গুরুত্বপূর্ণ টুল যা Apache Kafka এবং Apache Avro এর মধ্যে স্কিমা ব্যবস্থাপনা নিশ্চিত করে। এটি স্কিমা রেজিস্ট্রেশন, স্কিমা ইভোলিউশন, এবং স্কিমা কমপ্যাটিবিলিটি চেক করে। Schema Registry এর মাধ্যমে, আপনি নিশ্চিত করতে পারেন যে Kafka ক্লাস্টারে ডেটার স্কিমা সঠিকভাবে ব্যবহৃত হচ্ছে, এবং ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন সঠিকভাবে সম্পন্ন হচ্ছে। এটি স্কেলেবিলিটি, সুরক্ষা এবং ডেটার ইন্টিগ্রিটি বজায় রাখতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...