ওয়েব প্রোগ্রামিংয়ে কেন পোলিং গ্রহণ করা হয়?


108

আমি বর্তমানে একটি রুবি অন রেল প্রকল্পে কাজ করছি যা চিত্রগুলির একটি তালিকা দেখায়।

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

জাভাস্ক্রিপ্ট সমাধানে ( পোলিং ) নিম্নলিখিতটি ঘটে:

  • ব্যবহারকারী 1 ফটোগুলির তালিকা দেখে list
  • পটভূমিতে জাভাস্ক্রিপ্ট কোডটি একটি নতুন পোস্ট আছে কিনা তা প্রতি সেকেন্ডে একটি সমাপ্তি পোলিং করছে।
  • ব্যবহারকারী 2 একটি নতুন ছবি যুক্ত করেছে।
  • নতুন চক্রটি ট্রিগার হওয়ার আগে এবং নতুন ডেটা আনার আগে 50 এমএসের বিলম্ব হয়।
  • নতুন বিষয়বস্তুতে লোড হয় করে DOM

বাস্তব বিশ্বের উদাহরণে অনুবাদ করলে এটি অদ্ভুত বলে মনে হয়:

  • ব্যবহারকারী 1 তার ডেস্কে ছবিগুলির একটি গাদা ধারণ করে।
  • তিনি / তিনি প্রতি সেকেন্ডে ফটোগ্রাফারের কাছে যান এবং জিজ্ঞাসা করেন যে তার কোনও নতুন আছে কিনা।
  • ফটোগ্রাফার একটি নতুন ছবি তোলে।
  • এই দ্বিতীয়টি যখন সে প্রবেশ করবে তখন সে ছবিটি তুলতে এবং এটি গাদাতে রাখতে পারে।

আমার মতে সমাধানটি নিম্নলিখিত হিসাবে হওয়া উচিত:

  • ব্যবহারকারী 1 তার ডেস্কে ছবিগুলির একটি গাদা ধারণ করে।
  • ফটোগ্রাফার একটি নতুন ছবি তোলেন।
  • ফটোগ্রাফার গাদা হয়ে হাঁটেন এবং বাকীটি দিয়ে রাখেন।

পাবনাব সমাধানটি মূলত একই রকম, তবে এবার তথ্য ভাগ করে নেওয়ার জন্য পক্ষগুলির মধ্যে একটি ইন্টার্ন হাঁটা রয়েছে।

বলা বাহুল্য, উভয় সমাধানই খুব বেশি শক্তি ব্যয় করে কারণ এগুলি চালিত হওয়ার জন্য কোনও ডেটা না থাকলেও ট্রিগার করা হয়।

আমার জ্ঞান যতদূর যায় প্রায় কোনও রিয়েলটাইম অ্যাপ্লিকেশনটিতে কেন এই প্রয়োগের উপায়টি ব্যবহার করা হয় তার কোনও যুক্তি (যুক্তি) নেই।


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

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

58
কিভাবে ওয়েবসাইটসকেট সম্পর্কে?
I.devries

25
অথবা দীর্ঘ পোলিংয়ে একবার দেখুন। মূলত আপনি পোল করেন তবে সার্ভারটি আপনাকে দেখানোর জন্য কোনও নতুন ডেটা দেওয়ার আগে সাড়া দেয় না।
ম্যাটসেম্যান

53
কম্পিউটার স্পেসে অনেকগুলি নিখুঁত বুদ্ধিমান সমাধান এবং অ্যালগরিদম রয়েছে যা মেটস্পেসে করা সম্পূর্ণ অযৌক্তিক হবে।
whatsisname

উত্তর:


179

পুশিং 1, বা সীমিত সংখ্যক ব্যবহারকারীর পক্ষে ভাল কাজ করে।

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

ফটোগ্রাফার সারাক্ষণ হাঁটতে ব্যস্ত থাকতেন এবং নতুন ছবি তুলতেন না।

