স্কেলিং মনোলিথ বনাম স্কেলিং মাইক্রোসার্ফেসিস


15

মাইক্রোসার্ভিসেস ব্যবহারের জন্য সাধারণ যুক্তিগুলির মধ্যে একটি হ'ল আরও ভাল স্কেলাবিলিটি। তবে আমি ভাবছি যে এই যুক্তিটি সত্যই কার্যকর কিনা।

আসুন আমরা বলি যে আমাদের কাছে একটি 10 ​​টি মাইক্রোসার্ভাইস সমন্বিত একটি অ্যাপ্লিকেশন ছিল যার মধ্যে 9 টিতে প্রতি দুটি দৃষ্টান্ত রয়েছে (অতিরিক্ত কাজ করার জন্য) এবং এর মধ্যে একটির সাথে 4 টি ভারসাম্য ভারসাম্যতা (স্কেলিবিলিটি) পরিচালনা করতে পারে। প্রো-মাইক্রোসার্ভাইস যুক্তিটি হ'ল আপনি অন্য পরিষেবাগুলি থেকে এই মিরোসরভিসকে নির্বিচারে স্কেল করতে সক্ষম হন able

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

আমি কিছু অনুপস্থিত করছি?


3
কত বড় মনোলিথ কথা বলছেন? কারণ আমি মনে করি এটি "সামান্য বৃহত্তর" র্যামের চেয়ে বেশি হতে পারে। মোতায়েনের সময় উল্লেখ না করে - বাগ ঠিক করা 4 এর পরিবর্তে 22 মোতায়েন করতে পারে But তবে সম্ভবত আপনার মনোলিথটি ছোট এবং ডিপ্লোয়মেন্টগুলিতে অনেক বেশি সময় লাগে না, ডাটাবেস স্থানান্তরগুলি খুব বেশি সময় নেয় না, ইত্যাদি।
টমাস ওয়ানস

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

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

নোট করুন যে বেসিক "এটির কোড রান করা" এর ওভারহেড অগত্যা যতটা সম্ভব আপনার জাভা অ্যাপ্লিকেশনগুলি থেকে জানা থাকতে পারে যেখানে প্রায়শই পুরো জেভিএম পরিষেবা চিত্রের অংশ of
ফ্র্যাঙ্ক হপকিন্স

উত্তর:


21

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

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

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


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

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

»আমরা এটি করেছি কারণ আমাদের তা করতে হয়েছে কারণ জটিলতা আমাদের চেয়ে আরও ভাল হয়েছে, এবং একটি উপ-সর্বোত্তম পরিস্থিতিকে সর্বোত্তম করে তুলছে« হ্যাঁ। আমার জন্য, এটি নখ!
টমাস

উত্তরের শেষ অংশের সাথে আমার একমত হতে হবে না। মাইক্রো-পরিষেবাগুলি মনোলিথের থেকে অন্তর্নিহিত আরও ভাল, কারণ তারা একাধিক কম্পিউটার ব্যবহার করে
ইওয়ান

1
@ ইউয়ান আপনি একাধিক কম্পিউটারে মনোলিথ ব্যবহার করতে পারেন।
ডিমন

3

আপনি বেশিরভাগই সঠিক আপনার যদি দ্রুত পরিষেবাগুলি থাকে যা সমানভাবে লোড করা হয় তবে আপনি সেগুলি সমস্ত বাক্সে ইনস্টল করতে পারেন। সার্ভিস প্রতি বাক্স রাখার মতো এটি 'দুর্দান্ত' নয়, তবে এটি অর্থ সাশ্রয় করে।

যাহোক. আপনার ভারসাম্য হওয়ার সাথে সাথে, বলুন 5 মিনিটের জন্য পরিষেবা 5 100% সিপিইউ নেয়, আপনি সেই পরিষেবাটিকে তার নিজের বাক্সে সরিয়ে নিতে চান যাতে এটি চালিত হয় তবে অন্যান্য সমস্ত পরিষেবাগুলিকে অবরুদ্ধ করে না।

যদি লোডের কারণে 5 বার পরিষেবাতে কল করা হয়, তবে আপনার অ্যাপ্লিকেশনটির কিছু ফাংশন সকলের পরিবর্তে ব্যর্থ হবে।

এখন আপনি একই জিনিসটি একটি ভাল মডুলারাইজড মনোলিথ দিয়ে করতে পারেন। সমস্ত পরিষেবা ইনস্টল করুন, তবে কেবল রুট সার্ভিস এর মধ্যে একটিতে ট্র্যাফিক। পরিষেবাটি রাউটিং না করার সময় অন্যান্য বাক্সে 5 টি ট্র্যাফিক।

তবে সাধারণত তাদের প্রকৃতির মনোলিথগুলি সেবার কোনও looseিলে .ালা সংগ্রহ নয় যা একই বাক্সে ইনস্টল করা হয়। মডিউলগুলির মধ্যে মেমরি কল থাকবে যা অ্যাপ্লিকেশনটির ব্যর্থতার কারণ হবে।


1

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


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