একটি বহু-স্তরীয় ভিন্ন ভিন্ন সিস্টেমে রেস্ট বা ম্যাসেজের সারি?


9

আমি একটি ত্রি-স্তরের সিস্টেমের জন্য একটি REST এপিআই ডিজাইন করছি: Client application-> Front-end API cloud server-> user's home API server (Home)

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

Front-endএবং Homeমূলত একই এপিআই রয়েছে; ল্যানের মাধ্যমে সরাসরি Clientসংযোগ করা হতে পারে Home। এই ক্ষেত্রে, নিজেই Homeকিছু Clientক্রিয়া নিবন্ধিত Front-endকরতে হবে।

এই সিস্টেমে রেস্টের জন্য পেশাদাররা হলেন:

  • REST হ'ল মানব-পঠনযোগ্য;
  • REST এর ক্রিয়াগুলি (সিআরইউডি এর মতো), প্রোটোকল অবজেক্টগুলিতে বিশেষ্য এবং প্রতিক্রিয়া কোডগুলির একটি সুস্পষ্ট সংজ্ঞায়িত ম্যাপিং রয়েছে;
  • এটি এইচটিটিপি-র উপর কাজ করে এবং সম্ভাব্য সমস্ত প্রক্সি পাস করে;

REST বিপরীতে রয়েছে:

  • আমাদের কেবল একটি অনুরোধ-প্রতিক্রিয়া যোগাযোগের স্টাইলই নয়, একটি প্রকাশ-সাবস্ক্রাইবও দরকার;
  • এইচটিটিপি ত্রুটি কোডগুলি ত্রি-স্তরের যোগাযোগের ত্রুটিগুলি পরিচালনা করতে অপর্যাপ্ত হতে পারে; প্রয়োজনীয় সংযোগটি ভেঙে গেছে এবং সেখানে থাকা উচিত ছিল কেবলমাত্র এটির জন্য কিছু অ্যাসিঙ্ক কলটিতে Front-endফিরে 202 Acceptedযেতে পারে ;Home503
  • Homeএর কাছে বার্তা প্রেরণ করা দরকার ClientClientপোল করতে হবে Front-endবা সংযোগ বজায় রাখতে হবে।

কার্যকারিতা প্রকাশ / সাবস্ক্রাইব করার জন্য আমরা ডাব্লুএইচএমপি / অটোবাহনের উপর বিবেচনা করছি যখন এটি আমার মনে হয়েছে যে এটি ইতিমধ্যে কোনও বার্তার সারির মতো দেখাচ্ছে।

এটি পরিবহন হিসাবে কোনও ধরণের বার্তাবাহকের সারি মূল্যায়ন করার মতো?

বার্তার সারি বিপরীতে মনে হচ্ছে:

  • আমাকে নিজের বার্তা স্তরে CRUD ক্রিয়া এবং ত্রুটি কোডগুলি সংজ্ঞায়িত করতে হবে।
  • আমি "উচ্চ রক্ষণাবেক্ষণ ব্যয়" সম্পর্কে কিছু পড়েছি, তবে এর অর্থ কী?

এই বিবেচনা কতটা গুরুতর?


1
আপনার মিশ্রণে একটি ক্লাউড সার্ভার রয়েছে কেন? এটির মতো সমস্ত শব্দগুলি পুনঃনির্দেশিত যা আমার মনে করে যে এটি সম্ভবত হোম মেশিনের মতো একই মেশিনে বাস করা উচিত ...
জিমি হোফা

3
আপনি বার্তার সারিগুলি বিশ্লেষণ করার সময় নোট করুন যে তাদের বেশিরভাগটি ব্যক্তিগত ল্যানগুলির জন্য অনুকূলিত হয়েছে: স্বল্প-ল্যাটেন্সি, নিয়ন্ত্রিত ক্লায়েন্ট, সুরক্ষিত নেটওয়ার্ক ইত্যাদি internet ইন্টারনেটের সাথে সারি প্রকাশ করা একটি বিশাল সুরক্ষা সমস্যা হতে পারে ।
জাভিয়ের