মৌলিকভাবে: একটি টান / পোলের মডেলটি looseিলে রিয়েলটাইম প্রয়োজনীয়তা সহ প্রচুর অবিশ্বাস্য পাঠকদের কাছে আরও ভাল স্কেল করে (কোনও ছবি যদি 10 সেকেন্ড পরে পাইলের উপরে পৌঁছায় তবে বড় বিষয় কী)।

এটি বলেছিল, একটি ধাক্কা মডেল এখনও অনেক পরিস্থিতিতে ভাল। আপনার যদি কম বিলম্বের প্রয়োজন হয় (এটি তোলার পরে আপনার নতুন ছবিটি 5s হওয়া দরকার), বা আপডেটগুলি বিরল এবং ঘন ঘন এবং পূর্বাভাসের জন্য অনুরোধ করা হয় (ফটোগ্রাফারকে যখন তিনি একটি নতুন ছবি উত্পন্ন করেন তখন প্রতি 10 সেকেন্ডে জিজ্ঞাসা করুন), তবে টানা অনুপযুক্ত। এটি আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে। নাসডাক: ধাক্কা। আবহাওয়া পরিষেবা: টানুন। বিবাহের ফটোগ্রাফার: সম্ভবত টানুন। নিউজ ফটো এজেন্সি: সম্ভবত ধাক্কা।


32
আমি 1000 ব্যবহারকারীদের সাথে আপনার উপমাটি সত্যিই পছন্দ করি, কিছু ছুটিতে, কিছু আগ্রহী না। +1 টি।
রিওয়ালক

4
@ এসবেনসকভ পিডারসন: আইপি ঠিকানার কারণে সকেটের সীমা নেই। এটি সর্বাধিক উন্মুক্ত ফাইল বর্ণনাকারীর কারণে। সুতরাং সর্বাধিক সংখ্যক উন্মুক্ত সকেট আপনি কতটি আইপি ঠিকানা ব্যবহার করেন তা থেকে স্বতন্ত্র।
slebetman

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

8
@ অ্যাপটিক্স: 1s ব্যবধানটি এখানে আলোচনা করা হচ্ছে। প্রতি সেকেন্ডে 10 কে অনুরোধের অর্থ 10 কে টিসিপি হ্যান্ডশেক এবং 10 কে এইচটিটিপি অনুরোধ (প্রতিটি সহজেই 2KB এ পৌঁছায়), যা আপনাকে আপনার সার্ভারকে ধাক্কা দিয়ে আরও ব্যাকগ্রাউন্ড শব্দের একাধিক আদেশ দেয়। এখানে বিভিন্ন ধরণের যুদ্ধ পরীক্ষিত লাইব্রেরি রয়েছে যা পুশ সাবস্ক্রিপশনগুলিকে ভোট দেওয়ার জায়গায় রাখার মতো সহজ করে তোলে। এমনকি meteor.js এর মতো ফ্রেমওয়ার্ক রয়েছে যা পুরো বিষয়টি পুরোপুরি বিমূর্ত করে তোলে। আরও কোনও ব্যাখ্যা ছাড়াই স্কেলাবিলিটির কাছে আবেদন করা খুব কমই যুক্তি is যাইহোক, আমি আমার সন্দেহ প্রকাশ করেছি এবং কোনও আলোচনা শুরু করতে চাই না;)
back2dos

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

106

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

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

আপনার উদাহরণে এমন কিছু কল্পনা করুন:

  1. ব্যবহারকারী (গুলি) ফটোগ্রাফারকে জানতে দেয় যে তিনি ভবিষ্যতের সমস্ত ফটোগুলি সম্পর্কে জানতে চান
  2. ফটোগ্রাফার লাউডস্পিকারের মাধ্যমে বলেছেন যে একটি নতুন ছবি উপলব্ধ
  3. ব্যবহারকারী ফটোগ্রাফারকে ছবির জন্য জিজ্ঞাসা করেন

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

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


