Circuit Breaker Pattern হল একটি ডিজাইন প্যাটার্ন যা সার্ভিস বা কম্পোনেন্টগুলির মধ্যে সংযোগ ব্যর্থ হলে সিস্টেমের ব্যর্থতা প্রতিরোধে সাহায্য করে। এটি সিস্টেমের কোনও সার্ভিস বা API ডাউন থাকলে বা সাড়া না দিলে সংযোগ বন্ধ করে, সিস্টেমকে অপ্রয়োজনীয় রিসোর্স ব্যবহার থেকে রক্ষা করে এবং সার্ভিস পুনরুদ্ধারের সময় অপেক্ষা করে।
Circuit Breaker Pattern মূলত মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহার করা হয়, যেখানে বিভিন্ন সার্ভিস পরস্পরের সাথে যোগাযোগ করে। এটি সিস্টেমের স্থায়িত্ব বাড়ায় এবং চেইন রিঅ্যাকশনে সিস্টেম ব্যর্থতা প্রতিরোধ করে।
Circuit Breaker Pattern-এর প্রধান তিনটি অবস্থা
Circuit Breaker Pattern সাধারণত তিনটি অবস্থায় কাজ করে:
Closed (বন্ধ):
- সার্ভিস সক্রিয় থাকে এবং যথারীতি কাজ করে। সব রিকোয়েস্ট সার্ভিসে পাঠানো হয়।
- কিছু সংখ্যক ব্যর্থ রিকোয়েস্টের পরে এটি
Openঅবস্থায় চলে যায়।
Open (খোলা):
- সার্ভিস ডাউন থাকলে Circuit Breaker
Openঅবস্থায় চলে যায়, যা ব্যর্থ সংযোগের উপর চাপ কমায় এবং নতুন রিকোয়েস্ট সার্ভিসে পাঠানো বন্ধ করে। - কিছু নির্দিষ্ট সময় পরে এটি
Half-Openঅবস্থায় পরিবর্তিত হয়।
Half-Open (আধা-খোলা):
- কিছু সময় পর সার্ভিস যদি পুনরায় সাড়া দেয় তাহলে Circuit Breaker
Half-Openঅবস্থায় চলে যায়। - এটি কয়েকটি রিকোয়েস্ট পাঠায় এবং সাড়া পেলে
Closedঅবস্থায় ফিরে যায়; না পেলে আবারOpenঅবস্থায় চলে যায়।
Circuit Breaker Pattern-এর প্রয়োগের উদাহরণ
উদাহরণ ১: মাইক্রোসার্ভিসে সার্ভিস ব্যর্থতা প্রতিরোধ
ধরা যাক, একটি ই-কমার্স সাইটে অর্ডার সার্ভিস এবং পেমেন্ট সার্ভিস আলাদা মাইক্রোসার্ভিস হিসেবে কাজ করে। পেমেন্ট সার্ভিস ব্যর্থ হলে Circuit Breaker Open অবস্থায় চলে যায় এবং অর্ডার সার্ভিস আর পেমেন্ট সার্ভিসে রিকোয়েস্ট পাঠায় না। এতে সার্ভিসের ব্যর্থতা অন্য সার্ভিসের ওপর চাপ সৃষ্টি করে না।
অর্ডার সার্ভিস -----> Circuit Breaker -----> পেমেন্ট সার্ভিস
(Open/Closed/Half-Open)
উদাহরণ ২: API কলের ব্যর্থতা হ্যান্ডলিং
একটি ওয়েদার অ্যাপ্লিকেশন বিভিন্ন সার্ভিস থেকে ডেটা সংগ্রহ করে। যদি কোনও API বার বার সাড়া না দেয়, তবে Circuit Breaker সেই API কল বন্ধ করে এবং অন্য API-তে রিকোয়েস্ট পাঠায়।
Weather App -----> Circuit Breaker -----> Weather API
(Open/Closed/Half-Open)
উদাহরণ ৩: তৃতীয় পক্ষের সিস্টেমে ব্যাকআপ সার্ভিস ব্যবহার
কোনো ব্যাংকিং সিস্টেমে একটি সার্ভিস প্রধান পেমেন্ট গেটওয়ে এবং ব্যাকআপ গেটওয়ে ব্যবহৃত হয়। প্রধান গেটওয়ে ব্যর্থ হলে Circuit Breaker Open অবস্থায় চলে যায় এবং ব্যাকআপ গেটওয়েতে রিকোয়েস্ট পাঠানো হয়।
ব্যাংকিং সিস্টেম -----> Circuit Breaker -----> প্রধান গেটওয়ে
-----> ব্যাকআপ গেটওয়ে
Circuit Breaker Pattern-এর ব্যবহারিক প্রয়োগ
১. রেট-লিমিটেড সার্ভিসে ব্যর্থতা প্রতিরোধ
Circuit Breaker Pattern-টি রেট-লিমিটেড সার্ভিসে ব্যবহার করা যায়। যদি নির্দিষ্ট সংখ্যক রিকোয়েস্টের পর সার্ভিস ব্যর্থ হয়, তাহলে সার্ভিস পুনরুদ্ধার না হওয়া পর্যন্ত Circuit Breaker Open অবস্থায় রেখে অন্য রিকোয়েস্ট বন্ধ রাখা হয়।
২. অ্যাক্সেসিবিলিটি এবং রিসোর্স ব্যবস্থাপনা উন্নত করা
Circuit Breaker সিস্টেমের উপর চাপ কমিয়ে অ্যাক্সেসিবিলিটি এবং রিসোর্স ব্যবস্থাপনা উন্নত করে। এটি ব্যর্থতা সময় কমিয়ে দেয় এবং পুনরুদ্ধারের সুযোগ দেয়।
৩. নেটওয়ার্ক এবং ব্যান্ডউইথ ব্যবস্থাপনা
Circuit Breaker ব্যবহার করে অপ্রয়োজনীয় নেটওয়ার্ক এবং ব্যান্ডউইথ ব্যবহার বন্ধ করা যায়। এটি নির্দিষ্ট সময় পরে পুনরায় চেষ্টা করে সংযোগ কার্যকর রাখে।
Circuit Breaker Pattern-এর সুবিধা
- সিস্টেম স্থিতিশীলতা বৃদ্ধি: একটি সার্ভিস ব্যর্থ হলে পুরো সিস্টেমের উপর প্রভাব কমায়।
- রিসোর্স অপ্টিমাইজেশন: সার্ভিসে ব্যর্থ রিকোয়েস্ট কমিয়ে রিসোর্স অপ্টিমাইজ করা যায়।
- বিরামহীনতা হ্রাস: সার্ভিস ডাউন হলে অপেক্ষা না করে তা দ্রুত পুনরায় অ্যাক্টিভ করা যায়।
- ফল্ট টলারেন্স: এক সার্ভিস ব্যর্থ হলে অন্যান্য সার্ভিস কাজ চালিয়ে যেতে পারে।
সারসংক্ষেপ
Circuit Breaker Pattern একটি গুরুত্বপূর্ণ প্যাটার্ন, যা মাইক্রোসার্ভিস এবং API ভিত্তিক সিস্টেমে ব্যর্থতা এবং চাপ কমাতে সাহায্য করে। এটি সার্ভিস ব্যর্থ হলে তৎক্ষণাৎ সংযোগ বন্ধ করে দেয়, যা সিস্টেমের স্থিতিশীলতা ও কার্যক্ষমতা নিশ্চিত করে। Circuit Breaker Pattern-এর সঠিক প্রয়োগ সিস্টেমকে আরও স্থিতিশীল, নির্ভরযোগ্য এবং লোড-ব্যালান্সড করে তোলে।
Read more