কোনও মাইক্রোসারওয়াস আর্কিটেকচারে কি পরিষেবাগুলি একে অপরের সাথে সরাসরি কথা বলা উচিত?


10

আমার কাছে বেশ কয়েকটি ওয়েব পরিষেবা রয়েছে যা একটি ওয়েব অ্যাপ্লিকেশন গঠন করে। ক্লায়েন্টরা আরএসটি এপিআই কলগুলির মাধ্যমে এই পরিষেবাগুলি অ্যাক্সেস করতে পারে।

এই পরিষেবাগুলি একে অপরের সাথে সরাসরি কথা বলতে সক্ষম হবে? যদি তাই হয় তবে তাদের কী দম্পতি তৈরি করবে না যা মাইক্রোসার্ভেসিসের ধারণার বিরুদ্ধে?

ক্লায়েন্টের কোনও ওয়েব পৃষ্ঠা লোড করার জন্য প্রয়োজনীয় ডেটা পাওয়ার জন্য ক্লায়েন্টকে তাদের একের পর এক কল করা উচিত?

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


যদি জিনিসগুলি সম্পূর্ণরূপে নিঃশব্দ করা থাকে তবে সেগুলি সম্পূর্ণ পৃথক পণ্য। সুতরাং ব্যবহারকারীকে কনটোস লগইনে লগইন করতে হবে, তারপরে কনটোস লগইন বলবে "আপনি এখন লগইন করেছেন!" ... এবং তারপরে তারা কনটোস সেনসিটিভ ডেটা স্টোরেজে যান, "হ্যাঁ, আমি লগ ইন করেছি" বলে বাক্সটি টিক দিন "... তারপরে
কন্টোসো

উত্তর:


16

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

শেষ অবধি, আপনার কাছে মাইক্রোসার্চিস অ্যাপ্লিকেশন থাকবে যা বিকল্প একরকম অ্যাপ্লিকেশনটির চেয়ে ধীর গতিতে রয়েছে তবে প্রায় একই সমস্যা রয়েছে!

আমাকে @ রবার্ট হার্ভির সাথে একমত হতে হবে না

অনুশীলনে, তবে আপনার এক বা একাধিক মাইক্রোসার্ভিসেস (সম্ভবত তাদের সবকটি) এসকিউএল ডাটাবেসের মতো কিছু কেন্দ্রীয় ডেটা স্টোরের সাথে কথা বলবে।

ইন্টিগ্রেশন ডাটাবেস সুপরিচিত অ্যান্টিপ্যাটার্ন

আপনার পরিষেবাদিগুলির মধ্যে সংযোগ স্থাপনের জন্য একটি আরও ভাল সমাধান প্রকাশের সাবস্ক্রাইব প্যাটার্ন ব্যবহার করা:

এখানে চিত্র বর্ণনা লিখুন

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

এখানে মাইক্রোসার্ভেসিস সম্পর্কে একটি ভাল ধারাবাহিক নিবন্ধ যা বিষয়টিকে ঘিরে বিতর্ককে আলোকপাত করে। চমৎকার চিত্র সহ খুব বিস্তারিত ব্যাখ্যা।


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

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

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

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

1
তবে ব্যবসায়িক মূল্য অর্জনের জন্য, আপনি ডেটা একত্রিত করতে চান - "আগত বৃষ্টিপাতের নিম্নলিখিত রাডার তথ্যের ভিত্তিতে সমস্ত সিভার সিস্টেমগুলির অপ্রতুল স্টোরেজ ক্ষমতা থাকবে এবং ফলাফলটি ব্যবহার করে পৌরসভাগুলির এই মানচিত্রটি রঙ করুন" me আপনি যদি আপনার সমস্ত ডেটা পরিষেবাগুলিতে বিভক্ত করেন তবে এর অর্থ হ'ল আপনি কেবলমাত্র পরে ডেটাটি একত্রিত করতে পারেন। আপনি যদি পরিষেবাগুলিকে একে অপরের সাথে কথা বলতে নিষেধ করেন তবে আপনি কেবল নিজেকে সমস্ত ক্লায়েন্টের কাছে ডেটা স্থানান্তর করতে এবং সেখানে ডেটাতে যোগদান করতে বাধ্য করেন। আপনি কোথাও কোথাও ডেটা করতে চান, শেষ পর্যন্ত এটি একটি অ্যাপ্লিকেশন মান দেয়।
রিমকো গ্রিলিচ

