কম্পিউটার

অ্যামাজন অরোরার শেষ পয়েন্টগুলি বোঝা

আপনি যদি কখনও অরোরা রিড রেপ্লিকাস ব্যবহার করে থাকেন, আপনি হয়তো লক্ষ্য করেছেন যে সেখানে বেশ কিছু ভিন্ন এন্ডপয়েন্ট উপলব্ধ রয়েছে। ক্লাস্টার এন্ডপয়েন্ট , রিডার এন্ডপয়েন্ট , এবং ইনস্ট্যান্স এন্ডপয়েন্ট … এই সমস্ত বিকল্পগুলির সাথে, আপনি কীভাবে জানবেন কোনটি ব্যবহার করবেন এবং কখন? যেকোন অ-তুচ্ছ সিস্টেমের মত, উত্তর হল... এটা নির্ভর করে

প্রথমে, আসুন অ্যামাজন অরোরার সাথে উপলব্ধ বিভিন্ন প্রান্তে স্পর্শ করি৷

  • ক্লাস্টার এন্ডপয়েন্টক্লাস্টার এন্ডপয়েন্ট আপনার অ্যাপ্লিকেশনটিকে সেই DB ক্লাস্টারের জন্য বর্তমান প্রাথমিক DB উদাহরণের সাথে সংযুক্ত করুন। আপনার অ্যাপ্লিকেশন এই উদাহরণে পড়তে এবং লিখতে উভয়ই পারে৷

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

  • ইন্সট্যান্স এন্ডপয়েন্ট – একটি ইন্সট্যান্স এন্ডপয়েন্ট ক্লাস্টারে একটি নির্দিষ্ট উদাহরণের সাথে সংযোগ করে। অ্যামাজন অরোরা হ্যান্ডেল সংযোগ বিতরণ না করে ক্লায়েন্টদের কোয়েরি বরাদ্দের উপর সূক্ষ্ম নিয়ন্ত্রণ থাকতে পারে।

আমি জানি আপনি কি ভাবছেন... আমি শুধু ক্লাস্টার এন্ডপয়েন্ট-এর সাথে সংযোগ করব forwrites, রিডার এন্ডপয়েন্ট সমস্ত পাঠের জন্য, এবং কেন আমি কখনও নির্দিষ্ট উদাহরণের সাথে সংযোগ করব - যা বিল্ট-ইন ফল্ট সহনশীলতাকে বাইপাস করে এবং কষ্টের জন্য জিজ্ঞাসা করছে, তাই না? যেমনটি আগে বলা হয়েছে, আপনার অ্যাপ্লিকেশন এবং অরোরার সাথে এর মিথস্ক্রিয়া একটি জটিল (বা অন্তত একটি অ-তুচ্ছ) সিস্টেম তৈরি করে। জটিল সিস্টেমের সাথে, এক-আকারের সব কিছুর উপর নির্ভর করার নিয়ম নয়... যদি না আপনি মধ্যরাতে কল উপভোগ করেন।

আসুন কিছু পরিস্থিতির মধ্য দিয়ে যাই এবং দেখি কখন এবং কোথায় বিভিন্ন এন্ডপয়েন্ট ব্যবহার করতে হবে।

তাত্ক্ষণিক সামঞ্জস্য

কিছু অ্যাপ্লিকেশন আশা করে যে ডেটা অবিলম্বে সামঞ্জস্যপূর্ণ হবে। যখন এই অ্যাপ্লিকেশানগুলি ডেটা লেখে, তারা অবিলম্বে অনেকগুলি ডিজাইনের প্যাটার্নের সাথে কঠোর সম্মতিতে ডেটা পড়ে যা বলে, "মডেলের উপর নির্ভর করুন, আপনার স্থানীয় ডেটা নয়"। অ্যামাজন অরোরা এসিআইডি-সম্মত; ক্লাস্টার এন্ডপয়েন্ট থেকে পড়া একটি সফল লেখার প্রতিশ্রুতি অবিলম্বে প্রত্যাশিত ডেটা পুনরুদ্ধার করবে (অন্য একটি লেনদেন পরবর্তী পড়ার আগে ডেটা পরিবর্তন করেনি বলে ধরে নেওয়া হবে)।

