আমি প্যাস্ট্রি ডিস্ট্রিবিউটড হ্যাশ টেবিলটি বাস্তবায়নের চেষ্টা করছি, তবে কিছু জিনিস আমার বোধ থেকে দূরে রয়েছে। আমি আশা করছিলাম যে কেউ স্পষ্ট করতে পারে।
দাবি অস্বীকার : আমি কম্পিউটার বিজ্ঞানের শিক্ষার্থী নই। আমি আমার জীবনের সুনির্দিষ্টভাবে দুটি কম্পিউটার বিজ্ঞান কোর্স নিয়েছি এবং দূরবর্তী জটিল কোনও কিছুইই করি নি। আমি কয়েক বছর ধরে সফ্টওয়্যার নিয়ে কাজ করেছি, তাই আমি অনুভব করি আমি বাস্তবায়নের কাজটি করতে প্রস্তুত, যদি আমি কেবল ধারণাগুলির চারপাশে আমার মাথা গুটিয়ে রাখতে পারি। সুতরাং আমি ঠিক কিছু স্পষ্ট অনুপস্থিত হতে পারে।
আমি লেখকরা প্রকাশিত কাগজটি পড়েছি [1], এবং আমি কিছু ভাল অগ্রগতি করেছি, তবে রাউটিং টেবিলটি কীভাবে কাজ করে তা সম্পর্কে আমি এই একটি নির্দিষ্ট পয়েন্টটিতে ঝুলতে থাকি:
কাগজ দাবি করেছে যে
একটি নোডের রাউটিং টেবিল, , সহ সারিগুলিতে সংগঠিত টি করে এন্ট্রি । সারিতে এন্ট্রি রাউটিং টেবিল প্রতিটি একটি নোড যার nodeId শেয়ারের বর্তমান নোড এর nodeId ফাই মধ্যে প্রথম এন সংখ্যা, কিন্তু যাদের পড়ুন ম অঙ্ক অন্যতম সম্ভাব্য মান ছাড়া অন্য বর্তমান নোড এর আইডি তম অঙ্ক।
একটি অ্যাপ্লিকেশন-নির্দিষ্ট পরিবর্তনশীল, সাধারণত ঘোরা । সরলতার জন্য, ব্যবহার করি । সুতরাং উপরের হয়
একটি নোড এর রাউটিং টেবিল , মধ্যে সংগঠিত হয় সঙ্গে সারি এন্ট্রি প্রতিটি। সারিতে এন্ট্রি রাউটিং টেবিল প্রতিটি একটি নোড যার nodeId শেয়ার ফাই উপস্থিত নোড এর nodeId প্রথম এন সংখ্যা, কিন্তু যাদের পড়ুন ম অঙ্ক অন্যতম সম্ভাব্য মান ছাড়া অন্য বর্তমান নোডের আইডিতে 1 ম সংখ্যা।
আমি অনেক কিছু বুঝতে পারি। আরও, ক্লাস্টারে সার্ভারের সংখ্যা। আমি তাও পেয়েছি।
আমার প্রশ্ন হ'ল যদি একটি সারিটিতে একটি এন্ট্রি রাখা হয় তবে কীটির ভাগ করা দৈর্ঘ্যের উপর নির্ভর করে, সারিগুলির সংখ্যার উপর আপাতদৃষ্টিতে এলোমেলো সীমা কেন? প্রতিটি নোডআইডের 32 টি সংখ্যা থাকে, যখন (128 বিট নোডআইডস বি বিটের অঙ্কগুলিতে বিভক্ত)। সুতরাং যখন সেখানে কি ঘটছে এন যথেষ্ট উচ্চ যে পায় ⌈ লগ ইন করুন 16 এন ⌉ > 32 ? আমি বুঝতে পারি যে এই দৃশ্যটি হিট করতে 340,282,366,920,938,463,463,374,607,431,768,211,457 (যদি আমার গণিতটি ঠিক থাকে) সার্ভারগুলি লাগে তবে এটি কেবল একটি বিজোড় অন্তর্ভুক্তির মতো বলে মনে হয় এবং সম্পর্কটি কখনও ব্যাখ্যা করা হয় না।
তদুপরি, আপনার যদি সংখ্যক সার্ভার থাকে তবে কী হবে? আমার যদি 16 টিরও কম সার্ভার থাকে তবে আমার কেবল টেবিলের মধ্যে একটি সারি থাকবে। তদ্ব্যতীত, কোনও পরিস্থিতিতেই সারিতে প্রতিটি প্রবেশের সাথে সংশ্লিষ্ট সার্ভার থাকবে না। এন্ট্রিগুলি খালি রেখে দেওয়া উচিত? আমি বুঝতে পেরেছি যে কয়েকটা সার্ভার দেওয়া হোক না কেন আমি পাতায় সার্ভারটি সন্ধান করতে সক্ষম হব, তবে দ্বিতীয় সারির জন্য একই প্রবণতা উত্থাপিত হবে - যদি আমার কোনও নোডআইড নেই এমন সার্ভার না থাকে তবে কী হবে? এমন যে আমি নবম অঙ্কের প্রতিটি সম্ভাব্য ক্রমশক্তি পূরণ করতে পারি? অবশেষে, আমার কাছে যদি বলুন, চারটি সার্ভার রয়েছে এবং আমার দুটি নোড রয়েছে যা ভাগ করে বলুন, 32 টির মধ্যে 20 টির কয়েকটি র্যান্ডম ফ্লুক দ্বারা ... আমি কি সেই নোডের জন্য টেবিলের 20 সারি পপুলেশন করব? আমার থেকেও অনেক বেশি সারি এমনকি পূরণের কাছাকাছি আসতে পারে?
আমি এখানে কী নিয়ে এসেছি, এর মাধ্যমে আমার যুক্তি দেখানোর চেষ্টা করছি:
- প্রিফিক্সটির সাথে যথাযথভাবে মেলে এমন নোড না থাকলে এন্ট্রিগুলি নাল মানতে সেট করতে হবে।
- নোডআইডসের ভাগ করা দৈর্ঘ্যের সাথে মেলে যথেষ্ট সারি উপস্থিত না হওয়া পর্যন্ত খালি সারি যুক্ত করা উচিত।
- যদি এবং কেবলমাত্র, পছন্দসই বার্তা আইডির জন্য কোনও মিল নেই, তবে নোডআইডের জন্য রাউটিং টেবিলের অনুসন্ধানে পিছনে পড়ুন যার শেয়ার্ডের দৈর্ঘ্য বর্তমান নোডআইডের চেয়ে বড় বা সমান এবং যার প্রবেশিকা গাণিতিকভাবে বর্তমানের চেয়ে বেশি নিকটে রয়েছে নোডআইডস পছন্দসই আইডিতে।
- # 3 তে যদি কোনও উপযুক্ত নোড পাওয়া না যায় তবে ধরে নিন এটিই গন্তব্য এবং বার্তাটি সরবরাহ করুন।
এই চারটি অনুমান কি ধরে আছে? আমি অন্য কোথাও এই সম্পর্কে তথ্য খুঁজছেন উচিত?
- পেস্ট্রি: স্ক্রিয়েবল, বিকেন্দ্রীভূত অবজেক্টের অবস্থান এবং এ.রউস্ট্রং এবং পি। ড্রসচেল (2001) দ্বারা বৃহত আকারের পিয়ার-টু-পিয়ার সিস্টেমের জন্য রাউটিং - এখানে ডাউনলোড করুন