বার্তা ক্যু বনাম ওয়েব পরিষেবাদি? [বন্ধ]


258

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

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

ওয়েব অ্যাপ্লিকেশনটি রুবেল অন রেলস, তবে আমি মনে করি যে প্রশ্নটি এর চেয়ে আরও বিস্তৃত।

উত্তর:


315

আপনি যখন কোনও ওয়েব পরিষেবা ব্যবহার করেন তখন আপনার একটি ক্লায়েন্ট এবং একটি সার্ভার থাকে:

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

আপনি যখন রবিট এমকিউ, বিয়ানস্টালকডি, অ্যাক্টিভএমকিউ, আইবিএম এমকিউ সিরিজ, টেক্সডোর মতো একটি বার্তা সারি ব্যবহার করেন আপনি বিভিন্ন এবং আরও ত্রুটি সহনশীল ফলাফল আশা করেন:

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

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


1
যদি এসওএপি / জেএমএস বাইন্ডিং ব্যবহার করা হয় তবে ওয়েব পরিষেবাদিগুলিতে কেউ looseিলে .ালা সংযোগ লাভ করে।
কোপ্পোর

সার্ভার সাইডে একাধিক মাইক্রো পরিষেবাদির জন্য কোনটি ওয়েব সার্ভিস বা কুইউংকে প্রাধান্য দেওয়া উচিত?
শিভেন্দ্র প্রতাপ সিংহ

প্রিয় @ এসডাব্লু। , আমি কি জানতে পারি যদি এর অর্থ আমরা সাধারণ ওয়েবসাইটগুলিতে এমকিউয়ের মুখোমুখি রাখতে পারি? ধরা যাক আমার কাছে ওয়ার্ডপ্রেস ওয়েবসাইট রয়েছে (এলএএমপি স্ট্যাক)। আমি কি আপাচি-এর এমকিউ ইনফ্রন্ট ব্যবহার করতে পারি যাতে অনুরোধগুলি একই সময়ে সমস্ত আসার পরিবর্তে 1 এর পরে 1 আসে। এই ক্ষেত্রে, ক্লায়েন্ট (ব্রাউজারগুলি) অ্যাপাচি পরিবর্তে এমকিউ-র সাথে সংযুক্ত রয়েছে, আমি কি ঠিক আছি? তবে তারপরে, ব্রাউজারগুলি কি এইচটিটিপি সংযোগটি খোলা রাখে এবং আপাচি সাড়া দেওয়ার জন্য অপেক্ষা করে রাখে? দয়া করে আমাকে এ সম্পর্কে কিছুটা বুঝতে সহায়তা করুন। আপনার সদয় প্রশংসা।
期 劇場

@ 夏 期 劇場 আপনার ব্যবহারের মামলাটি কী? আপনি ব্রাউজারটি ব্যবহার করে শেষ ব্যবহারকারীর কী উপকারটি অর্জন করার চেষ্টা করছেন?
sw।

ক্লায়েন্ট / সার্ভার সেটআপগুলির সাথে কি এই উদ্বেগগুলি কি কিউ এবং সার্ভারের মধ্যে এবং ক্লায়েন্ট এবং সারির মধ্যে উদ্বেগ নয়? দেখে মনে হচ্ছে ক্লায়েন্ট / সার্ভারের দৃষ্টান্তটি এখনও রয়েছে এবং এখন দুটি জায়গায়।
কল্পনাকারী

75

REST HTTP কলগুলি কীভাবে বার্তা সারি ধারণাটি প্রতিস্থাপন করতে পারে তা বিবেচনা করে সাম্প্রতিক গবেষণার যথেষ্ট পরিমাণে গবেষণা হয়েছে।

আপনি যদি কোনও প্রক্রিয়া এবং কোনও কার্যের সংস্থান হিসাবে উত্স হিসাবে পরিচিত করেন, মাঝারি বার্তাপ্রেরণ স্তরটির প্রয়োজনীয়তা বাষ্প হতে শুরু করে।

উদা:

POST /task/name
    - Returns a 202 accepted status immediately
    - Returns a resource url for the created task: /task/name/X
    - Returns a resource url for the started process: /process/Y

GET /process/Y
    - Returns status of ongoing process

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

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

আপনার সংস্থানগুলি মুছে ফেলা না হওয়া পর্যন্ত আপনার উত্স বিদ্যমান রয়েছে যার অর্থ আপনি প্রক্রিয়া এবং কার্য শেষ হওয়ার পরে historicalতিহাসিক তথ্য দেখতে পারবেন view

কোনও অতিরিক্ত জটিল প্রোটোকল ছাড়াই আপনি একাধিক পদক্ষেপের কোনও কাজের জন্যও পরিষেবা আবিষ্কার করেছেন built

GET /task/name
    - returns form with required fields

