বিতরণ পরিষেবাগুলিতে কীভাবে "পুনরায় ঝড়" এড়ানো যায়?


10

একটি "পুনরায় চেষ্টা ঝড়" সৃষ্টি হয় যখন ক্লায়েন্টরা হার দেওয়ার আগে একটি সেট সংখ্যক বার পুনরায় চেষ্টা করার জন্য কনফিগার করা হয়, কোনও পরিষেবার স্বাভাবিক ক্রিয়াকলাপে প্যাকেটের ক্ষতি হ্রাসের কারণে পুনরায় চেষ্টা করার নীতিটি প্রয়োজনীয়।

এই উদাহরণটি ধরুন:

নমুনা আর্কিটেকচার

উদাহরণস্বরূপ, যদি সামগ্রিক পরিষেবাগুলিকে সেকেন্ডে ৮০,০০০ অনুরোধগুলি সমর্থন করার জন্য এবং ক্ষমতার প্রায় ৮০% গতিতে চালিত করা হয়, তবে ট্র্যাফিকের একটি স্পাইক যার ফলে পরিষেবা প্রতি সেকেন্ডে ১০,০০,০০০ অনুরোধ পেয়েছিল এবং সেই অনুরোধগুলির মধ্যে ১০০ জন ব্যর্থ হতে পারে।

যখন পুনরায় চেষ্টা করার নীতিগুলি শুরু হয় তখন আপনি অতিরিক্ত 1000+ অনুরোধগুলি শেষ করেন, যেখানে ব্যর্থতা সনাক্ত করা হয়েছিল তার উপর নির্ভর করে যা প্রতি সেকেন্ডে 102,000 অনুরোধগুলিতে পরিষেবাটিকে ধাক্কা দেবে - সেখান থেকে আপনার পরিষেবাটি দ্বিগুণ দ্বিগুণ হয়ে মৃত্যুর স্ফুলিতে যায় প্রতি সেকেন্ডে ব্যর্থ অনুরোধের।

প্রস্তাবিত পিক লেনদেনের বাইরেও প্রচুর পরিমাণে অতিরিক্ত পরিষেবা দেওয়ার ব্যবস্থা করা, যা অকার্যকর হবে। "আবার চেষ্টা করুন ঝড়" এড়াতে আপনি কী কৌশল ব্যবহার করতে পারেন?


যদি 100kQPS 80% ধারণক্ষমতা হয়, তবে 101kQPS এর 1k ব্যর্থতার ফলস্বরূপ হওয়া উচিত নয়, এর ফলাফল শূন্য ব্যর্থতা হতে পারে - এটি কি ওভারপ্রোভিজনিংয়ের বিন্দু নয়?
অ্যাড্রিয়ান

@ অ্যাড্রীয়ান আপনার অধিকার, বিষয়টি ব্যাখ্যা করার পক্ষে এটি একটি স্ববিরোধী উদাহরণ ছিল - আমি অত্যধিক বিমূর্ততা ছাড়াই আমার বক্তব্য পরিষ্কার করার জন্য যথেষ্ট পরিমাণে হ্রাস করার চেষ্টা করছিলাম। আমি "100,000 সমর্থন করার জন্য স্কেলডকে" "80,000 সমর্থন করার জন্য স্কেলড" সংশোধন করেছি।
রিচার্ড স্লেটার

উত্তর:


7

এটি আপনি কী এড়াতে চাইছেন তার উপর নির্ভর করে।

যদি আপনি এমন কোনও পরিষেবার আন্তঃব্যবস্থা এড়ানোর চেষ্টা করছেন যা সত্যই সমালোচনামূলক পরিষেবা (আমি "আমার এপিআই কলটি যথাযথভাবে পরিষেবা না দেওয়া হয় তবে লোকেরা মারা যাবে" পদে ভাবছি) যে বিশাল অদক্ষতার জন্য আপনার কেবল বাজেট প্রয়োজন উত্সর্গীকৃত সংস্থান সরবরাহ করার উপর থেকে আসে। এবং হ্যাঁ তাদের উত্সর্গীকৃত হতে হবে, ট্র্যাফিক স্পাইক স্টাফের জন্য এগুলির কোনওটিই অনুমতি দেয় না, একাধিক পরিষেবা স্পাইকিংয়ের ফলে এই বিস্তৃতি ঘটবে।

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

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

