মাইক্রোসার্চিস সিস্টেম আর্কিটেকচারগুলি কীভাবে নেটওয়ার্কের বাধাগুলি এড়ানো যায়?


72

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

যথার্থতার জন্য, আমার এই দুটি শর্তের ব্যাখ্যা:

  1. মনোলিথ আর্কিটেকচার: একক ভাষায় একটি অ্যাপ্লিকেশন যা সমস্ত কার্যকারিতা, ডেটা ইত্যাদি পরিচালনা করে থাকে A একটি ভারসাম্য রক্ষাকারী একাধিক মেশিনে শেষ ব্যবহারকারীর কাছ থেকে অনুরোধগুলি বিতরণ করে, প্রতিটি আমাদের অ্যাপ্লিকেশনটির একটি উদাহরণ চালায়।

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

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


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

3
যদি আপনি মনে করেন যে আপনার মাইক্রোসার্ভেসগুলি দরকার - এবং আপনি সম্ভবত! - দুটি ভাল বই প্রস্তুত করার জন্য: অ্যামাজন / বিল্ডিং-
স্টিভেন এ লো লো

@ মাইনমা ​​সমস্যাটি ব্যান্ডউইথের নয়, দেরিতে। এবং যদি আপনার রাউন্ডট্রিপ দরকার হয়, আপনি অবাক হবেন যে আপনি কতটা প্রকৃত ব্যান্ডউইথ ব্যবহার করতে পারেন
স্টিফান এগারমন্ট

উত্তর:


61

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

আসুন গণিতটি করা যাক। 1 জিবিপিএস প্রতি সেকেন্ডে 131 072 কেবি। যদি গড় JSON প্রতিক্রিয়া 5 কেবি হয় (যা বেশ অনেকটা!), আপনি কেবল এক জোড়া মেশিন দিয়ে তারের মাধ্যমে প্রতি সেকেন্ডে 26 214 টি প্রতিক্রিয়া পাঠাতে পারেন । এত খারাপ না, তাই না?

এই কারণেই নেটওয়ার্ক সংযোগটি সাধারণত বাধা হয় না।

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

এটি তখন হয় যখন আমাদের প্রতি 26 সেকেন্ডে 214 টি প্রতিক্রিয়া অ্যাপ্লিকেশানের স্কেলের জন্য খুব ছোট হয়ে যায়। আপনি অন্য নয়টি জুড়ুন, এবং আপনি এখন 262 140 প্রতিক্রিয়া পরিবেশন করতে সক্ষম হবেন।

তবে আসুন আমরা আমাদের সার্ভারের জুটিতে ফিরে আসি এবং কিছু তুলনা করি।

  • যদি কোনও ডাটাবেসে গড় নন-ক্যাশেড ক্যোয়ারীটি 10 ​​এমএস লাগে তবে আপনি প্রতি সেকেন্ডে 100 টি প্রশ্নের সীমাবদ্ধ। 100 জিজ্ঞাসা। 26 214 টি প্রতিক্রিয়া। প্রতি সেকেন্ডে 214 টি প্রতিক্রিয়ার গতি অর্জনের জন্য প্রচুর পরিমাণে ক্যাচিং এবং অপটিমাইজেশন প্রয়োজন (যদি প্রতিক্রিয়াটি আসলে কোনও ডেটাবেস অনুসন্ধানের মতো কিছু কার্যকর করার প্রয়োজন হয়; "হ্যালো ওয়ার্ল্ড" - স্টাইলের প্রতিক্রিয়াগুলি যোগ্যতা অর্জন করে না)।

  • আমার কম্পিউটারে, এই মুহূর্তে, ডমকন্টেন্টলয়েড গুগলের হোম পেজে 394 এমএস ঘটেছে। অনুরোধ প্রেরণের পরে। এটি প্রতি সেকেন্ডে 3 টিরও কম অনুরোধ। প্রোগ্রামার্স.এসই হোম পৃষ্ঠার জন্য, এটি ঘটেছে 603 এমএস। অনুরোধ প্রেরণের পরে। এটি প্রতি সেকেন্ডে 2 টি অনুরোধও নয়। যাইহোক, আমার কাছে 100 এমবিপিএস ইন্টারনেট সংযোগ এবং একটি দ্রুত কম্পিউটার রয়েছে: অনেক ব্যবহারকারী আরও অপেক্ষা করবেন।

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

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

ডাটাবেস সম্পর্কে চিন্তা করুন

সাধারণত, ডেটাবেসগুলি তাদের ব্যবহার করে ওয়েব অ্যাপ্লিকেশন থেকে পৃথকভাবে হোস্ট করা হয়। এটি উদ্বেগ বাড়িয়ে তুলতে পারে: অ্যাপ্লিকেশনটি হোস্টিং করা সার্ভার এবং ডেটাবেস হোস্ট করা সার্ভারের মধ্যে সংযোগের গতি সম্পর্কে কী?

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