8

উদি দহন এসওএ সম্পর্কে যা বলে তা পড়ে আপনি খুব ভাল ধারণা পেয়ে যাবেন ।

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

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

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

UI 'তে রচনা বিষয়ে বিশেষ করে, উপর মাউরো Servienti এর নিবন্ধ UI' তে রচনা একটি ভাল প্রথম ধাপ। এখানে উপলভ্য উদির ভিডিওটি দেখুন ।

এই পরিষেবাগুলি একে অপরের সাথে সরাসরি কথা বলতে সক্ষম হবে? যদি তাই হয় তবে তাদের কী দম্পতি তৈরি করবে না যা মাইক্রোসার্ভেসিসের ধারণার বিরুদ্ধে?

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

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


7

এটি "সরাসরি" আপনি কী বোঝাতে চান তার উপর নির্ভর করে।

মাইক্রোসার্ভিসেস আর্কিটেকচার অনুসারে, মাইক্রোসার্ভিসেসগুলি রইল যেমন কিছু ইন্টারফেসের মাধ্যমে আপনার নিজের সার্ভারে বা এমনকি বাহ্যিক সার্ভারগুলিতে অন্য মাইক্রোসার্ভিসেসকে অনুরোধ করা ঠিক আছে।

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


এটি ভাল নয় এবং এর খারাপ পরিণতি হবে। আরও তথ্যের জন্য আমার উত্তর দেখুন।
ইলিয়াকৈল

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

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

5

এই পরিষেবাগুলি একে অপরের সাথে সরাসরি কথা বলতে সক্ষম হবে? যদি তাই হয় তবে তাদের কী দম্পতি তৈরি করবে না যা মাইক্রোসার্ভেসিসের ধারণার বিরুদ্ধে?

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

মাইক্রোসার্ভেসিসের পরে আপনি যা করছেন তা হ'ল আলগা সংযোগ ; আপনি কেবলমাত্র একটি মাইক্রোসার্ভাইসকে এর পাবলিক এপিআই এর মাধ্যমে অপরকে জিজ্ঞাসাবাদ বা ইভেন্ট বাস ব্যবহার করে তা অর্জন করতে পারেন।

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


3
"ইন্টিগ্রেশন ডাটাবেস" সুপরিচিত অ্যান্টিপ্যাটার্ন, আরও তথ্যের জন্য আমার উত্তরটি দেখুন।
ইলিয়াকাইল

2

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

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


1

ক্লায়েন্টের কোনও ওয়েব পৃষ্ঠা লোড করার জন্য প্রয়োজনীয় ডেটা পাওয়ার জন্য ক্লায়েন্টকে তাদের একের পর এক কল করা উচিত?

এটা নির্ভর করে; তবে, আমি ক্লায়েন্টকে সরাসরি ব্যবহারযোগ্য দক্ষতা সরবরাহ এবং ফলাফল কীভাবে একত্রিত হয় তার বিবরণ গোপন (এনক্যাপসুলেটিং) করার পরামর্শ দিচ্ছি (যেমন একাধিক মাইক্রো পরিষেবাগুলির মাধ্যমে)।

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

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


(তদ্ব্যতীত, ক্লায়েন্টের রাউন্ড ট্রিপগুলি আপনার মাইক্রো সার্ভিসেস থেকে একে অপরের তুলনায় বেশি ব্যয়বহুল))


উদাহরণস্বরূপ, গ্রাফকিউএল যে দিকনির্দেশনা নিয়েছেন তা যদি আপনি লক্ষ্য করেন তবে আপনি ক্লায়েন্টদের একটি শেষ পয়েন্টে সরাসরি প্রাসঙ্গিক প্রশ্ন জারি করবেন, যা মাইক্রো সার্ভিসগুলির সংগ্রহ হিসাবে প্রয়োগ করা যেতে পারে বা নাও হতে পারে। যেহেতু মাইক্রোসার্ভেসেসের আর্কিটেকচার গ্রাফকিউএল এর পিছনে লুকানো থাকে, এটি আর্কিটেকচারকে রিফ্যাক্টর করা সহজ করে তোলে এবং ক্লায়েন্টের সাথে বন্ধুত্বপূর্ণও করে তোলে। উদাহরণস্বরূপ, https://stackoverflow.com/a/38079681/471129 দেখুন


1

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.