আপনার সার্ভার সাইড অবকাঠামোর জন্য সবচেয়ে সহজ সমাধান হ'ল থ্রোটল্ট। অনুরোধগুলির উপর কঠোর সীমাবদ্ধতা, বিশেষত যদি আপনি আপনার নির্দিষ্ট ব্যবহারের কেসের ভিত্তিতে এগুলি যৌক্তিকভাবে চেষ্টা করতে এবং ছড়িয়ে দিতে পারেন (উদাহরণস্বরূপ, যদি আপনার কোনও কেন্দ্রীভূত পরিষেবা থাকে তবে কিছু কঠোর সিদ্ধান্ত নেওয়া হয়, আপনি কি ভৌগলিকভাবে দূরবর্তী অনুরোধগুলি ব্লক করা শুরু করতে চান যার ফলে থ্রেডগুলি ঝুলতে পারে resulting সার্ভার সাইড? বা আপনি কি আপনার অনিবার্যভাবে এখনও সামান্য আউটেজকে সমানভাবে বিতরণ করতে চান? ইত্যাদি) এটি মূলত এই ফোটায় যে গেটওয়ে থেকে ইচ্ছাকৃতভাবে 503 ফিরিয়ে দেওয়া অনুরোধটি দেওয়া এবং 504 প্রেরণের চেয়ে অনেক কম খরচে নরক যাহাই হউক না কেন। মূলত আপনি বর্তমানে সঠিক প্রতিক্রিয়া সরবরাহ করতে পারেন এবং ক্লায়েন্টরা যথাযথ প্রতিক্রিয়া জানাতে পারে তার ভিত্তিতে ক্লায়েন্টদের আচরণ করতে বাধ্য করুন।


5

এই পুনরায় চেষ্টা ঝড় প্রতিরোধের একটি উপায় ব্যাক অফ পদ্ধতি ব্যবহার করে।

স্কেল গাইডের জন্য গুগল অ্যাপ ইঞ্জিন ডিজাইনিংয়ের পুনরায় চেষ্টা করার প্রয়োগ ব্যাকঅফ থেকে :

ক্লাউড ডেটাস্টোরের মতো কোনও পরিষেবা বা ইউআরএল ফেচ বা সকেট এপিআই ব্যবহার করে কোনও বাহ্যিক পরিষেবা কল করা হোক না কেন, আপনার কোড ব্যর্থতার জন্য আবার চেষ্টা করতে পারে। এই ক্ষেত্রে বজ্রপাতের ঝাঁকুনির সমস্যা এড়াতে আপনার সর্বদা একটি এলোমেলো তাত্পর্যপূর্ণ ব্যাক অফ নীতি কার্যকর করা উচিত । সর্বাধিক পুনরায় চেষ্টা করার সীমাটি পৌঁছানোর পরে আপনার মোট পুনরায় চেষ্টা এবং ব্যর্থতাগুলি হ্যান্ডেল করাও উচিত।

বেশিরভাগ জিএইপি এপিআইয়ের ইতিমধ্যে ডিফল্টরূপে সক্ষম এমন ব্যাকঅফ প্রক্রিয়া / নীতি রয়েছে।


ধন্যবাদ, ব্যাকঅফ প্রক্রিয়াগুলি বাস্তবায়ন করা দুর্দান্ত পরামর্শ, আমি সাধারণত ট্রান্সিয়েন্ট ফল্ট হ্যান্ডলিং অ্যাপ্লিকেশন ব্লকটি ব্যবহার করে কনফিগারযোগ্য এক্সফোনেনশিয়াল ব্যাকফের জন্য যাই । তবে, আজুরের অপারেটিং হাইপার-স্কেল অ্যাপ্লিকেশন 5+ বছরের অপারেটিং অভিজ্ঞতার মধ্য দিয়ে, এমনকি "পুনরায় চেষ্টা করুন" জায়গায় ঘনিষ্ঠভাবে ব্যাকফের পরেও প্রায়শই প্রায়শই ঘটে - এগুলি এড়াতে আমি কোনও কার্যকর কৌশল খুঁজে পাইনি।
রিচার্ড স্লেটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.