43
@ রবার্টহার্ভে কীভাবে ওয়েবস্কটগুলি এই প্রশ্নের সাথে সম্পর্কিত নয়? পোলিং একটি গ্রহণযোগ্য কৌশল কিনা তা প্রশ্ন জিজ্ঞাসা করে এবং আজকাল এটি পরিষ্কারভাবে গ্রহণযোগ্য নয় (বা কমপক্ষে সর্বোত্তম নয়)। কার্যত প্রতিটি একক ব্যবহারের ক্ষেত্রে ওয়েবসকেটস, সার্ভার-প্রেরিত ইভেন্ট এবং দীর্ঘ পোলিং অনেক ভাল সঞ্চালন করে।
ফ্যাব্রিসিও ম্যাট

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

25
ওয়েবসকেটস (এবং এর মতো) ওপির "সমাধান" বাস্তবায়নের জন্য আপনি যে নিকটতম পেতে পারেন, তাই আমি বিশেষভাবে এটি উল্লেখ না করেও এটি অত্যন্ত প্রাসঙ্গিক বলে মনে করি।
কোরিলপ্রিন্স

6
উল্লেখ করার দরকার নেই, StackExchangeআপনি এখন যেমন ঠিক তেমন সাইটগুলি ব্যবহার করুন (আপনি যদি এই ওয়েবপৃষ্ঠায় ক্যাশে / সংরক্ষণ না করে থাকেন) তবে ব্যবহার করুন WebSockets। এই কারণেই আমি আরও ভাবছিলাম যে @ কোরিলপ্রিন্স না হওয়া পর্যন্ত কেউ কেন উল্লেখ করেনি WebSockets
ট্রাইসিস

6
@ ফ্যাব্রেসিওম্যাটé: আসলে, প্রতিটি ব্যবহারের ক্ষেত্রে নয়। দীর্ঘ ভোটদানের জন্য প্রতিটি ব্যবহারকারীদের জন্য সকেট খোলা রাখা দরকার যা সিস্টেমের সংস্থান গ্রহণ করে। এফ পরিষেবাগুলি যে খুব বেশি সময় সমালোচনামূলক নয় তবে প্রচুর ব্যবহারকারী রয়েছে, সকেট খোলা রাখা সাধারণত এখন এবং পরে সংক্ষিপ্ত 304 পরিবেশন করার চেয়ে বেশি ব্যয়বহুল। বেশিরভাগ পরিষেবাগুলির জন্য, সামান্য বিলম্ব কোনও সমস্যা নয়। একটি একক মেশিন সাধারণত ধাক্কা দেওয়ার চেয়ে পোলিংয়ের সাথে আরও বেশি ক্লায়েন্টকে সেবা দিতে পারে।
মিথ্যা রায়ান

42

কখনও কখনও যথেষ্ট ভাল যথেষ্ট ভাল।

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


3
এটি, এটি হাজার বার। এটি গ্রহণযোগ্য কারণ এটি সাধারণত যথেষ্ট ভাল।
কর্সিকা

1
এটি যথেষ্ট ভাল উত্তর
জেইন আর

31

এইচটিটিপি প্রোটোকল সীমাবদ্ধ যাতে ক্লায়েন্টটি অনুরোধটি প্রবর্তনকারী হতে হবে। ক্লায়েন্টের অনুরোধের জবাব না দেওয়া পর্যন্ত সার্ভার ক্লায়েন্টের সাথে যোগাযোগ করতে পারে না।

সুতরাং আপনার বাস্তব বিশ্বের উদাহরণ সামঞ্জস্য করতে, নিম্নলিখিত প্রতিরোধ যুক্ত করুন:

  • ব্যবহারকারী 2 কেবলমাত্র 1 ব্যবহারকারীর প্রশ্নের একক বাক্য প্রত্যুত্তর দিয়ে উত্তর দিতে পারে, তার পরে ব্যবহারকারীর 1 ত্যাগ করতে হবে। ব্যবহারকারী 2 এর সাথে যোগাযোগের অন্য কোনও উপায় নেই।

