REST ওয়েবের জন্য ডিজাইন করা হয়েছিল, এবং ওয়েবটি REST এর জন্য ডিজাইন করা হয়েছিল। দুজনে একসাথে ফিট হবে। রায় ফিল্ডিংয়ের 2000 পিএইচডি থিসিস আর্কিটেকচারাল স্টাইলস এবং নেটওয়ার্ক-ভিত্তিক সফটওয়্যার আর্কিটেকচারের ডিজাইনটি REST শব্দটি সংজ্ঞায়িত এবং প্রবর্তন করেছিল , এবং ওয়েব এবং আরইএসটি-র মধ্যে উল্লেখযোগ্য ইন্টারপ্লে রয়েছে: রয় ফিল্ডিং এইচটিটিপি / ১.১ এ কাজ করেছিলেন, যার মধ্যে তিনি প্রাথমিক লেখক, এবং তিনি তাঁর গবেষণামূলক প্রবন্ধে বিশ্রামের বর্ণনা দেওয়ার জন্য তিনি যা শিখেছিলেন তা ব্যবহার করেছিলেন।
সুতরাং, ওয়েব এবং আরআরএসটি এত ভালভাবে একসাথে যাওয়ার সহজ কারণ হ'ল ওয়েব কীভাবে কাজ করে তা থেকে আরইএসটি-এর সংজ্ঞাটি বের করা হয়েছিল এবং ওয়েবটি আরএসটি-র একটি বাস্তবায়ন।
আর এজন্যই ওয়েব সার্ভিসেস এবং ওয়েব অ্যাপ্লিকেশনগুলির জন্য আরএসইএসটি একটি ভাল ফিট: কারণ আপনি কেবল একই জিনিসগুলি করেন যা ইতিমধ্যে "মানব" ওয়েবে কাজ করার প্রমাণিত হয়েছে এবং সেগুলি "মেশিন" ওয়েবে প্রয়োগ করে।
বড় আরপিসি (তার উপর নির্ভর করে সঙ্গে সমস্যা সঠিক বাস্তবায়ন) এ মূলত এই ব্যবস্থার সবচেয়ে গুরত্বপূর্ণ ডিস্ট্রিবিউটেড কম্পিউটিং এর Fallacies , যা আরো বিস্তারিত ব্যাখ্যা করা আছে whitepaper অর্ণোন Rotem-গালা-অজ এই :
- নেটওয়ার্কটি নির্ভরযোগ্য
- দেরী শূন্য
- ব্যান্ডউইথ অসীম
- নেটওয়ার্কটি সুরক্ষিত
- টপোলজি পরিবর্তন হয় না
- একজন প্রশাসক আছেন
- পরিবহন ব্যয় শূন্য
- নেটওয়ার্কটি সমজাতীয়
এগুলি সমস্ত অনুমান যা নতুনরা সাধারণত বিতরণ সিস্টেম তৈরি করা শুরু করার সময় করে। অবশ্যই, তাদের সব মিথ্যা। এবং বিতরণকারী সিস্টেমগুলি তৈরি করার সময় আপনার সকলকে অ্যাকাউন্টে নেওয়া উচিত।
অনেকগুলি আরপিসি বাস্তবায়নে সমস্যা হ'ল তারা দূরবর্তী কলগুলি স্থানীয় কলগুলির মতো দেখানোর চেষ্টা করে। তবে এগুলি একরকম কিছুই নয়:
- একটি স্থানীয় কল কখনও ব্যর্থ হয় না; সাবরুটিন আপনি ব্যর্থ হতে পারে বলা হয়, কিন্তু কল নিজেই কখনও করে - একটি দূরবর্তী কল নেটওয়ার্কে হারিয়ে পারে
- একটি স্থানীয় কল তাত্ক্ষণিক হয়; সাবরুটিন (যদি এটি একটি অসীম লুপ আটকে পায় এমনকি চিরতরে বা) আপনি নামক একটি দীর্ঘ সময়ের জন্য চালানো হতে পারে, কিন্তু কল নিজেই কোন সময় এ সব (অবশ্য CPU নির্দেশিকার একটি থাবা সর্বাধিক, লাগে কম যদি কল ইনলাইনড, তবে এটি খুব দ্রুত) - একটি দূরবর্তী কলটি দীর্ঘ সময় ধরে নেটওয়ার্কে আটকে যেতে পারে
- সাব্রোটিন যদি স্বাভাবিকভাবে ফিরে আসে তবে ফলাফলটি সর্বদা ফিরে আসে - একটি রিমোট কল দিয়ে, ফলাফলটি নেটওয়ার্কে হারিয়ে যেতে পারে
- রিটার্নগুলি তাত্ক্ষণিক হয় - দূরবর্তী ফলাফলগুলি দীর্ঘ সময় ধরে নেটওয়ার্কে ভ্রমণ করতে পারে
- আমি যদি একবার সাবউরটিন কল করি তবে এটি ঠিক একবারে চলবে - একটি রিমোট কল নেটওয়ার্কে হারিয়ে যেতে পারে, বা নকল হয়ে যায় যাতে দূরবর্তী রুটিনটি 0 থেকে যে কোনও সংখ্যক বারের মধ্যে চলতে পারে may
- আমি ঠিক একটি ফলাফল ফিরে পেয়েছি - একটি দূরবর্তী ফলাফল হারিয়ে যেতে পারে বা নকল হতে পারে, সুতরাং আপনি ফলাফল 0 বা আরও বেশি বার পেতে পারেন
- আমি যদি সাবউরটিনকে দু'বার কল করি তবে আমি দুটি ফলাফল পেয়েছি এবং দ্বিতীয় কলের ফলাফলের আগে প্রথম কলটির ফলাফল পেয়েছি - আপনি সম্ভবত এটি এখনই অনুমান করতে পারেন: আরপিসির সাহায্যে আপনি কোনও ফলাফল ফিরে পাবেন না, কেবলমাত্র প্রথম , বা কেবল দ্বিতীয়, বা প্রথমটির আগে দ্বিতীয়টি, বা প্রথমটি হারিয়ে যেতে পারে এবং আপনি দ্বিতীয়টি দু'বার পেয়েছেন, বা অন্য পথে, এবং আরও কিছু…
- যদি আমি ফোন করি
a
এবং তারপরে b
, আমি ফলাফলটি পেয়েছি a
এবং তারপরে ফলাফলটি b
- এটি আরপিসির সাথে পূর্ববর্তী পয়েন্টটির আরও সাধারণ সংস্করণ, আপনি কোনও ক্রমে 0 বা ততোধিক বার দুটি উত্তর পেতে পারেন
আপনি হবে একটি দূরবর্তী কলের জন্য উপরের সব সাথে মোকাবিলা করতে হবে। তবে যদি আপনার কাঠামোটি দূরবর্তী কলগুলি স্থানীয় কলগুলি থেকে পৃথক করে তোলে, তবে আপনি পারবেন না , কারণ আপনি জানেন না কোনটি দূরবর্তী কল। ফ্রেমওয়ার্কটি আপনার জন্য সেগুলির সমস্তগুলি চেষ্টা করতে ও পরিচালনা করতে পারে তবে সমস্যাটি হ'ল: ফ্রেমওয়ার্কটি আপনার সিস্টেম হিসাবে আপনার মতো তেমন কিছুই জানে না। এটি জানা নেই যে এমন কোনও কল রয়েছে যেখানে এটি একবারে একবারে হারিয়ে গেলে আসলে কী আসে যায় তা নয়। সুতরাং, কাঠামোটি খুব প্রতিরক্ষামূলক হতে হবে, এবং এটি বিলম্ব এবং ব্যান্ডউইথের ক্ষেত্রে ব্যয়বহুল।
বিশেষত যেহেতু কাঠামোটি আসলে আপনাকে রক্ষা করতে পারে না । ক্যাপ উপপাদ্য বলছেন যে বন্টিত ব্যবস্থা, সামঞ্জস্যপূর্ণ পাওয়া যায়, এবং দেশভাগের সহনশীল একই সময়ে হতে পারে না; আরও স্পষ্ট করে বলা হয়েছে যে, একবার পার্টিশন হওয়ার পরে সিস্টেমটি ধারাবাহিক এবং উপলব্ধ উভয়ই হতে পারে না, এটির একটি বেছে নিতে হবে (জনপ্রিয় বিশ্বাসের বিপরীতে, উপপাদ্যটি বলে না যে সিস্টেম চলমান অবস্থায় আপনি তিনটিই রাখতে পারবেন না) স্বাভাবিকভাবে, আপনি করতে পারেন সব তিনটি আছে; কিন্তু একবার আপনি একটি বিভাজন আছে, তবে আপনি অন্য দুটি কোন একটি বেছে নিন আছে)। PACELC উপপাদ্য দেখাচ্ছে যে এমনকি যখন সিস্টেম কাজ করছে, আপনি ট্রেড বন্ধ করার বনাম সমন্নয় অদৃশ্যতা আছে দ্বারা ক্যাপ উপপাদ্য প্রসারিত করে।
এগুলি গুরুত্বপূর্ণ ট্রেড-অফস যা ফ্রেমওয়ার্কটি আপনাকে রক্ষা করতে পারে না, কারণ তারা ডোমেন-নির্দিষ্ট এবং মূল নকশায় গুরুত্বপূর্ণ important
এরলংয়ের মতো পদ্ধতির সাথে এটির বিপরীতে বিপরীত হন, যা কাজ করে: এরলং-এ, সমস্ত বার্তা প্রেরণকে স্থানীয় হলেও, এটি দূরবর্তী হিসাবে বিবেচনা করা হয়। এর অর্থ আপনি উপরের সমস্ত সমস্যা (এবং আরও অনেকগুলি) মোকাবেলা করতে সর্বদা প্রস্তুত রয়েছেন। স্থানীয় প্রসেসের জন্য, এই না , একটি ওভারহেড একটি সামান্য বিট জাহির যদিও। এটিকে সহায়তা করার জন্য, ত্রুটি পরিচালনা ও তদারকির জন্য মোকাবেলার জন্য দুর্দান্ত সরঞ্জামাদি, ফ্রেমওয়ার্ক, গ্রন্থাগারগুলি, নিদর্শনগুলি এবং আইডিয়ামগুলি রয়েছে।
আপনার আরপিসি কাঠামোটি বিশেষত কীভাবে কাজ করে এবং আপনি কোন ভাষা বা গ্রন্থাগার ব্যবহার করছেন তা বর্ণনা করেননি তবে আমার দৃ strong় সন্দেহ রয়েছে যে এটি "নেটওয়ার্কের অস্তিত্ব নেই" প্রকারের সাথে সম্পর্কিত। যারা শুধু কাজ করে না। এটা ঠিক আছে চিকিত্সা করে স্থানীয় এবং দূরবর্তী কলের মধ্যে পার্থক্য মুছে ফেলার জন্য সবকিছু হিসেবে দূরবর্তী কল। এটা বিমূর্ত অন্যান্য উপায় কাছাকাছি অত্যধিক করছেন: নেটওয়ার্কের হয় আপনি এটা বিমূর্ত দূরে, আপনি বিমূর্ত দূরে কিছু যদি আপনি আসলে, আপনার সিস্টেমের অংশ প্রয়োজন সম্পর্কে জানা।
এখন, আপনাকে বিশেষভাবে আরআরএসটি ব্যবহার করতে হবে বা না, এটি সম্পূর্ণ ভিন্ন প্রশ্ন। আমি উপরে বর্ণিত, ওয়েব বাকি জন্য পরিকল্পনা করা হয়েছিল এবং বিশ্রাম ওয়েবের জন্য পরিকল্পনা করা হয়েছিল, দুই যাতে না জানার একসঙ্গে, কিন্তু আপনি অন্য স্থাপত্য শৈলী ব্যবহার করতে পারেন, যদি আপনি চান। তবে আপনার প্রশ্নের কমপক্ষে একটি অংশ "আরপিসি কেন নয়" সম্পর্কে ছিল এবং আমি উপরের কারণগুলি উল্লেখ করেছি, আরও স্পষ্টভাবে আমি ব্যাখ্যা করেছি যে আপনি যে ধরণের আরপিসি ব্যবহার করছেন বলে সন্দেহ করছেন তা আপনাকে সমস্যার মধ্যে ফেলতে পারে।