মঙ্গোডিবি: অ্যাপ্লিকেশন সার্ভারে মঙ্গোস প্রক্রিয়া সহ-সনাক্ত করুন


12

আমি এই নথিতে বর্ণিত সেরা অনুশীলন সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করতে চাই:

http://info.mongodb.com/rs/mongodb/images/MongoDB-Performance-Best-Practices.pdf

একাধিক ক্যোয়ারী রাউটারগুলি ব্যবহার করুন। একাধিক সার্ভারে ছড়িয়ে একাধিক মঙ্গোস প্রক্রিয়া ব্যবহার করুন। একটি সাধারণ স্থাপনা হ'ল অ্যাপ্লিকেশন সার্ভারগুলিতে মঙ্গোস প্রক্রিয়াটি সহ-সনাক্ত করা, যা অ্যাপ্লিকেশন এবং মঙ্গোস প্রক্রিয়াটির মধ্যে স্থানীয় যোগাযোগের সুযোগ দেয় appropriate যথাযোগ্য মঙ্গোস প্রক্রিয়াগুলি অ্যাপ্লিকেশন এবং স্থাপনার প্রকৃতির উপর নির্ভর করবে।

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

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

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

mongosঅ্যাপ্লিকেশন সার্ভারের উদাহরণ গণনা বা মঙ্গোডিবি ক্লাস্টারের আকারের ক্ষেত্রে কতটা দৃষ্টান্ত উপযুক্ত তা সিদ্ধান্ত নিতে আপনার সর্বোত্তম পদ্ধতির বিষয়ে আপনার মতামত কী ?

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

উত্তর:


12

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

সত্যটি হ'ল "আপনার অ্যাপ্লিকেশন কীভাবে ডেটা ব্যবহার করে" তা বিবেচনা করা এবং এটি "প্রভাবিত পরিবেশ" এর পাশাপাশি আপনার প্রস্তাবিত "ধারক পরিবেশ" যেগুলি প্রভাবিত করে সে সম্পর্কেও সচেতন হওয়া।

পটভূমি কেস

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

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

এই বিশেষ ক্ষেত্রে mongos"হালকা" হওয়া এবং অ্যাপ্লিকেশন প্রক্রিয়ায় একটি "অতিরিক্ত ফাংশন" হিসাবে চালানো বোঝানো হয়েছে এটি অ্যাপ্লিকেশনটির একটি "জুটিযুক্ত" অংশ is সুতরাং ডকার ইমেজগুলির নিজস্ব প্রক্রিয়াটির মতো একটি "আরআইডিডি" থাকে না তবে সুপারভাইজারের মতো একটি প্রক্রিয়া নিয়ন্ত্রক চালানোর ক্ষেত্রে কোনও সমস্যা নেই (উদাহরণস্বরূপ) ধারকটির মূল প্রক্রিয়া হিসাবে এটি আপনাকে প্রক্রিয়া নিয়ন্ত্রণের একটি বিন্দু দেয় which যে ধারক পাশাপাশি। "জোড় করা প্রক্রিয়াগুলি" এর এই পরিস্থিতিটি একটি যুক্তিসঙ্গত ক্ষেত্রে এবং সাধারণভাবে এটির জন্য অফিসিয়াল ডকুমেন্টেশন রয়েছে বলেও জিজ্ঞাসা করুন ।

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

সংস্করণ নির্দিষ্ট / ব্যবহার নির্দিষ্ট

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

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

টেস্ট, টেস্ট এবং তারপরে আবার টেস্ট

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

"এই উপায়ে কনফিগার করুন" বা "এই পদ্ধতিতে ব্যবহার করুন" বলার পক্ষে সত্যই "সুনির্দিষ্ট" বক্তব্য নেই যা প্রত্যাশার মতো আপনার অ্যাপ্লিকেশন কর্মক্ষমতা এবং নির্ভরযোগ্যতার জন্য "আসলে সবচেয়ে ভাল কাজ করে" কী তা পরীক্ষা করা ছাড়া সত্যই বোধগম্য হয়।

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

এটি লক্ষ্য, তবে আদর্শিকভাবে আপনি আপনার অন্তর্ভুক্তি স্থাপনের সমাধানের জন্য "সেরা ফিট" সমাধানটিতে আসতে পারেন এমন বিভিন্ন কনফিগারেশনগুলিকে "ল্যাব টেস্ট" করতে পারেন "

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


5

যেহেতু সেরা অনুশীলন এও পরামর্শ দেয় যে "উপযুক্ত সংখ্যক মঙ্গোস প্রক্রিয়াগুলি প্রয়োগ এবং স্থাপনার প্রকৃতির উপর নির্ভর করবে" আমি ভাবতে শুরু করেছিলাম যে আমাদের মঙ্গোসের ব্যবহার আসলে উপযুক্ত কিনা?

আমি মনে করি এটি এমন একটি প্রশ্ন যা শেষ পর্যন্ত কেবলমাত্র আপনি উত্তর দিতে পারেন, যেমন ডকুমেন্টেশন উল্লেখ করে।

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

যদি আমরা ডকার ব্যবহার করে থাকি তবে সাধারণত ধারকটির মধ্যে একাধিক প্রক্রিয়া চালানো নিরুৎসাহিত করা হয়।

যেহেতু mongosপ্রক্রিয়াটি খুব সংস্থানীয় সংস্থান নয়, তাই আপনি আপনার প্রতিটি শারডের উপর এটির উদাহরণও রাখতে পারেন এবং প্রতিটি mongodনোডকে নোড হিসাবেও কাজ করতে পারেন mongos। আপনি যদি নিজের অ্যাপ্লিকেশন সার্ভারের আর্কিটেকচারটিকে আরও জটিল করে তুলেন তবে এটি আরও অর্থবহ হতে পারে।

আমি ব্যক্তিগতভাবে এই পণ্যগুলির সাথে খুব বেশি পরিচিত নই তবে আমি তাদের সুপারিশগুলিতে বিক্রেতার সাথেও যাচাই করবো যেহেতু mongosআপনি পাশাপাশি চলতে পারেন এমন অন্যান্য প্রক্রিয়াগুলির চেয়ে কম নিবিড় হতে পারে।

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

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

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


দুর্দান্ত উত্তরের জন্য ধন্যবাদ! "তবে আপনি যদি ডেডিকেটেড নোডগুলি ব্যবহার করতে চলেছেন তবে আমি অ্যাপ্লিকেশন নোডের সংখ্যার যতটা সম্ভব ঘনিষ্ঠভাবে মিলানোর চেষ্টা করব।" এই বক্তব্যের পিছনে যুক্তি কী?
দশশি

আমার মতামত: বেশিরভাগ ক্ষেত্রে শারডের চেয়ে কম অ্যাপ্লিকেশন নোড রয়েছে এবং যেহেতু একটি সুপারিশ করার জন্য অ্যাপ নোড ব্যবহার করা হয় mongos, তবে একই সংখ্যক ডেডিকেটেড নোডের সাথে মিল রেখে কমপক্ষে পর্যাপ্ত পরিমাণে mongosদৃষ্টান্ত সরবরাহ করা উচিত । এটি একটি নিখুঁত বিজ্ঞান নয় এবং এটি আপনার প্রয়োজনের উপর নির্ভর করে তবে আমি কীভাবে একটি উত্পাদন পরিবেশ পছন্দ করব।
লোলিডিবিএ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.