এই নতুন সংযম নিয়ে, আপনি কীভাবে ভোটদান ব্যতীত এটি করবেন?


6
HTTP 2.0 সার্ভার পুশগুলিকে সমর্থন করবে। "পুশিং স্পষ্টভাবে অনুরোধ না করেই সার্ভারগুলিকে ক্লায়েন্টদের কাছে উপস্থাপনা পাঠানোর অনুমতি দেয়।" en.wikipedia.org/wiki/HTTP_2.0
কাপ্তান

5
@ ক্যাপ্টান, এটি দুর্দান্ত, তবে এটি উপলভ্য নয়। আপনি যা পেয়েছেন তা করুন।
রিওয়ালক

7
দীর্ঘ-পোলিং রয়েছে যা এখনই উপলভ্য এবং একটি পুল ব্যবহার করে একটি পুশ মডেলকে অনুকরণ করে।
টিম বি

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

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

13

কেন ভোটগ্রহণ গ্রহণ করা হয়? কারণ বাস্তবে প্রতিটি সমাধানই আসলে নিম্ন স্তরের ভোটদান!

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

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

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

সুতরাং সর্বোত্তম পদ্ধতির সম্ভবত দীর্ঘস্থায়ী হবে:

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

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


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

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

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

1
দীর্ঘ ভোটদানের জন্য +1। ধূমকেতু এন.ইউইকিপিডিয়া.আর.উইকি
ক্যামিট_১৯২২ প্রোগ্রামিং

9

ভোটদানের একটি সুবিধা হ'ল এটি কোনও ক্ষতির সীমাবদ্ধ করে যা কোনও বার্তা অনুপস্থিত বা কোনও কিছুর স্থির বিশিষ্ট হয়ে পড়লে যে কারণ হতে পারে limits এক্স যদি প্রতি পাঁচ সেকেন্ডে একবার Y এর স্থিতির জন্য জিজ্ঞাসা করে, তবে একটি অনুরোধ বা উত্তর হারিয়ে যাওয়ার ফলে এক্স এর তথ্য কেবল 5 সেকেন্ডের চেয়ে দশ সেকেন্ডের বাইরে চলে আসবে যদি Y পুনরায় বুট করা হয়ে যায়, এক্স পরের বার এটি সম্পর্কে জানতে পারে সময় ওয়াই এক্স এর একটি বার্তায় সাড়া দিতে সক্ষম। যদি এক্স পুনরায় বুট হয়ে যায়, তবে এটি পরে ওয়াকে কোনও কিছু জিজ্ঞাসা করতে পারে না, তবে যে কেউ এক্স এর অবস্থান পর্যবেক্ষণ করছে তাকে বুঝতে হবে যে এটি পুনরায় চালু হয়েছে।

যদি এক্স পোলিং ওয়াইয়ের পরিবর্তে এক্স এর ওয়াইয়ের উপর নির্ভর করে যখনই তার রাজ্য পরিবর্তন হয় তবে তা যদি Y এর রাজ্য পরিবর্তন হয় এবং এটি এক্সকে একটি বার্তা প্রেরণ করে তবে যে কারণেই এই বার্তাটি পাওয়া যায় নি, এক্স কখনই পরিবর্তনের বিষয়ে সচেতন না হতে পারে । তেমনিভাবে যদি Y রিবুট হয়ে যায় এবং এক্সকে কোনও বিষয়ে কোনও বার্তা প্রেরণের কোনও কারণ নেই।

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

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


