মাইক্রোসার্ভেসিসে, এটি প্রতিটি পরিষেবার জন্য একক ডাটাবেস বা একক ডাটাবেস উদাহরণ?


50

আমি বুঝতে পেরেছি যে একটি মাইক্রোসারওয়াস আর্কিটেকচারের প্রতিটি পরিষেবায় নিজস্ব ডাটাবেস থাকা উচিত। যাইহোক, নিজস্ব ডাটাবেস থাকার দ্বারা, এর অর্থ কি কেবল একই ডাটাবেসের উদাহরণের মধ্যে কেবল অন্য ডাটাবেস থাকা বা আক্ষরিক অর্থে অন্য ডাটাবেস উদাহরণ থাকা?

এর মাধ্যমে, আমি ডেটাবেসগুলি ভাগ করে নেওয়ার অর্থ নয়, যা একটি নং নয়, বরং ডাটাবেসের উদাহরণ।

উদাহরণস্বরূপ, যদি আমি এডাব্লুএস ব্যবহার করতাম এবং 3 টি পরিষেবা থাকি তবে আমি কি প্রতিটি সিডিএসে প্রতিটি সেবার জন্য 3 টি ডাটাবেস তৈরি করি বা 3 টি পরিষেবার প্রতিটি দ্বারা স্বতন্ত্রভাবে ব্যবহার করা হয় এমন একটি ডাটাবেসযুক্ত প্রত্যেকটি 3 টি আরডিএস তৈরি করি?

যদি কোনও একক আরডিএস উদাহরণে একাধিক ডাটাবেস ব্যবহার করা আরও ভাল ধারণা হয় তবে এটি কি স্বাধীন পরিষেবা থাকার উদ্দেশ্যকে পরাস্ত করবে কারণ:

  1. আরডিএস উদাহরণের সংস্থানগুলি পরিষেবাগুলির মধ্যে ভাগ করা হবে। পরিষেবা A যা কোনও নির্দিষ্ট সময়ে প্রভাব ফেলতে পারে এমন পরিষেবা বিতে ভারী ডাটাবেস ব্যবহার থাকতে পারে যা একই ডাটাওয়ার ব্যবহার করে তবে একই আরডিএসে?

  2. সমস্ত পরিষেবাদি সেই আরডিএস দৃষ্টান্তের ডাটাবেস সংস্করণে নির্ভর করবে।


8
এটি আপনার নির্দিষ্ট প্রয়োজনীয়তার সাথে সর্বোত্তমভাবে মিলিত হয়।
রবার্ট হার্ভে

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

বিষয়টি সম্পর্কে এখানে একটি ভাল পঠন এখানে রয়েছে: প্লেইনডলবোজেক্টস ডটকম
২০১/0

'একক দায়িত্বের নীতি' সম্পর্কে পড়ুন। অন্যান্য মাইক্রো সার্ভিসেস ব্যবহার করে এমন একটি 'ডাটাবেস মাইক্রোসার্চেস' প্রয়োগের বিষয়ে আপনি কি ভেবে দেখেছেন?
চককট্রিল

উত্তর:


20

এটি সত্যই আপনার স্কেল্যাবিলিটি প্রয়োজনীয়তার উপর নির্ভর করে এবং কীভাবে / যদি আপনার মাইক্রো সার্ভিস উদাহরণগুলির একক ফলাফল সরবরাহ করতে সহযোগিতা করা প্রয়োজন। এটি ট্রেড-অফগুলি কী তা জানতে সহায়তা করে:

এটিকে একটি ডাটাবেসে রাখা

  • আরও সহজ কনফিগারেশন
  • আপনার পরিষেবার অন্যান্য দৃষ্টান্তগুলির সাথে কোনও সমন্বয় বা যোগাযোগের প্রয়োজন নেই
  • আপনার সম্পূর্ণ ডেটাসেট আবিষ্কার করা সহজ
  • ডাটাবেস কর্মক্ষমতা দ্বারা সিস্টেম কর্মক্ষমতা সীমাবদ্ধ

ডাটাবেস পৃথক রাখা

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

আপনি কী সমস্যা সমাধান করছেন?

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

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

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

মতবাদ এবং বাস্তবতা

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

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

বাস্তবতাটি হ'ল সময় মতো ফ্যাশনে কাজ করতে এবং আপনার পরিমাপ করা সিস্টেমের বোঝা পরিচালনা করার জন্য আপনার প্রকল্পের নির্দিষ্ট প্রয়োজনগুলির জন্য বিভিন্ন সমঝোতার প্রয়োজন হবে (আরও কিছুটা বেশি)। উচ্চতর লক্ষ্য হতে পুরোপুরি বিচ্ছিন্ন ফ্রন্ট-এন্ড, মাইক্রোসররিভাইস এবং ডেটা স্তর স্তরের ত্রয়ীটিকে বিবেচনা করুন। আপনার সিস্টেমে যত বেশি চাহিদা, সেই লক্ষ্যটির আরও কাছাকাছি হওয়ার দরকার আপনার। আমরা সবাই নই [insert name of highly successful web entity here], তারা এখন কোথায় আছে সেগুলি তারা শুরু করে নি। কখনও কখনও আপনার কেবল নিখুঁত পরিস্থিতির চেয়ে কম শুরু করে শুরু করতে হবে এবং এতে খুশি হতে হবে।


