রেডিস একক থ্রেডেড, তারপরে এটি কীভাবে একসাথে I / O করে?


169

রেডিসের কয়েকটি বেসিক বুঝতে চেষ্টা করছি আমি একটি আকর্ষণীয় ব্লগ পোস্ট জুড়ে এসেছি ।

লেখক বলেছেন:

রেডিস একক থ্রেডযুক্ত এপল / কেকিউ এবং আই / ও সম্মতি অনুসারে অনির্দিষ্টকালের জন্য স্কেল করে।

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

কেউ দয়া করে এই বিষয়ে কিছু আলোকপাত করতে পারেন?

উত্তর:


359

ভাল এটি নির্ভর করে যে আপনি কীভাবে সম্মতিটি নির্ধারণ করেন।

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

উদাহরণস্বরূপ, বারটেন্ডার বেশ কয়েকটি গ্রাহকের দেখাশোনা করতে সক্ষম হয় যখন তিনি একবারে কেবল একটি পানীয় প্রস্তুত করতে পারেন। সুতরাং তিনি সমান্তরালতা ছাড়াই সম্মতি প্রদান করতে পারেন।

এই প্রশ্নটি এখানে বিতর্কিত হয়েছে: একত্রীকরণ এবং সমান্তরালতার মধ্যে পার্থক্য কী?

রব পাইকের এই উপস্থাপনাটিও দেখুন ।

একটি একক থ্রেডেড প্রোগ্রাম আই / ও (ডি) মাল্টিপ্লেক্সিং মেকানিজম এবং ইভেন্ট লুপ (যা রেডিস যা করে তা) ব্যবহার করে অবশ্যই I / O স্তরে সম্মতি প্রদান করতে পারে।

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

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


135
চমৎকার বারটেন্ডার উপমা :)
সার্জিও টুলেন্টসভ

3
ভি 4 এই ক্ষেত্রে গেম চেঞ্জার - আমার উত্তরটি স্ট্যাকওভারফ্লো . com/ a/ 45374864/3160475 এ দেখুন :)
ইত্তামার হাবের

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

এখনও 2020 সালে বৈধ?
রবার্তো মানফ্রেদা

21

ঠিক আছে, রেডিস একচেটিয়াভাবে ব্যবহারকারী-স্তরে, ওটিওএইচ, সমস্ত অ্যাসিনক্রোনাস আই / ও কার্নেল থ্রেড পুল এবং / অথবা বিভক্ত-স্তরের ড্রাইভার দ্বারা সমর্থিত।

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

' I / O একমত হওয়ার নিরিখে অনির্দিষ্টকালের জন্য স্কেল করা ' সত্যের সাথে অর্থনৈতিকভাবে খালি। তারা আরও বিশ্বাস পেতে পারে যদি তারা বলেছিল যে 'ক্লায়েন্টরা এক-থ্রেড-প্রতি-ক্লায়েন্টের চেয়ে আরও ভাল স্কেল করতে পারে, ক্লায়েন্টরা বেশি চাওয়া দেয় না', তবে তারা অন্যান্য 'অ্যাসিঙ্ক সলিউশনগুলির দ্বারা ভারী লোডিংয়ের কারণে উড়ে যেতে বাধ্য হতে পারে' যা ব্যবহারকারীর পর্যায়ে সমস্ত কোর ব্যবহার করে।


প্রসঙ্গের বাইরে থাকতে পারে তবে প্রতিটি আপডেট অপারেশন (আইএনসিআর কমান্ড অনুসারে) লক বহন করে? যদি একটি কী (অনুরোধ অনুসারে) তে 1000 সমবর্তী অনুরোধ এবং একটি বর্ধিত ক্রিয়াকলাপ থাকে তবে তা নিশ্চিত করে যে ভেরিয়েবলটি কেবল 1000 বার বৃদ্ধি পেয়েছে?
আমান্ডা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.