ওয়াকে চাপ দেওয়ার বার্তাগুলি X এর সাথে (দ্বিতীয় অনুচ্ছেদ) আপনি যে সমস্যার কথা বলবেন তা প্রতিটি বার্তার সাথে একটি ক্রমিক নম্বর সংযুক্ত করে সংশোধন করা যেতে পারে। যদি কোনও বার্তা হারিয়ে যায়, এক্স জানতে পারবে কারণ এটি সিরিয়ালটি পায়নি। সেই সময়ে এটি ওয়াই ডিএনএস মাস্টার -> দাসের প্রতিরূপ এইভাবে কাজ করে এর সাথে সিঙ্ক করার জন্য অন্যান্য ব্যবস্থা নিতে পারে।
23:51

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

2
@ কোরিলপ্রিন্স - সমস্যা হ'ল পর্যায়ক্রমিক বার্তা ছাড়াই এক্স অনুপস্থিত বার্তাটি একদিন দেরিতে বা এক বছর দেরিতে বা 10 বছর দেরিতে সনাক্ত করতে পারে। যুক্তিসঙ্গত সময়ে হারিয়ে যাওয়া প্যাকেট সনাক্ত করতে আপনাকে কোনওরকম পোল করতে হবে। আপনি পোলটি "টান" করতে পারেন বা পোলটি "ধাক্কা" দিতে পারেন। প্রথমটিকে "পোলিং" বলা হয় দ্বিতীয়টিকে "হার্টবিট" বলা হয়
স্লাইবেটম্যান

উভয়ই খুব সত্য। এটি সব পরিস্থিতির উপর নির্ভর করে।
কোরিলপ্রিন্স

@slebetman: পর্যাবৃত্ত বার্তা ছাড়া, যদি ওয়াই পুনরায় বুট পরার, কোন প্রক্রিয়া যার দ্বারা এক্স হবে হতে পারে কি কখনো এটি আবিষ্কার।
ক্যাট

1

প্রশ্নটি অপ্রয়োজনীয় পোলের পরিমাণ বনাম অপ্রয়োজনীয় পুশের পরিমাণের ভারসাম্য বজায় রাখা।

আপনি যদি পোল করেন:

  • আপনি এই মুহুর্তে একটি উত্তর পেতে। ভাল যদি আপনি মাঝে মাঝে জিজ্ঞাসা করেন বা এই মুহুর্তে কোনও ডেটা সেট করার দরকার পড়ে Good
  • আপনি একটি "কোনও বিষয়বস্তু নয়" উত্তর পেতে পারেন, কারণ লাইনে অর্থহীন বোঝা।
  • আপনি যখন পোল করেন তখনই আপনি লাইনে বোঝা চাপান, তবে সর্বদা আপনি যখন পোল করেন।

যদি আপনি ধাক্কা:

  • আপনি যখন উত্তর পাওয়া যায় ঠিক তখনই সরবরাহ করেন, যা ক্লায়েন্টের পক্ষ থেকে তাত্ক্ষণিক প্রক্রিয়াকরণের অনুমতি দেয়।
  • আপনি ক্লায়েন্টগুলিতে ডেটা সরবরাহ করতে পারেন যারা এই ডেটাতে আগ্রহী নয়, লাইনে অর্থহীন বোঝা সৃষ্টি করে।
  • প্রতিবার নতুন ডেটা থাকলে আপনি লাইনে লোড রেখেছিলেন, তবে কেবল যখন নতুন ডেটা থাকে।

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

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

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

অন্য ক্যাশে-সার্ভারে কিছু টাকা বাঁচানোর চেয়ে আরও বেশি ব্যবহারকারী (যেমন অ্যাক্সেস করা সহজ) থাকা ভাল?


1

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

  1. ব্যান্ডউইথ একটি সমস্যা ছিল
  2. সংযোগ মাঝে মাঝে হতে পারে।
  3. ব্রাউজারগুলিতে তেমন কম্পিউটিং শক্তি ছিল না
  4. সামগ্রী অ্যাক্সেস করার অন্যান্য পদ্ধতি ছিল were ওয়েব ডাব্লু 3 নয়।

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

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

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