আপনি কীভাবে একটি মাইক্রোসারাইস আর্কিটেকচারে ভাগ করা ধারণাগুলি পরিচালনা করবেন?


40

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

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

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

উত্তর:


34

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

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

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


1
এটি আমাকে একটি দুর্দান্ত চুক্তিতে সহায়তা করেছিল। আমি কয়েকটি ইউআই ব্যবহারের মামলা লিখে শুরু করেছি যা স্ট্যাকটি ব্যবহার করবে এবং সবকিছুই বেশিরভাগ জায়গায় পড়ে।
অঞ্জুনাতল

1
এই বিশেষ উদাহরণে, আমরা উদাহরণস্বরূপ করা অনুমিত হয়। আমাদের তালিকায় যদি 10 টি ফটো থাকে তবে ব্যবহারকারীর ডেটা পাওয়ার জন্য 10 জন ব্যবহারকারীকে পরিষেবা দিতে কল করুন? এটি কি প্রচুর ওভারহেড যুক্ত করবে না?
রিকার্ডো সুজা

1
@rcdmk আপনি একটি REST শেষ পয়েন্ট যোগ করতে পারেন যা ইনপুট হিসাবে একাধিক আইডির তালিকা পায় এবং একাধিক ফটো আউটপুট হিসাবে দেয়। এটি প্রায়শই পারফরম্যান্স কারণে কর্মক্ষেত্রে করা হয়। কখনও কখনও, API নকশা হল বিশুদ্ধতা এবং ব্যবহারিক বিবেচনার মধ্যে একটি সমঝোতা।
মিশা কোসমুলস্কি

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

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

4

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

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

যদি এটি আপনার প্রশ্নের উত্তর না দেয়, আপনি দয়া করে সঠিক পরিস্থিতিটি বর্ণনা করে কি এটি পরিষ্কার করতে পারবেন?


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

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