যেখানে সমস্যা হয় যখন লেখাগুলি ক্লাস্টার এন্ডপয়েন্ট-এ পাঠানো হয় andreads তৈরি করা হয় রিডার এন্ডপয়েন্ট-এ . এটি লেখার ডেটা এবং যখন এটি পাঠকদের কাছে দৃশ্যমান হয় তার মধ্যে বিলম্বের কারণে। প্রতিলিপির লেটেন্সি 100 মিলিসেকেন্ডের কম হলেও, এটি তাৎক্ষণিক নয়, যা একটি রেস কন্ডিশনের দিকে পরিচালিত করে। আপনার যদি এমন একটি দৃশ্য থাকে যেখানে আপনাকে অবিলম্বে লেখার পরে ডেটা পড়তে হবে, ক্লাস্টার এন্ডপয়েন্ট ব্যবহার করুন পড়া এবং লেখা উভয়ের জন্য। এটি উল্লেখ করা উচিত, অতিরিক্ত কর্মক্ষমতা প্রয়োজন হলে, আপনাকে অবশ্যই আপনার প্রাথমিক উদাহরণের আকার বাড়াতে হবে।

যাইহোক, যদি চূড়ান্ত সামঞ্জস্য গ্রহণযোগ্য হয় এবং আপনার অ্যাপ্লিকেশন এটিকে সমর্থন করে, তাহলে রিডার এন্ডপয়েন্ট ব্যবহার করে আপনার প্রাইমারি ইনস্ট্যান্সে লোড কমানোর একটি দুর্দান্ত উপায়।

অফলোডিং রিড

লেখার পরে অবিলম্বে পড়া ঠিক না হলে, আলাদা রিডার এন্ডপয়েন্ট থাকার মানে কি? ? এমন অনেকগুলি ব্যবহার-কেস রয়েছে যেখানে সামান্য অসামঞ্জস্যপূর্ণ ডেটা কোনও সমস্যা নয়। যেমন:দৈনিক রিপোর্টিং। গতকালের ডেটা থেকে রিপোর্ট তৈরি করতে ব্যাচের কাজগুলি চালানোর সময়, একটি 100-মিলিসেকেন্ডের প্রতিলিপি ল্যাগ অপ্রয়োজনীয়। অন্যান্য পরিস্থিতি কল্পনা করা সহজ, যেমন একটি ইকমার্স সাইটের পণ্যের বিবরণ… আপনার ব্যবহারকারীর ব্রাউজারে বাসি ডেটা থাকার সম্ভাবনা বেশি, প্রতিলিপিকরণ ল্যাগ দ্বারা প্রভাবিত হওয়ার চেয়ে।

সাধারণত, পড়া-ভারী কাজের চাপ যেগুলি অবিলম্বে সামঞ্জস্যের উপর নির্ভর করে না সেগুলি রিডার এন্ডপয়েন্ট ব্যবহার করে বিবেচনা করা উচিত .

নন-ইনিফর্ম ওয়ার্কলোড

এমন পরিস্থিতিতে আছে যেখানে ইন্সট্যান্স এন্ডপয়েন্ট ব্যবহার করা বোধগম্য . ধরুন আপনার কাছে এমন একটি অ্যাপ্লিকেশন রয়েছে যার ইলাস্টিক লোড ব্যালেন্সারের পিছনে বেশ কয়েকটি স্টেটলেস মাইক্রোসার্ভিস রয়েছে। এই পরিস্থিতিতে, এটা ধরে নেওয়া যুক্তিসঙ্গত যে প্রশ্নগুলি ক্লায়েন্ট জুড়ে সমানভাবে বিতরণ করা হয়েছে, এবং তাই, রিড রেপ্লিকা জুড়ে – যখন রিডার এন্ডপয়েন্ট ব্যবহার করে .