যখন স্থানান্তর গতিটি তখন গুরুত্বপূর্ণ হয় যখন কোনও সংস্থা কোনও এনএএস-তে বড় ডেটা সেট হোস্ট করে এবং একই সাথে একাধিক ক্লায়েন্ট দ্বারা এনএএস অ্যাক্সেস করা হয়। এখানেই কোনও সান সমাধান হতে পারে। এটি বলা হচ্ছে, এটিই একমাত্র সমাধান নয়। বিড়াল 6 কেবল 10 গিগাবাইটের গতি সমর্থন করতে পারে; বন্ধনগুলি কেবল বা নেটওয়ার্ক অ্যাডাপ্টারগুলি পরিবর্তন না করে গতি বাড়ানোর জন্যও ব্যবহার করা যেতে পারে। অন্যান্য সমাধান বিদ্যমান, একাধিক এনএএস জুড়ে ডেটা প্রতিলিপি জড়িত।

গতির কথা ভুলে যাও; স্কেলিবিলিটি সম্পর্কে চিন্তা করুন

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

  • আপনার যদি বিশেষত দ্রুততম অ্যাপ না থাকে তবে আপনি অর্থ হারাবেন কারণ আপনার আরও শক্তিশালী সার্ভারের প্রয়োজন হবে।

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

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

এই কর্মক্ষমতা হ্রাস হওয়া সত্ত্বেও, ভার্চুয়াল পরিবেশগুলি তাদের নমনীয়তার কারণে খুব জনপ্রিয় হয়েছিল।

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


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

@ জামেসমিশ্রা: আপনার উদ্বেগের সমাধান করতে আমি আমার উত্তর সম্পাদনা করেছি।
আরসেনি মরজেনকো 10:51

আপনার উত্তর নিখুঁত । আমি যে প্রতিটি আপত্তি আমি ভাবতে পারি তার উত্তর আপনিই দেননি, আপনি যে আপত্তিগুলি আমি ভাবেননি সেগুলির উত্তর দিয়েছিলেন।
জেমস মিশ্র

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

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

7

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


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

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

@ জেমসমিশ্রা, লেখকরা প্রায়শই এই পরিবেশগুলিতে নিজস্ব পরিষেবা হন এবং তাই প্রতিটি পরিষেবাদি নিজেরাই একটি সম্পূর্ণ বাস্তবায়ন না করে কেবল সেটিকে ব্যবহার করা উচিত।
পল

2

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


@ মুর্তালাপেমানের অর্থ আমি কী ধরে নিয়েছি তা বোঝানোর জন্য একটি উদাহরণ: আপনার একটি জাভা / সি # ইন্টারফেস রয়েছে আইপিড্রাক্ট অ্যাভাইলিবিটি যেখানে সমস্ত আইপিডিউডাক্ট আওলাইবিটি গ্রাহকরা এর সাথে যুক্ত আছেন। এছাড়াও একটি ক্লাসের ProductAvailibitiyImpl রয়েছে যা এই ইন্টারফেসটি প্রয়োগ করে এবং একটি ProductAvailibitiyMicroservice যা ProductAvailibitiyImpl ব্যবহার করে। গ্রাহকরা কোনও স্থানীয় প্রোডাক্টআভাইলিবিতিআইএমপিএল বা প্রোডাক্টএভেলিবিতি মাইক্রোসার্ভিস
k3b

2

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

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

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

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

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

সুতরাং উচ্চতর ফ্রিকোয়েন্সিতে সূক্ষ্ম শস্যের কোনও পরিষেবার জন্য অনুরোধ করার পরিবর্তে ফ্রিকোয়েন্সি কমিয়ে চেষ্টা করুন:

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

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


1

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

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


সিপিইউগুলি দ্রুত। স্মৃতি দ্রুত। এসএসডি দ্রুত হয়। কিন্তু নেটওয়ার্ক কার্ড এবং রাউটার এবং সুইচগুলি "দ্রুত"? অন্য একটি উত্তর তাই জোর, কিন্তু আমি নিশ্চিত না।
জেমস মিশ্র

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

1

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

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

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

মনে রাখবেন যে ব্যবসা-পরিষেবাতে লোক, অ্যাপ্লিকেশন, ব্যবসা-প্রক্রিয়া অন্তর্ভুক্ত রয়েছে। সাধারণত এর কেবলমাত্র অংশটি প্রযুক্তিগত কর্তৃত্ব হিসাবে উপস্থাপিত হয়।

এটি কিছুটা বিমূর্ত মনে হতে পারে, তাই সম্ভবত পরিষেবা সীমানা সনাক্তকরণের একটি উদাহরণ কিছুটা আগ্রহী হবে।


0

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

এবং মনে রাখবেন যে মাইক্রোসার্ভিসেসগুলি মানুষ মনে করে তত মাইক্রো নয়।

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