Two-Phase Commit (2PC) একটি বিতরণকৃত লেনদেনের প্রোটোকল যা একাধিক সিস্টেমে বা সাইটে ডেটা সংরক্ষণ নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি ACID (Atomicity, Consistency, Isolation, Durability) গুণাবলী বজায় রেখে বিভিন্ন অংশীদারের মধ্যে বণ্টিত লেনদেনের সমন্বয় নিশ্চিত করে। 2PC প্রোটোকল মূলত ডিস্ট্রিবিউটেড ট্রানজেকশন ম্যানেজমেন্ট এর জন্য ব্যবহৃত হয় যেখানে একাধিক সিস্টেম বা নোডের মধ্যে একটি লেনদেনের প্রতিটি অংশ কমপ্লিট বা রোলব্যাক হয়।
Two-Phase Commit প্রোটোকল দুটি প্রধান ধাপে বিভক্ত:
ধরা যাক, আপনি একটি ডিস্ট্রিবিউটেড সিস্টেমে লেনদেন পরিচালনা করতে চান যেখানে দুটি সার্ভার ডেটা আপডেট করবে। 2PC প্রোটোকল ব্যবহৃত হলে:
Server1
এবং Server2
কে একটি prepare বার্তা পাঠায়: "আপনি কি লেনদেনটি গ্রহণ করতে প্রস্তুত?"Server1
এবং Server2
প্রতিটি তাদের স্থিতি জানায়। যদি উভয় সার্ভার "Yes" বলে, তাহলে লেনদেনটি প্রক্রিয়া করা যাবে।Hazelcast-এ 2PC প্রোটোকল ব্যবহার করতে হলে, আপনি ডিস্ট্রিবিউটেড IMap বা ITransactionalMap ব্যবহার করতে পারেন, যা ডিস্ট্রিবিউটেড ট্রানজেকশন এবং একাধিক নোডে ডেটার অ্যাটমিক আপডেট নিশ্চিত করে।
Hazelcast-এ 2PC এর জন্য IMap বা ITransactionalMap এর commit() এবং rollback() মেথডগুলি ব্যবহৃত হয়। এর মাধ্যমে ডিস্ট্রিবিউটেড লেনদেনের সমস্ত অংশ একযোগে কমপ্লিট বা রোলব্যাক করা যায়।
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;
import com.hazelcast.map.ITransactionalMap;
import com.hazelcast.transaction.Transaction;
import com.hazelcast.transaction.TransactionContext;
public class TwoPhaseCommitExample {
public static void main(String[] args) {
// Hazelcast ইনস্ট্যান্স তৈরি
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
// ট্রানজেকশন কন্টেক্সট তৈরি
TransactionContext context = hz.getTransactionContext();
context.beginTransaction();
try {
// ট্রানজেকশন ম্যাপ
ITransactionalMap<String, String> map = context.getMap("myMap");
// ডেটা আপডেট করা
map.put("key1", "value1");
map.put("key2", "value2");
// লেনদেন কমপ্লিট করা
context.commitTransaction();
System.out.println("Transaction committed successfully.");
} catch (Exception e) {
// কোনো ত্রুটি ঘটলে রোলব্যাক
context.rollbackTransaction();
System.out.println("Transaction rolled back due to error.");
}
}
}
এখানে, ITransactionalMap ব্যবহৃত হচ্ছে, যা 2PC প্রোটোকল অনুসরণ করে এবং commitTransaction() অথবা rollbackTransaction() মেথডের মাধ্যমে লেনদেন সম্পন্ন বা বাতিল করা হয়।
Two-Phase Commit (2PC) প্রোটোকল একটি শক্তিশালী ডিস্ট্রিবিউটেড ট্রানজেকশন ম্যানেজমেন্ট কৌশল, যা ACID বৈশিষ্ট্য বজায় রেখে একাধিক নোডে লেনদেন পরিচালনা করতে ব্যবহৃত হয়। Hazelcast-এ 2PC ব্যবহার করে আপনি ITransactionalMap বা IMap এর মাধ্যমে সিস্টেমের সকল অংশে ডেটা অটোমেটিকভাবে আপডেট বা রোলব্যাক করতে পারেন। তবে, এটি সিস্টেমের পারফরম্যান্স এবং ফেইলওভার সাপোর্টের উপর নির্ভরশীল, তাই এটি ব্যবহারের সময় যথাযথ কনফিগারেশন এবং টিউনিং গুরুত্বপূর্ণ।
common.read_more