কিন্তু এমন পরিস্থিতির কী হবে যেখানে প্রতিটি ক্লায়েন্টের কাজের চাপ সমানভাবে বিতরণ করা হয় না? যদি একটি রিপোর্টিং পরিষেবা মিশ্রণে যোগ করা হয়, তবে একটি রিড রেপ্লিকা অন্যদের তুলনায় অসামঞ্জস্যপূর্ণভাবে উচ্চ লোড রয়েছে৷ যদি পূর্বে উল্লিখিত মাইক্রোসার্ভিসগুলিও এই রিড রেপ্লিকা ব্যবহার করে, রিপোর্টিং পরিষেবা দ্বারা ব্যবহৃত ইন্সট্যান্সটি জিজ্ঞাসা করার সময় খারাপ কোয়েরির পারফরম্যান্সের উচ্চ সম্ভাবনা রয়েছে। এটি এড়াতে একটি পদ্ধতি হল অ্যামাজন অরোরাকে আপনার জন্য এটি করতে দেওয়ার পরিবর্তে ক্লায়েন্টের দিকে সংযোগের বিতরণ পরিচালনা করা। ভাগ্যক্রমে, ইন্সট্যান্স এন্ডপয়েন্ট ব্যবহার করে এটি সহজেই করা যায় রিডার এন্ডপয়েন্ট এর পরিবর্তে .মাইএসকিউএল-এর জন্য অরোরার জন্য MariaDB সংযোগকারী/জে বা AmazonAurora PostgreSQL-এর সাথে ফাস্ট ফেইলওভারের সাহায্যে, ড্রাইভারকে পৃথক দৃষ্টান্তগুলি সম্পর্কে সচেতন করা যেতে পারে যেগুলি আপনি Read Replicas হিসাবে ব্যবহার করতে চান, ড্রাইভারকে সরাসরি পরিচালনা করার অনুমতি দেয় যে কীভাবে পৃথক দৃষ্টান্তে প্রশ্নগুলি বিতরণ করা হয়। পি>

DNS ক্যাশে পরিচালনা করুন

আপনার কাজের চাপের প্রকৃতি বোঝার পাশাপাশি, অরোরার উচ্চ প্রাপ্যতা এবং রিডার এন্ডপয়েন্ট প্রদানের জন্য সংযোগগুলি কীভাবে বরাদ্দ করা হয় তা বোঝা গুরুত্বপূর্ণ। লোড ব্যালেন্সিং।

স্বয়ংক্রিয় ক্লাস্টার এন্ডপয়েন্ট এর ব্যবস্থাপনা ব্যর্থতা এবং রিডার এন্ডপয়েন্ট লোডব্যালেন্সিং DNS (Amazon Route 53) এর মাধ্যমে পরিচালনা করা হয়, IP, TCP, ordatabase ক্লায়েন্ট প্রোটোকল স্তরগুলিতে নয়। ডিএনএস-এর মাধ্যমে সংযোগের বন্টন পরিচালনা করার অর্থ হল আপনার সেই অ্যাপ্লিকেশনটিকে প্রতিটি নতুন সংযোগের অনুরোধের জন্য একটি ডিএনএস ক্যোয়ারী করতে হবে। যে অ্যাপ্লিকেশানগুলি DNS ক্যাশিং ব্যবহার করে তাদের ক্যাশে টাইমআউটকে Amazon Aurora-এর জন্য DNS রেকর্ড TTL-এর সাথে সামঞ্জস্য করা উচিত৷ অরোরা ডিএনএস রেকর্ড টিটিএল-এর চেয়ে বেশি সময় ধরে ডিএনএস প্রতিক্রিয়া ক্যাশ করার ফলে কয়েকটি ত্রুটির অবস্থা দেখা দেবে। যদি একটি হাই-অ্যাভেলেবিলিটি (HA) ফেইলওভার ইভেন্ট থাকে, অর্থাৎ, একটি রিড রেপ্লিকা প্রাইমারিতে উন্নীত হয়, একটি ক্যাশেড ডিএনএস প্রতিক্রিয়ার অর্থ হবে আপনার অ্যাপ্লিকেশনটি পুরানো, ব্যর্থ উদাহরণের সাথে পুনরায় সংযোগ করার চেষ্টা করবে৷ রিডার এন্ডপয়েন্ট এর ক্ষেত্রে ,ডিএনএস রেসপন্স ক্যাশ করার ফলে একাধিক কানেকশন একটি নির্দিষ্ট রিড রেপ্লিকাতে যায়, এর পরিবর্তে উপলভ্য রিড রেপ্লিকা জুড়ে বিতরণ করা হয়।

