ব্যবসায়ের যুক্তি কোথায় মাইক্রোসার্চেস আর্কিটেকচারে বসতে হবে?


12

আমি একতরফা পদ্ধতিতে অভ্যস্ত থাকায় এখনও মাইক্রোসার্ভিস আর্কিটেকচারের চারপাশে আমার মাথা গুটিয়ে দেওয়ার চেষ্টা করছি

ধরা যাক আমরা একটি অত্যন্ত সরলীকৃত উবার বুকিং সিস্টেম তৈরি করার চেষ্টা করি । : কিছু প্রক্রিয়া সহজ করতে আমরা ধরুন আমরা 3 সেবা এবং ক্লায়েন্টের জন্য একটি গেটওয়ে API দাও Booking, Drivers, Notificationএবং আমরা নিম্নলিখিত কর্মপ্রবাহ আছে:

নতুন বুকিং তৈরি করার সময়:

  1. বিদ্যমান ব্যবহারকারীর ইতিমধ্যে বুকিং আছে কিনা তা পরীক্ষা করুন
  2. উপলব্ধ ড্রাইভারদের তালিকা পান
  3. বুকিং নিতে ড্রাইভারদের বিজ্ঞপ্তি পাঠান
  4. ড্রাইভার বুকিং আপ

ধরা যাক যে সমস্ত বার্তাপ্রেরণগুলি সহজ রাখার জন্য কাফকার মতো একটি মেসেজিং বাসের চেয়ে কোনও HTTP কলের মাধ্যমে সম্পন্ন হয়।

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

  • Gateway - উপলব্ধ ড্রাইভার + বিজ্ঞপ্তি প্রেরণের তালিকা পান
  • Booking - বিদ্যমান বুকিং জন্য পরীক্ষা করুন

এবং আমি নিশ্চিত যে গেটওয়েটি এটি করার সঠিক জায়গা নয় তবে আমার মনে হয় আমরা যদি এটি Bookingপরিষেবাতে করে চলেছি তবে এটি দৃ tight়ভাবে মিলিত হচ্ছে?

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

আমি মনে করি এটি করার আরেকটি উপায় হ'ল প্রতিটি প্রকল্পের নিজস্ব বুকিং পরিষেবা রয়েছে যা মূল বুকিং পরিষেবাটিতে কথা বলবে তবে আমি নিশ্চিত নই যে এখানে সেরা পদ্ধতির কী :-)


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

উত্তর:


14

লোকেরা প্রায়শই "মাইক্রো-পরিষেবা" শুনে এবং "ন্যানো-পরিষেবা" মনে করে এবং এটি কিছুটা বিভ্রান্তির কারণ হতে পারে। এগুলি মাইক্রো- সার্ভিসেস, সুতরাং আপনার প্রতিটি একক সত্তার জন্য পৃথক পরিষেবা প্রয়োজন নেই। আপনি যা করার চেষ্টা করছেন তা সমস্ত পরিষেবা bookingএবং notificationপরিষেবাগুলিতে হওয়া উচিত । আপনার driverপরিষেবাটির প্রয়োজন নেই (আপনার বর্ণিত ক্রিয়াকলাপের জন্য)।

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

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

একটি সাধারণ বুকিং প্রবাহ এইরকম দেখতে পাবেন:

  1. অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি bookingউপলব্ধ ড্রাইভারদের একটি তালিকা পেতে পরিষেবাটিকে কল করে
  2. বুকিং পরিষেবাটি ড্রাইভারের একটি তালিকা ফিরিয়ে দেয় returns
  3. তারপরে ব্যবহারকারী তাদের ড্রাইভার নির্বাচন করে এবং অ্যাপ্লিকেশন bookingপরিষেবাটির "বুক" পদ্ধতিটি কল করে
  4. bookingসেবা পরিষেবা কল notificationবুকিং বিস্তারিত সেবা
  5. notificationসেবা চালক একটি বিজ্ঞপ্তি করেন, তার বুকিং এর বিজ্ঞাপিত
  6. ড্রাইভার অ্যাপ্লিকেশনটি notificationযখন গ্রাহকের এক মাইলের মধ্যে থাকে সেবার একটি বার্তা প্রেরণ করে
  7. notificationসেবা গ্রাহকের সতর্কতা পাঠায় যে তাদের চালক প্রায় নেই

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


1

এটি আপনার সঠিক প্রয়োজনের উপর নির্ভর করে।

ধরা যাক আপনার বুকিংয়ের জন্য দুটি অ্যাপ্লিকেশন রয়েছে:

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

বিজ্ঞপ্তি সিস্টেম হিসাবে, আপনার যে কোনও নতুন বুকিং শোনার জন্য আপনার বুকিং পরিষেবাতে মাইক্রোসার্ফেসিস সাবস্ক্রাইব করতে পারে। যেমন বুকিং মাইক্রোসার্ভিস সমস্ত গ্রাহককে অবহিত করবে এবং তারা সে অনুযায়ী কাজ করবে।

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


0

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

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

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

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