@Jimmy Hoffaবৈধ পয়েন্ট, ধন্যবাদ এটা ঠিক, কিন্তু সম্পূর্ণ না। এটি একটি সাধারণ ডাটাবেস, সঞ্চয়স্থান এবং আরও অনেক কিছু। @Javierআপনাকে ধন্যবাদ, এটি একটি উত্তরের একটি ভাল অংশ।
ভিক্টর সার্জিইঙ্কো

হোম সার্ভারটি কি কোনও ব্যবহারকারীর বাড়িতে এবং মেঘের সম্মুখ-প্রান্তে চালিত হওয়া বোঝায়? বাড়িটি ফ্রন্ট-এন্ডের সাথে সংযুক্ত হয় এবং ক্লায়েন্ট ফ্রন্ট-এন্ডের মাধ্যমে বাড়িতে বার্তা পাঠায়। আমি যদি আপনার নকশাটি সঠিকভাবে বুঝতে পারি তবে আমি কোনও answerশ্বরের উত্তর দিতে পারি।
মাইকেল ব্রাউন

@Mike Brownঠিক। দয়া করে।
ভিক্টর সার্জিইঙ্কো

উত্তর:


5

আপনার যদি কানেক্টিভিটি থাকে তবে একটি বার্তার কাতারে যান - যদিও আপনাকে কোনও নির্দিষ্ট কাঠামো এবং ফর্ম্যাটের বার্তা প্রেরণ করতে আপনার নিজের প্রোটোকলগুলি (কষ্টসাধ্যই কোনও কঠিন কাজ!) নির্ধারণ করতে হবে।

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

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

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


ধন্যবাদ। আমি @Javierমন্তব্যের পরে যা পেয়েছি : Q এমকিউ নিজেকে এনক্রিপশন নিজেই সমর্থন করে না বলে মনে হচ্ছে: zeromq.org/area:faq#toc8 যদিও রাবিট এমকিউ করেছে: rabbitmq.com/ssl.html
ভিক্টর সার্জিয়েনকো

আমার সংযোগ আছে কিনা জানি না। Homeএকটি ব্যবহারকারীর হোম ডিভাইস এবং Clientএটি ওয়াই-ফাই বা 3 জি এর মাধ্যমে স্মার্টফোন। প্রশ্নের একটি বড় অংশ হ'ল এনএটি ট্র্যাভার্সাল পদ্ধতি সম্পর্কে আমার অজ্ঞতা।
ভিক্টর সার্জিইঙ্কো

5

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

যদিও অন্তর্নির্মিত বিশ্রাম বার্তাগুলি কার্যকর। আপনি দেখতে পাবেন যে আপনার অ্যাপ্লিকেশনটি প্রাথমিক সিআরইউডি ক্রিয়াকলাপকে ছাড়িয়ে যাবে। উদাহরণস্বরূপ যদি আপনার অ্যাপ্লিকেশনটি একটি ব্যাংকিং সিস্টেম ছিল। পরিবর্তে

অ্যাক্ট 54321 ব্যালেন্স = ভারসাম্য আপডেট করুন - 20.00 আপডেট অ্যাক্ট 98765 ব্যালেন্স = ব্যালেন্স + 20.00 আপডেট করুন

আপনি সম্ভবত একটি একক বার্তা চাইবেন

অ্যাকাউন্টটি 98365 থেকে 54321 অ্যাকাউন্টে 20.00 স্থানান্তর করুন

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


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

তার বইটি এখনও অপ্রত্যাশিত অপেক্ষা করুন ... তিনি এত দিন এটি নিয়ে কথা বলছিলেন ... আমার পরিচিত অন্য প্রযুক্তিগত লেখকের মতো শোনাচ্ছে। : ">
মাইকেল ব্রাউন

1
রেকর্ডের জন্য, আরআরএসটি পদ্ধতির হ'ল আপনার তৈরি করা স্থানান্তর সংস্থান থাকতে হবে। অথবা এমন কি একটি ট্রান্সফারওয়েস্ট যা পাস করতে পারে বা না পারে। কিছু ক্ষেত্রে REST কৃপণ হয়ে ওঠে, তবে এটি তাদের মধ্যে একটি নয়।
জ্যাসেক গর্গোń
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.