র্যাপিং আপ

আমরা দেখতে পাচ্ছি, একটি অ-তুচ্ছ উৎপাদন কাজের চাপের ক্ষেত্রে কোনো এক-আকার-ফিট-সমস্ত সমাধান নেই। যদি আপনার আবেদনের অবিলম্বে সামঞ্জস্যের প্রয়োজন হয়, তাহলে নিশ্চিত করুন যে পড়া এবং লেখা উভয়ই ক্লাস্টার এন্ডপয়েন্ট-এ পাঠানো হয়েছে . যখন পঠিত প্রশ্নগুলি একটু প্রতিলিপিকরণ ল্যাগ পরিচালনা করতে পারে, তখন রিডার এন্ডপয়েন্ট-এ পড়ার প্রশ্নগুলি অফলোড করুন .যদি আপনি Read Replicas ব্যবহার করতে পারেন কিন্তু আপনার প্রশ্নগুলি সব ক্লায়েন্টের মধ্যে সমানভাবে বিতরণ করা হয় না, তাহলে ইনস্ট্যান্স এন্ডপয়েন্ট ব্যবহার করুন এবং ক্লায়েন্টের দিকে সংযোগের বিতরণ পরিচালনা করুন। শুধু ভুলে যাবেন না, যদি আপনার অ্যাপ্লিকেশনটি ডিএনএস রেকর্ড TTL-এর চেয়ে বেশি ক্যাশ টাইমআউট সহ DNS ক্যাশিং ব্যবহার করে, তাহলে ক্লাস্টার এন্ডপয়েন্ট-এর সময় এন্ডপয়েন্টগুলি প্রত্যাশিতভাবে আচরণ করবে না বলে মনে হয়। HA ব্যর্থ হয় বা রিডার এন্ডপয়েন্ট ব্যবহার করার সময় .

আপনার আবেদনের প্রকৃতি বোঝা, অরোরা এন্ডপয়েন্টগুলি কীভাবে আচরণ করে এবং সেই জ্ঞানকে সঠিকভাবে প্রয়োগ করা আরও শক্তিশালী অ্যাপ্লিকেশন পরিবেশের দিকে পরিচালিত করবে, যা আপনার এবং আপনার গ্রাহকদের জন্য অত্যন্ত গুরুত্বপূর্ণ। মাঝরাতে কেউ বিভ্রাট কল চায় না।

কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাবটি ব্যবহার করুন৷


  1. কিবানার একটি স্থানীয় উদাহরণ কীভাবে সেট আপ করবেন

  2. MongoDB স্থান ব্যবহার বোঝা

  3. আপনার অবজেক্ট রকেট উদাহরণের সাথে কীভাবে JSONStudio ব্যবহার করবেন

  4. এন্ডপয়েন্ট ম্যাপার থেকে আর কোন এন্ডপয়েন্ট উপলব্ধ নেই [সমাধান করা]