POST (URL provided form's "action" attribute)

আপনার পরিষেবা আবিষ্কারটি একটি HTML ফর্ম - সর্বজনীন এবং মানব পাঠযোগ্য ফর্ম্যাট।

পুরো প্রবাহটি সর্বজনীনভাবে গৃহীত সরঞ্জামগুলি ব্যবহার করে প্রোগ্রামগতভাবে বা কোনও মানুষ ব্যবহার করতে পারে। এটি চালিত একটি ক্লায়েন্ট এবং অতএব বিশ্রামপ্রাপ্ত। ওয়েবে তৈরি প্রতিটি সরঞ্জাম আপনার ব্যবসায়ের প্রক্রিয়া চালাতে পারে। আপনার এখনও লগ সার্ভারের পৃথক অ্যারেতে অবিচ্ছিন্নভাবে পোস্ট করে বিকল্প বার্তা চ্যানেল রয়েছে।

আপনি কিছুক্ষণ বিবেচনা করার পরে, আপনি পিছনে বসে বুঝতে শুরু করলেন যে REST কেবল মেসেজিংয়ের সারি এবং একটি ESB এর প্রয়োজনীয়তা পুরোপুরি বাদ দিতে পারে।

http://www.infoq.com/presentations/BPM-with-REST


11
@tempire দোষ সহনশীলতা এবং তাই কি সম্পর্কে? REST দুর্দান্ত, তবে বিকাশকারী তাকে /
সেগুলি

10
@ ইয়ার 'এই সম্পর্কে কী' সম্পর্কে সর্বাধিক প্রশ্নগুলির পুনরায় বিবরণ দেওয়া যেতে পারে, 'ওয়েবে এটি কীভাবে পরিচালনা করা হয়?' ফল্ট সহনশীলতা লোড ব্যালান্সারগুলির মাধ্যমে পরিচালনা করা যেতে পারে, বা এমনকি ডিএনএস রেকর্ডগুলির ম্যানিপুলেশন। আনুভূমিক স্কেলিবিলিটির মতো আরও কয়েকটি সমস্যা কাজ করার জন্য রয়েছে - ওয়েবটি সহজাতভাবে সেটিকে ভালভাবে পরিচালনা করে না (উদাহরণস্বরূপ, ddos ​​আক্রমণ)।
টেম্পার

8
@ টেম্পায়ার, ওয়েবে কোনও গ্যারান্টিড ডেলিভারি নেই, তাইনা? আমি জমা হিট এবং প্রার্থনা করি যে বার্তাটি তার গন্তব্যস্থলে পৌঁছে। একটি এমকিউ দিয়ে, আমি জানি যে আমি এমকিউতে গেলে আমার কাজ শেষ। এটি গন্তব্যে বার্তা পাওয়ার বিষয়টি পরিচালনা করবে।
ড্যান রোজনস্টার্ক

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

16
@ ইয়ার - আমি মনে করি না যে অনেকে সমস্যা সংজ্ঞা বোঝেন এম কিউ এই জাতীয় বিষয়গুলি বিবেচনা করার জন্য যথেষ্ট সমাধান করার চেষ্টা করছে। তারা এমকিউ বুঝতে পারে তবে সমস্যার জায়গাগুলি বোঝার থেকে এটি আলাদা। যদিও এটি একটি বিস্তৃত সমস্যা, কারণ আমি মনে করি বিশ্বের বেশিরভাগ প্রোগ্রামার এবং পরিচালকরা ইঞ্জিনিয়ার সমাধানের পরিবর্তে টুকরো সংযোগ স্থাপনের প্রশিক্ষণ পেয়েছেন।
16:51

32

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

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

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


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

আমার নতুন প্রশ্নটি হল, যদি প্রক্রিয়াটি সিঙ্ক্রোনাস হতে পারে তবে সময়সীমা শেষ হওয়ার পরে অ্যাসিনক্রোনাস হয়? তাহলে সম্ভবত ওয়েব পরিষেবাদি আরও ভাল ফিট হবে।
ড্যান রোজনস্টার্ক

27

বার্তার সারিগুলি অবিচ্ছিন্ন এবং বিতরণ ব্যর্থ হলে কয়েকবার চেষ্টা করতে পারে। যদি অনুরোধকারীটির প্রতিক্রিয়ার জন্য অপেক্ষা করার প্রয়োজন না হয় তবে একটি বার্তা সারি ব্যবহার করুন।

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


1
এর জন্য ধন্যবাদ, হ্যাঁ "গ্যারান্টিযুক্ত ডেলিভারি," আমাকে এটি গুরুত্বপূর্ণ কিনা তা নিয়ে ভাবতে হবে। আমার অর্থ, সিঙ্ক বনাম অ্যাসিঙ্ক একরকম স্বাদযুক্ত জিনিস, কিছুটা অর্থে। যখন স্পষ্টভাবে কালো এবং সাদা ক্ষেত্রে রয়েছে, সেখানে একটি বিশাল ধূসর মাঝারিও রয়েছে।
ড্যান রোজনস্টার্ক

22

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


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