মাইক্রোসার্ভেসিস এবং ডেটা স্টোরেজ


26

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

  • অনুভূমিকভাবে স্কেলেবল - লোড এবং / অথবা কোনও সার্ভার ডাউন হয়ে যাওয়ার জন্য আমি মাইক্রোসার্চিসের একাধিক রিলান্ড্যান্ট কপি চালাতে পারি।
  • আলগাভাবে মিলিত - আমি অন্যদের পরিবর্তন না করেই মাইক্রোসার্ভেসিসের অভ্যন্তরীণ বাস্তবায়নগুলি পরিবর্তন করতে পারি এবং আমি স্বাধীনভাবে তাদের স্থাপন এবং এগুলি পরিবর্তন করতে পারি ...

আমার সমস্যা ডেটা স্টোরেজ নিয়ে। আমি এটি দেখতে বেশ কয়েকটি বিকল্প রয়েছে:

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

আমার কাছে তৃতীয় বিকল্পটি একমাত্র বিকল্প বলে মনে হচ্ছে, তবে এটি আমার কাছে অবিশ্বাস্যভাবে হেভিওয়েট এবং খুব বেশি পরিমাণে সমাধান বলে মনে হচ্ছে। যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে 4-5 মাইক্রোসার্ভিসেস সহ একটি সাধারণ অ্যাপ্লিকেশনটির জন্য আমাকে 16-20 সার্ভার চালাতে হবে - মাইক্রোসার্চিস প্রতি দুটি প্রকৃত মাইক্রোসার্চিয়াস উদাহরণ (সার্ভার ব্যর্থতার ক্ষেত্রে এবং ডাউনটাইম ছাড়াই মোতায়েনের জন্য), এবং প্রতি মাইক্রোসার্চিসে দুটি ডাটাবেস পরিষেবা দৃষ্টান্ত (সার্ভার ব্যর্থতার ক্ষেত্রে ইত্যাদি ...)।

এটি বেশ খোলামেলাভাবে মনে হয় কিছুটা হাস্যকর। একটি বাস্তব এপিআই চালানোর জন্য 16-20 সার্ভারগুলির মনে রাখবেন যে কোনও বাস্তবসম্মত প্রকল্পে সম্ভবত 4-5 এরও বেশি পরিষেবা থাকবে? এমন কিছু মৌলিক ধারণা আছে যা আমি অনুপস্থিত যা এটি ব্যাখ্যা করবে?

কিছু জিনিস যা উত্তর দেওয়ার সময় সহায়তা করতে পারে:

  • আমি এই প্রকল্পের একমাত্র বিকাশকারী এবং নিকট ভবিষ্যতের জন্য থাকব।
  • আমি নোড.জেএস এবং মঙ্গোডিবি ব্যবহার করছি তবে আমি ভাষা-অজ্ঞাত উত্তরগুলিতে আগ্রহী হব - একটি উত্তর এমনকি এমনও হতে পারে যে আমি কেবল ভুল প্রযুক্তি ব্যবহার করছি!

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

উত্তর:


21

আপনার তিনটি বিকল্পের মধ্যে প্রথম (একটি একক, ভাগ করা ডাটাবেস) এবং তৃতীয় (একটি "ডাটাবেস পরিষেবা") সবচেয়ে সাধারণ।

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

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

তবে, আমি একটি মধ্যবর্তী সমাধান প্রস্তাব করব ose

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

তবে একাকী ডেভেলপার হিসেবে, আমি microservices সমগ্র ধারণা সময় এই সময়ে চ্যালেঞ্জ হবে - মার্টিন জালিয়া সম্পর্কে লিখেছেন মনোলিথ প্রথম এবং Microservice প্রিমিয়াম প্রায় সাইমন ব্রাউন আলোচনা মডুলার Monoliths , এবং প্রায় DHH আলোচনা ম্যাজেস্টিক মনোলিথ। আমি নিশ্চিত না যে আপনার একরঙাটি কতটা সুসংহত হয়েছে, তবে তা চুল্লী করে এটি व्यवस्थित করুন। সহজে কোনও পরিষেবায় টুকরো টুকরো টুকরো করার জন্য উপাদানগুলি সনাক্ত করুন এবং তাদের মধ্যে পরিষ্কার বিচ্ছিন্ন করুন। আপনার ডাটাবেস কাঠামোর ক্ষেত্রে এটি একই রকম। পরিষেবাগুলিতে রিফ্যাক্টরিংকে সমর্থন করতে পারে এমন ভাল, পরিষ্কার, উপাদান-ভিত্তিক আর্কিটেকচারের উপর ফোকাস করুন। একক বিকাশকারীকে অপারেশনগুলিতে বিল্ডিং এবং সমর্থন করার জন্য মাইক্রোসার্ভেসিসগুলি প্রচুর ওভারহেড যুক্ত করে। তবে একবারে আপনার যদি সিস্টেমটির কিছু অংশ স্কেল করার প্রয়োজন হয় তবে আপনার মনিটরিং এবং রিপোর্টিং সিস্টেমগুলি বাধাগুলি সনাক্ত করতে, কোনও পরিষেবাতে এক্সট্র্যাক্ট করার জন্য এবং প্রয়োজনীয় হিসাবে স্কেল ব্যবহার করুন।


