মাইক্রোসার্ভেসিস এবং ডাটাবেস যোগ দেয়


112

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

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

আপনি কীভাবে এই জাতীয় ডেটা মাইক্রোসার্ভেসিসে বিভক্ত করার ন্যায্যতা প্রমাণ করেন যেখানে সম্ভবত আপনাকে ডেটাবেসের পরিবর্তে কোনও API এর মাধ্যমে ডেটা 'যোগ' করতে হবে।

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

মনে হচ্ছে কিছুটা গলিব? মানুষের অভিজ্ঞতা কী? আপনি API কীভাবে গ্রহণযোগ্যভাবে সম্পাদন করতে পারবেন তা প্রয়োগ করতে আপনি কোন কৌশল ব্যবহার করেছেন?


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

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

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

উত্তর:


26
  • যখন পারফরম্যান্স বা প্রচ্ছন্নতা খুব বেশি গুরুত্ব দেয় না (হ্যাঁ, আমাদের সর্বদা তাদের প্রয়োজন হয় না) আপনার প্রয়োজনীয় অতিরিক্ত ডেটা অনুসন্ধানের জন্য কেবলমাত্র কেবলমাত্র কেবলমাত্র RESTful API গুলি ব্যবহার করা পুরোপুরি ঠিক। আপনার যদি বিভিন্ন মাইক্রোসার্ভিসেসগুলিতে একাধিক কল করার প্রয়োজন হয় এবং একটি ফলাফল ফিরে আসে তবে আপনি এপিআই গেটওয়ে প্যাটার্ন ব্যবহার করতে পারেন ।

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

  • এছাড়াও, ক্যাচিংয়ের কথা ভুলে যাবেন না :) অন্যান্য ডেটাবেসগুলি প্রায়শই জিজ্ঞাসা করা এড়াতে আপনি রেডিস বা মেমক্যাচের মতো সরঞ্জাম ব্যবহার করতে পারেন ।


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

1
হ্যা আমি দেখেছি. মাইক্রোসার্ভেসিসের পদ্ধতির ব্যবহার সবার জন্য নয় এবং আপনার এটি সাবধানতার সাথে প্রয়োগ করা উচিত। সম্ভবত আপনি ছোট পরিবর্তন দিয়ে শুরু করতে পারেন।
sap1ens

সম্ভবত প্রোগ্রামার্স স্ট্যাকএক্সচেঞ্জ এই প্রশ্নটি জিজ্ঞাসা করার জন্য আরও ভাল জায়গা হতে পারে: প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জার / প্রশ্ন / 279409/… এবং অন্যান্য প্রশ্নগুলি ট্যাগ করা মাইক্রোসার্ভেসেস প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জ
মার্টিন বেলি

9

পরিষেবাগুলির জন্য অন্যান্য পরিষেবাদি থেকে কিছু নির্দিষ্ট রেফারেন্সের কেবলমাত্র অনুলিপি প্রতিলিপি থাকা ঠিক আছে।

প্রদত্ত যে, যখন মাইক্রোসার্ভিসেসে (একরকম পুনর্লিখনের বিপরীতে) একরঙা ডাটাবেস রিফ্যাক্টর করার চেষ্টা করতাম

  • পরিষেবাটির জন্য একটি ডিবি স্কিমা তৈরি করুন
  • সেই স্কিমা থেকে অন্যান্য পরিষেবায় ডেটা প্রকাশের জন্য সেই স্কিমাতে সংস্করণযুক্ত * দর্শন ** তৈরি করুন
  • এই পঠনযোগ্য ভিউয়ের সাথে যোগ দেয় ins

এটি আপনাকে অন্য অ্যাপ্লিকেশনগুলি না ভেঙে টেবিলের ডেটা / স্ট্রুকুত্রে স্বাধীনভাবে সংশোধন করতে দেবে।

ভিউ ব্যবহারের পরিবর্তে, আমি এক স্কিমার থেকে অন্য স্কিমিতে ডেটা প্রতিলিপি করতে ট্রিগারগুলি ব্যবহার করার বিষয়টিও বিবেচনা করতে পারি।

এটি সঠিক দিকের ক্রমবর্ধমান অগ্রগতি হবে, আপনার উপাদানগুলির seams প্রতিষ্ঠা করবে এবং পরে REST এ যেতে পারে।

* মতামত বাড়ানো যেতে পারে। যদি একটি ব্রেকিং পরিবর্তন প্রয়োজন হয়, একই ভিউটির একটি ভি 2 তৈরি করুন এবং পুরানো সংস্করণটি যখন আর প্রয়োজন হবে না তখন সরিয়ে দিন। ** বা সারণী-মূল্যবান-কার্যাদি বা স্প্রোকস।


5

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


2

আমি ব্যবহারের ক্ষেত্রগুলির সমাধানগুলি পৃথক করে বলব, চলুন কাজকর্ম এবং রিপোর্টিং।

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

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


1

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

এই ক্ষেত্রে আরও স্থান প্রয়োজন হবে, তবে কোনও যোগদানের প্রয়োজন হবে না এবং কোনও যোগদান হবে না।

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