71

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

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

সুতরাং কোনও পরিষেবা কেবল এই কারণে মাইক্রোসওয়ারস আর্কিটেকচার লঙ্ঘন করে না কারণ আপনি তাদের দু'জনকে কিছু সংস্থান ভাগ করতে দিয়েছেন - সম্পদ ভাগ করে নেওয়া বাধ্যতামূলক হয়ে উঠলে এটি লঙ্ঘন করে।


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

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

1
প্রতিক্রিয়াটির জন্য ধন্যবাদ @ ডকব্রাউন এটি উপলব্ধি করে!
রেগেইগুইটার

13

এটা কোন ব্যাপার না।

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


1
একটি নির্দিষ্ট আরডিএস উদাহরণে যদি কোনও নির্দিষ্ট পরিষেবাদির অতিরিক্ত ব্যবহার হয় তবে ধরে নেওয়া, এটি কি সেই পরিস্থিতিতে থাকা সংস্থানগুলি খেয়ে শেষ করবে এবং সেই একই আরডিএস উদাহরণটি ব্যবহার করে অন্যান্য পরিষেবাগুলিকে প্রভাবিত করবে?
জেনন

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

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

3

একটি আরডিএস উদাহরণ হ'ল একক বাক্স। যদি আপনার একক উদাহরণে একাধিক ডাটাবেস থাকে তবে তারা সিপিইউ / মেমরি ইত্যাদি ভাগ করে নেয়

যদি আপনার মাইক্রোসারওয়াইস পারফরম্যান্সটি এটির ডাটাবেস পারফরম্যান্সের সাথে আবদ্ধ থাকে : তবে মাইক্রোসার্চিসের একাধিক অনুলিপি মোতায়েন করা, প্রতিটি পৃথক ডাটাবেস ব্যবহার করে, তবে একই আরডিএস উদাহরণে প্রতিটি ডাটাবেস সহ। অর্থহীন * (ব্যর্থতা ব্যতীত)। আপনার মাইক্রোসার্ভাইস ক্লাস্টারটি একটি একক মাইক্রোসার্ভিস হিসাবে একই গতিতে চলবে

যাইহোক , আমি বলব যে একটি মাইক্রোসার্চিস যা ডাটাবেস সম্পাদনের দ্বারা আবদ্ধ bound

সাধারণত আপনার মাইক্রোসার্চিস একটি ডিবি থেকে ডেটা পাবেন, কিছু যুক্তি সম্পাদন করুন এবং কিছু তথ্য ডাটাবেসে ফিরে লিখবেন। পারফরম্যান্সের বাধাটি যুক্তি , নির্বাচন এবং / অথবা সন্নিবেশ নয়।

এক্ষেত্রে আপনি কেবল আপনার সমস্ত মাইক্রোসার্ভিস উদাহরণগুলিতে একই ডাটাবেসটি ভাগ করে নিতে পারেন


আপনার এই দৃ question়তা সম্পর্কে আমাকে প্রশ্ন করতে হবে যে যুক্তিটি হ'ল বাধা, না ডাটাবেস। আমার অভিজ্ঞতায়, পারফরম্যান্সের উন্নতিগুলির সর্বাধিক সম্ভাব্য জায়গাটি হ'ল ডেটাবেস।
রাবারডাক

হুম হ্যাঁ, কিন্তু নিশ্চয় যারা পারফরম্যান্সের উন্নতি যুক্তিবিজ্ঞান চলন্ত দ্বারা অর্জন করা হয় আউট ডিবি ও সেবা মধ্যে। একবার আপনি এটি করেন, তারপরে যুক্তিটি হ'ল প্রতিবন্ধকতা
ইওয়ান

1
সাধারণত, না। এই উন্নতিগুলি টিউনিং সূচী এবং প্রশ্নগুলি থেকে আসে।
রাবারডাক

ভাল, যে আমার অভিজ্ঞতা অস্বাভাবিক ক্ষেত্রে পড়বে। এই উন্নতির জন্য সাধারণত জায়গা নেই তা নয়, তবে কোনও সত্যই খারাপ জিনিস সরিয়ে নেওয়ার পরে ডাটাবেস এখনও সীমাবদ্ধ ফ্যাক্টর।
ইভান

1

কোনও পরিষেবায় একটি ডাটাবেস ব্যক্তিগত রাখার লক্ষ্য হ'ল এনক্যাপসুলেশন। আপনার মাইক্রোসারওয়াইস একটি কালো বাক্স যা সিস্টেমের অন্যান্য পরিষেবাগুলি সর্বজনীন ইন্টারফেসের মাধ্যমে ব্যবহার করবে।

দুটি প্লেন রয়েছে যার উপরে এই এনক্যাপসুলেশনটি পরিচালনা করে:

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

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


1

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

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

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

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

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


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