এটি যথাসম্ভব সহজ রাখার চেষ্টা করুন এবং ইন্টারফেসগুলি ভালভাবে সংজ্ঞায়িত করা এবং ডকুমেন্টেড করা। উত্পাদনে একটি জটিল সিস্টেম বজায় রাখা এবং ডিবাগ করা সহজেই নরকে পরিণত হয়। সুতরাং যদি একটি সহজ এবং জটিল পদ্ধতি থাকে তবে জটিলটির সাথে যাওয়ার আগে দুবার ভাবেন।
পরিষেবাদি সংজ্ঞায়িত
আমি মনে করি প্রথম পদক্ষেপ হ'ল পরিষেবাগুলি এবং তাদের নির্ভরতাগুলি সনাক্ত করা : স্থিতিশীল সামগ্রী, প্রমাণীকরণ, স্থানীয় চ্যাট, গ্লোবাল চ্যাট চ্যানেল, আঞ্চলিক চ্যাট চ্যানেল, বন্ধুর তালিকা, গিল্ডস, ব্যাগ / ইনভেন্টরি, নিলাম হাউস, গ্লোবাল ম্যাপ, ওয়ার্ল্ড, ...
তারপরে এই পরিষেবাগুলির প্রত্যেকের জন্য সিদ্ধান্ত নেওয়া হয়েছে যে ক্লায়েন্ট তাদের সাথে সরাসরি কথা বলতে পারে। উদাহরণস্বরূপ, ক্লায়েন্টকে গ্লোবাল চ্যাট চ্যানেলগুলির জন্য দায়বদ্ধ সার্ভারগুলির সাথে সরাসরি কথা বলতে দেওয়া সহজ। বিশ্ব সার্ভারগুলিকে চ্যাট বার্তাগুলিতে মোটেই জড়িত থাকতে হবে না। আঞ্চলিক চ্যাট একইভাবে প্রয়োগ করা যেতে পারে তবে খেলোয়াড়েরা অঞ্চল পরিবর্তন করার সময় বিশ্ব সার্ভারগুলিকে চ্যাট সার্ভারগুলি বলতে হয়। আবার, তাদের বার্তাগুলি সম্পর্কে কোনও চিন্তা করার দরকার নেই।
তৃতীয় ধাপটি কোনও পরিষেবার মধ্যে লোড ভারসাম্য সম্পর্কে চিন্তা করা । উদাহরণস্বরূপ গ্লোবাল এবং আঞ্চলিক চ্যাট চ্যানেলগুলি তাদের নামের ভিত্তিতে একাধিক সার্ভারগুলিতে বিভক্ত হতে পারে। ক্লায়েন্টে এই বিভাজনটিকে হার্ড কোড না করা সম্ভবত একটি ভাল ধারণা, তবে একটি অনুসন্ধান পরিষেবা সরবরাহ করা।
ওয়ার্ল্ড সার্ভারস
সবচেয়ে কঠিন অংশটি সাধারণত বিশ্ব সার্ভারগুলি হয় , তাই আমি একটি সহজ পদ্ধতির সাথে শুরু করছি। তিনি যে অঞ্চলে রয়েছেন সে জন্য দায়বদ্ধ সার্ভারের সাথে ক্লায়েন্ট সরাসরি কথা বলতে দেওয়া সম্ভবত একটি ভাল ধারণা So
সহজ পদ্ধতির হ'ল বিশ্বকে স্বাধীন অঞ্চলে বিভক্ত করা । স্বাধীন অঞ্চলগুলির সাথে আমি বোঝাতে চাইছি যে কোনও খেলোয়াড় এক অংশ থেকে অন্য অংশে যেতে পারে না এবং দানবরা অংশগুলি অতিক্রম করতে পারে না। বাইরের বিশ্বের ল্যান্ডস্কেপ এবং গল্পের উপর ভিত্তি করে regions অঞ্চলগুলি খেলোয়াড়ের অঞ্চলগুলি থেকে আলাদা। সাধারণত বেশিরভাগ দানব অন্ধকূপে থাকে এবং খেলোয়াড়রা এই স্বীকার করে যে তাদের একটি অন্ধকূপে প্রবেশের জন্য একটি গেটওয়ে দিয়ে যেতে হবে। বিশেষত যদি সেই অন্ধকূপগুলি প্রতি খেলোয়াড়ের গোষ্ঠী ভিত্তিতে ইনস্ট্যান্ট করা হয়। বাইরের বিশ্বের অন্যান্য উদাহরণগুলি হ'ল উঁচু পাহাড় দ্বারা বেষ্টিত বিভিন্ন মহাদেশ এবং উপত্যকা।
একটি অবিচ্ছিন্ন বিশ্ব পদ্ধতির সত্যই দ্রুত জটিল হয়ে ওঠে, সুতরাং এটির ভাল পরিকল্পনা করার জন্য এটি বোধগম্য হয়: ক্লায়েন্টকে কোন তথ্যের প্রয়োজন হয়? সার্ভারদের কোন তথ্য ভাগ করে নিতে হবে? প্লেয়ার বেশিরভাগ একই অঞ্চলে কেবলমাত্র (দানব এবং এনপিসি সহ) অবজেক্টগুলির সাথে ইন্টারঅ্যাক্ট করবে। আপনি জোন সীমানা থেকে ক্লিক রেঞ্জের বাইরে বস্তুগুলি রেখে প্রতারণা করতে পারেন। এর অর্থ হল ক্লায়েন্ট বেশিরভাগ প্রতিবেশী অঞ্চলগুলির জন্য কেবল তথ্য পড়তে আগ্রহী। এই ক্ষেত্রে জোন সার্ভারগুলিকে পার্শ্ববর্তী অঞ্চলে সংযোগ করার জন্য খেলোয়াড়ের যথেষ্ট কাছাকাছি রয়েছে কিনা তা পরীক্ষা ব্যতিরেকে অনুমতি ব্যতীত আর কিছু সমন্বয় করতে হবে না।
এটি কেবলমাত্র খুব অল্প সংখ্যক কঠিন ক্ষেত্রেই ফেলেছে যেখানে বস্তু বা ক্রিয়াকলাপকে একটি সার্ভার সীমান্ত অতিক্রম করতে হবে। যা একটি ভাল জিনিস কারণ তীর এবং বানানের মতো ক্ষেত্রেগুলি পারফরম্যান্সের সমালোচনা করে। আক্রমণকে আক্রমণ ও প্রতিরক্ষার মধ্যে লড়াইয়ে বিভক্ত করা ভাল ধারণা হতে পারে। সুতরাং একটি স্পেল-কাস্টারের সার্ভার ক্যাটারের অবস্থান সহ আক্রমণ প্যারামিটারগুলি সংজ্ঞায়িত করবে। ডিফেন্ডারের সার্ভার আক্রমণ সম্পর্কে বার্তাটি পাবে এবং তার প্রভাবটি গণনা করবে। আক্রমণকারীর সার্ভারটির প্রভাব সম্পর্কে জানার দরকার নেই; ক্লায়েন্ট তার পঠনযোগ্য সংযোগটি ব্যবহার করে এটি সম্পর্কে শিখবে।
আপনার প্লেয়ার মডেলটি কতটা জটিল তার উপর নির্ভর করে এটি অন্য সার্ভারে স্থানান্তর করতে কয়েক সেকেন্ড সময় নিতে পারে (দ্বিতীয় জীবনে এটির সাথে একটি বিশাল সমস্যা রয়েছে)। যখন খেলোয়াড় ভার্চুয়াল সীমানার কাছাকাছি আসবে তখন অগ্রিম স্থানান্তর প্রস্তুত করে সমস্যাটি প্রশমিত করা যায় । যাতে আসল হ্যান্ডওভারটি ঘটে তখন বেশিরভাগ প্লেয়ার ডেটা গন্তব্য সার্ভারে ইতিমধ্যে ক্যাশে থাকে।
সারাংশ
অল্প নির্ভরতার সাথে সার্ভারগুলিতে বিভক্ত হতে পারে এমন বিভিন্ন পরিষেবা নির্ধারণ করে সমস্যাটি ভাগ করুন। পরবর্তী পদক্ষেপ হিসাবে সমালোচনামূলক পরিষেবাগুলির মধ্যে লোড ভারসাম্য কীভাবে করবেন তা দেখুন। ক্লায়েন্টকে সরাসরি প্রাসঙ্গিক সার্ভারের সাথে সংযোগ করার নির্দেশ দিয়ে ভারসাম্য রক্ষা করার কাজটি পেশ করুন (স্পষ্টত সার্ভারগুলির অনুমতি চেক করতে হবে)। এটি যথাসম্ভব সহজ রাখুন, বিভিন্ন পরিষেবা এবং সার্ভারের দায়িত্বগুলি ভালভাবে নথি করুন, ডিবাগ আউটপুট সক্ষম করার বিকল্প সরবরাহ করুন।
পিএস: এই কৌশলগুলির কয়েকটি নির্ভরযোগ্যতা উন্নত করতে ব্যবহার করা যেতে পারে। এবং আপনার এটি মনে রাখা উচিত কারণ অনেক সার্ভার ব্যবহার করা জিনিস ভাঙ্গার অনেক বেশি ঝুঁকি বোঝায়; কেবল সফ্টওয়্যারেই নয় হার্ডওয়্যার স্তরেও।