1

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

একমত। তৃতীয় বিকল্প মাইক্রো পরিষেবার জন্য প্রাকৃতিক পছন্দ। যদি মাইক্রো পরিষেবাটি প্রকৃতপক্ষে স্বতন্ত্র (এবং বিতরণকৃত মনোলিথের অংশ নয় ) হতে থাকে তবে তাদের কাছে প্রতিটি, একটি ডাটাবেস স্বাভাবিক।

[...] মাইক্রোসার্চিস প্রতি দুটি প্রকৃত মাইক্রোসার্চিয়াস দৃষ্টান্ত (সার্ভার ব্যর্থতার ক্ষেত্রে, এবং ডাউনটাইম ছাড়াই মোতায়েনের জন্য), এবং মাইক্রো সার্ভিস প্রতি দুটি ডাটাবেস পরিষেবা দৃষ্টান্ত (সার্ভার ব্যর্থতার ক্ষেত্রে ইত্যাদি ...)।

আপনি যদি ভার ভারসাম্য বজায় রাখতে চান তবে কত পরিমাণে মাইক্রো পরিষেবাদি চলছে তা আপনি সঠিক। আপনি যদি 4 টি মাইক্রো পরিষেবাদি রাখার পরিকল্পনা করছেন তবে আপনার ইতিমধ্যে ব্যাখ্যা হিসাবে প্রতিটি মাইক্রো পরিষেবা (কমপক্ষে 8) এর কমপক্ষে 2 টি দর্শন প্রস্তুত করা দরকার।

কিন্তু মাইক্রো সার্ভিসে প্রতি দুটি ডাটাবেস? এটি আসলেই প্রশ্নবিদ্ধ। আপনার মাইক্রো পরিষেবাগুলি অংশ নেবে এমন ব্যবসায়িক সমস্যার বিষয়ে আমি জানি না, তবে বেশিরভাগ পণ্য / প্রকল্পের জন্য এটি একটি ডেটাবেস রিডানডেন্সি quite আমি একটি ভাল ব্যাকআপ দিয়ে একটি একক ডাটাবেস দিয়ে শুরু করার এবং আপনার অবকাঠামোগত জটিলতা হ্রাস করার (কমপক্ষে প্রাথমিকভাবে) সুপারিশ করব।

এটি বেশ খোলামেলাভাবে মনে হয় কিছুটা হাস্যকর। একটি বাস্তব এপিআই চালানোর জন্য 16-20 সার্ভারগুলির মনে রাখবেন যে কোনও বাস্তবসম্মত প্রকল্পে সম্ভবত 4-5 এরও বেশি পরিষেবা থাকবে? এমন কিছু মৌলিক ধারণা আছে যা আমি অনুপস্থিত যা এটি ব্যাখ্যা করবে?

একটি সাধারণ API এর জন্য এই সংখ্যাগুলি মেলে না। আপনি যদি কোনও একটি "মাইক্রোসার্ভাইস ফার্স্ট" ফাঁদে পড়ে না যান তবে মনোযোগ দিন ।


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

0

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

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

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

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

একাধিক মাইক্রোসার্ভিসেস বাস্তবায়ন করার সময়, আমাদের কাছে রাষ্ট্রীয় উপাদানগুলির জন্য ডাটাবেস প্রযুক্তি পুনরায় ব্যবহারের বিকল্প রয়েছে:

  • মাইক্রোসার্ভিস প্রতি পৃথক ডাটাবেস
  • এর সাথে ভাগ করা ডাটাবেস:
    • মাইক্রো সার্ভিস প্রতি পৃথক / বেসরকারী স্কিমা
    • মাইক্রো সার্ভিস প্রতি পৃথক / ব্যক্তিগত টেবিল

এখানে আরও দেখুন ।

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

সম্মত হয়েছে, যদি আপনি টেবিলগুলি সারি এবং কলামগুলি ভাগ করে বোঝাতে চান তবে এটি আসলে মাইক্রোসার্ভেস হবে না।

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

সাধারণত, অল্প পরিমাণে মাইক্রোসার্ভেসিস এবং রাষ্ট্রীয় জেদ সম্পর্কে লিখিত থাকে, এখানেও দেখুন


-1

ঠিক আছে, আমি এই থ্রেডের সমস্ত পোস্ট পড়েছি এবং আপনাকে বলতে পারি যে আমি এই প্রশ্নের সাথে বিভ্রান্ত হয়ে পড়েছি: এটি ডেটাবেস এবং সার্ভারের সাথে ডেটা অ্যাক্সেস সার্ভিসের (ডিবি পরিষেবা) পরিষেবাগুলির সাথে মাইক্রোসার্ফেস (এমএস) মিশ্রিত করে ...

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

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

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

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