কেউ দয়া করে HTTP / 2 এর সাথে মাল্টিপ্লেক্সিং ব্যাখ্যা করতে পারেন এবং এটি কীভাবে কাজ করে?
কেউ দয়া করে HTTP / 2 এর সাথে মাল্টিপ্লেক্সিং ব্যাখ্যা করতে পারেন এবং এটি কীভাবে কাজ করে?
উত্তর:
সহজ কথায় বলতে গেলে, মাল্টিপ্লেক্সিং আপনার ব্রাউজারকে একই সংযোগে একবারে একাধিক অনুরোধ বন্ধ করে দেয় এবং অনুরোধগুলিকে কোনও ক্রমে ফেরত পেতে দেয়।
এবং এখন আরও জটিল উত্তরের জন্য ...
আপনি যখন কোনও ওয়েব পৃষ্ঠা লোড করেন, এটি HTML পৃষ্ঠাটি ডাউনলোড করে, এটি দেখায় এটির জন্য কিছু সিএসএস, কিছু জাভাস্ক্রিপ্ট, চিত্রের একটি বোঝা ... ইত্যাদি প্রয়োজন
HTTP / 1.1 এর অধীনে আপনি কেবল একবারে এইচটিটিপি / 1.1 সংযোগে তাদের মধ্যে একটি ডাউনলোড করতে পারেন। সুতরাং আপনার ব্রাউজারটি এইচটিএমএল ডাউনলোড করে, তারপরে এটি সিএসএস ফাইলের জন্য জিজ্ঞাসা করে। যখন এটি ফিরে আসে তখন এটি জাভাস্ক্রিপ্ট ফাইলের জন্য জিজ্ঞাসা করে। যখন এটি ফিরে আসবে তখন এটি প্রথম চিত্র ফাইলের জন্য জিজ্ঞাসা করবে ... ইত্যাদি HTTP / 1.1 মূলত সিঙ্ক্রোনাস - একবার আপনি কোনও অনুরোধ প্রেরণ না করা পর্যন্ত আপনি আটকে থাকেন। এর অর্থ বেশিরভাগ সময় ব্রাউজারটি খুব বেশি কাজ করে না, যেহেতু এটি একটি অনুরোধ বন্ধ করে দিয়েছে, একটি প্রতিক্রিয়ার জন্য অপেক্ষা করছে, তারপরে অন্য একটি অনুরোধ বন্ধ করে দেবে, তারপরে একটি প্রতিক্রিয়ার জন্য অপেক্ষা করছে ... ইত্যাদি অবশ্যই জটিল সাইটগুলি সহ প্রচুর জাভাস্ক্রিপ্টের ব্রাউজারকে প্রচুর প্রসেসিং করার প্রয়োজন হয়, তবে এটি জাভাস্ক্রিপ্ট ডাউনলোড হওয়ার উপর নির্ভর করে, অন্তত শুরুতে, এইচটিটিপি / ১.১-এ দেরি হওয়ার কারণে সমস্যা হয় না। সাধারণত সার্ভার isn '
তাই আজ ওয়েবে মুখ্য সমস্যাগুলির মধ্যে একটি হ'ল ব্রাউজার এবং সার্ভারের মধ্যে অনুরোধগুলি প্রেরণে নেটওয়ার্কের বিলম্বিতা। এটি কেবল দশ বা শত শত মিলিসেকেন্ড হতে পারে, যা খুব বেশি মনে হচ্ছে না তবে তারা যুক্ত হয় এবং প্রায়শই ওয়েব ব্রাউজিংয়ের সবচেয়ে ধীর অংশ - বিশেষত ওয়েবসাইটগুলি আরও জটিল হয়ে ওঠে এবং অতিরিক্ত সংস্থান প্রয়োজন (যেমন তারা পাচ্ছে) এবং ইন্টারনেট অ্যাক্সেস মোবাইলের মাধ্যমে ক্রমবর্ধমান (ব্রডব্যান্ডের চেয়ে ধীর লেটনেস সহ)
উদাহরণ হিসাবে ধরা যাক যে 10 টি সংস্থান আছে যা আপনার ওয়েবপৃষ্ঠাটি এইচডিএমএল লোড হওয়ার পরে লোড হওয়া দরকার (যা আজকের মানদশগুলির দ্বারা খুব ছোট একটি সাইট কারণ 100+ সংস্থান সাধারণ, তবে আমরা এটিকে সহজ রাখব এবং এটির সাথে চলব উদাহরণ)। এবং ধরা যাক প্রতিটি অনুরোধটি ওয়েব সার্ভার এবং পিছনে ইন্টারনেট জুড়ে ভ্রমণ করতে 100 মিমি সময় নেয় এবং উভয় প্রান্তে প্রসেসিংয়ের সময় নগণ্য (সরলতার জন্য উদাহরণটির জন্য 0 বলি)। যেহেতু আপনাকে প্রতিটি সংস্থান পাঠাতে হবে এবং একবারে প্রতিক্রিয়ার জন্য অপেক্ষা করতে হবে, পুরো সাইটটি ডাউনলোড করতে এটি 10 * 100ms = 1000 মিমি বা 1 সেকেন্ড সময় নেবে।
এটি পেতে, ব্রাউজারগুলি সাধারণত ওয়েব সার্ভারে একাধিক সংযোগ খোলে (সাধারণত 6)। এর অর্থ একটি ব্রাউজার একই সাথে একাধিক অনুরোধ বন্ধ করে দিতে পারে, যা অনেক ভাল, তবে একাধিক সংযোগ স্থাপন এবং পরিচালনা করার জটিলতায় (যা ব্রাউজার এবং সার্ভার উভয়কেই প্রভাবিত করে)। আসুন পূর্ববর্তী উদাহরণটি চালিয়ে যান এবং আরও 4 সংযোগ রয়েছে এবং আরও সরলতার জন্য, বলি যে সমস্ত অনুরোধগুলি সমান। এই ক্ষেত্রে আপনি অনুরোধগুলি চারটি সংযোগে বিভক্ত করতে পারেন, সুতরাং দু'জনের কাছে 3 টি সংস্থান থাকবে এবং সম্পূর্ণরূপে দশটি সংস্থান (3 + 3 + 2 + 2 = 10) পাওয়ার জন্য দুটির কাছে 2 টি সংস্থান থাকবে। সেক্ষেত্রে সবচেয়ে খারাপ পরিস্থিতি 3 রাউন্ড বার বা 300 মিমি = 0.3 সেকেন্ড - একটি ভাল উন্নতি, তবে এই সাধারণ উদাহরণটিতে এই একাধিক সংযোগ স্থাপনের ব্যয় অন্তর্ভুক্ত নয়,
এইচটিটিপি / ২ আপনাকে একই সাথে একাধিক অনুরোধ প্রেরণের অনুমতি দেয়সংযোগ - সুতরাং উপরের হিসাবে আপনার একাধিক সংযোগ খোলার দরকার নেই। সুতরাং আপনার ব্রাউজারটি বলতে পারেন "এই সিএসএস ফাইলটি জিমে করুন that সেই জাভাস্ক্রিপ্ট ফাইলটি গিমে করুন G একক সংযোগটি সম্পূর্ণরূপে ব্যবহার করতে। নিখরচায় সংযোগের জন্য অপেক্ষা করা সেই অনুরোধগুলি প্রেরণে বিলম্ব না করার স্পষ্ট পারফরম্যান্স সুবিধা এটির রয়েছে। এই সমস্ত অনুরোধগুলি ইন্টারনেটের মাধ্যমে সার্ভারের (প্রায়) সমান্তরালে তাদের পথ তৈরি করে। সার্ভার প্রত্যেকে প্রত্যেকে সাড়া দেয় এবং তারপরে তারা তাদের পথে ফিরে যেতে শুরু করে। প্রকৃতপক্ষে এটি এর চেয়েও শক্তিশালী যেহেতু ওয়েব সার্ভার তাদের যে কোনও ক্রমে প্রতিক্রিয়া জানাতে পারে বলে মনে হয় এবং বিভিন্ন ক্রমে ফাইলগুলি ফেরত পাঠাতে পারে অথবা অনুরোধ করা প্রতিটি ফাইলকে টুকরো টুকরো করে এবং ফাইলগুলি একসাথে মিশে যায়।লাইন অবরুদ্ধ সমস্যা প্রধান )। ওয়েব ব্রাউজারটি তখন সমস্ত টুকরো আবার একসাথে রেখে দেওয়া হয়। সর্বোত্তম ক্ষেত্রে (কোনও ব্যান্ডউইথ সীমা না ধরে - নীচে দেখুন), যদি সমস্ত 10 টি অনুরোধ সমান্তরালভাবে একবারে বেশ কয়েকবার সরিয়ে দেওয়া হয় এবং সার্ভারের সাথে সাথে তার উত্তর দেওয়া হয় তবে এর অর্থ হল আপনার মূলত এক রাউন্ড ট্রিপ বা 100 মিমি বা 0.1 সেকেন্ড থাকতে হবে সমস্ত 10 সংস্থান ডাউনলোড করুন। এবং এইচটিটিপি / ১.১ এর জন্য একাধিক সংযোগের ডাউনসাইডগুলির কোনওটিই নেই! প্রতিটি ওয়েবসাইটের সংস্থান বৃদ্ধি হওয়ার কারণে এটি আরও বেশি স্কেলযোগ্য (
এই চিত্রটি পার্থক্যগুলি দেখায় এবং অ্যানিমেটেড সংস্করণও রয়েছে ।
দ্রষ্টব্য: HTTP / 1.1 তে পাইপলাইনের ধারণা রয়েছে যা একাধিক অনুরোধগুলি একবারে পাঠানো মঞ্জুরি দেয়। তবে তাদের পুরোপুরি অনুরোধ অনুসারে এখনও তাদের ফিরিয়ে দিতে হয়েছিল, তাই এইচটিটিপি / ২ এর মতো ভাল আর কোথাও নেই, এমনকি ধারণাগতভাবে এটি একই রকম থাকলেও। এটি ব্রাউজার এবং সার্ভার উভয়ই দুর্বলভাবে সমর্থিত তা উল্লেখ করার জন্য নয় যে এটি খুব কমই ব্যবহৃত হয়।
নীচের মন্তব্যে হাইলাইট করা একটি জিনিস হ'ল ব্যান্ডউইথ এখানে কীভাবে আমাদের প্রভাবিত করে। অবশ্যই আপনার ইন্টারনেট সংযোগটি আপনি কতটা ডাউনলোড করতে পারবেন তার দ্বারা সীমাবদ্ধ এবং এইচটিটিপি / 2 এটি সম্বোধন করে না। সুতরাং যদি উপরোক্ত উদাহরণগুলিতে আলোচিত সেই 10 টি সংস্থানগুলি সমস্ত বড় মুদ্রণ-মানের চিত্র হয় তবে তারা ডাউনলোড করতে এখনও ধীর হবে। তবে, বেশিরভাগ ওয়েব ব্রাউজারের জন্য, ব্যান্ডউইথটি বিলম্বিত হওয়ার চেয়ে সমস্যা কম। সুতরাং যদি এই দশটি সংস্থানগুলি ছোট আইটেম হয় (বিশেষত CSS এবং জাভাস্ক্রিপ্টের মতো টেক্সট সংস্থানগুলি যা ক্ষুদ্রতর হিসাবে দেখানো যায়) তবে ব্যান্ডউইদথ আসলেই কোনও সমস্যা নয় - এটি সংস্থানগুলির নিখুঁত পরিমাণ হয় সমস্যা এবং এইচটিটিপি / 2 এটি সমাধান করতে দেখায়। এই কারণেই এইচটিটিপি / ১.১ এ অন্য কাজ হিসাবে কনটেনটেশন ব্যবহৃত হয়, সুতরাং উদাহরণস্বরূপ সমস্ত সিএসএস প্রায়শই এক ফাইলের সাথে যুক্ত হয়:এইচটিটিপি / ২ এর অধীনে অ্যান্টি-প্যাটার্ন - যদিও এটি পুরোপুরি বন্ধ করে দেওয়ার বিরুদ্ধে যুক্তিও রয়েছে)।
এটিকে বাস্তব বিশ্বের উদাহরণ হিসাবে ধরার জন্য ধরুন: হোম ডেলিভারির জন্য আপনাকে একটি দোকান থেকে 10 টি আইটেম অর্ডার করতে হবে:
একটি সংযোগ সহ HTTP / 1.1 এর অর্থ আপনাকে একবারে তাদের একটি করে অর্ডার করতে হবে এবং শেষ না আসা পর্যন্ত আপনি পরবর্তী আইটেমটি অর্ডার করতে পারবেন না। আপনি বুঝতে পারবেন যে সমস্ত কিছুর জন্য এটি কয়েক সপ্তাহ সময় নিতে পারে।
একাধিক সংযোগ সহ HTTP / 1.1 এর অর্থ আপনি একই সময়ে যেতে (সীমিত) সংখ্যক স্বতন্ত্র অর্ডার পেতে পারেন।
পাইপলাইনিং সহ এইচটিটিপি / 1.1 এর অর্থ আপনি অপেক্ষা না করে একের পর এক 10 টি আইটেমের জন্য জিজ্ঞাসা করতে পারেন, তবে তারপরে সেগুলি আপনি যে নির্দিষ্ট ক্রমে জিজ্ঞাসা করেছিলেন সেটিতে তারা পৌঁছে যায়। এবং যদি কোনও আইটেম স্টকের বাইরে থাকে তবে আপনার পরে অর্ডার করা আইটেমগুলি পাওয়ার আগে আপনাকে তার জন্য অপেক্ষা করতে হবে - এমনকি যদি সেই আইটেমগুলি আসলে স্টকটিতে থাকে! এটি কিছুটা ভাল তবে এখনও বিলম্বের সাপেক্ষে এবং আসুন আমরা বলি যে বেশিরভাগ দোকানগুলি যাইহোক এইভাবে অর্ডার দেওয়ার পক্ষে সমর্থন করে না।
HTTP / 2 এর অর্থ আপনি আপনার আইটেমগুলিকে কোনও নির্দিষ্ট ক্রমে অর্ডার করতে পারেন - কোনও বিলম্ব ছাড়াই (উপরের মতো)। তারা প্রস্তুত হিসাবে দোকানটি তাদের প্রেরণ করবে, সুতরাং তারা যা চেয়েছিল তার চেয়ে আলাদা অর্ডারে আসতে পারে এবং তারা এমনকি আইটেমগুলি বিভক্ত করতে পারে যাতে আদেশের কিছু অংশ প্রথমে আসে (উপরের চেয়ে ভাল)। শেষ পর্যন্ত এর অর্থ আপনার উচিত 1) সামগ্রিকভাবে সবকিছু দ্রুত পান এবং 2) প্রতিটি আইটেম আসার সাথে সাথে কাজ শুরু করতে পারে ("ওহ যে আমি এটি ভেবেছিলাম ততটা সুন্দর নয়, তাই আমি এর পরিবর্তে বা অন্য কোনও কিছু অর্ডার করতে চাই" )।
অবশ্যই আপনি এখনও আপনার পোস্টম্যানের ভ্যান (ব্যান্ডউইথ) এর আকারের দ্বারা সীমাবদ্ধ রয়েছেন যাতে তারা যদি সেদিন পুরোপুরি পূর্ণ থাকে তবে পরের দিন পর্যন্ত বাছাই করা অফিসে কিছু প্যাকেজ রেখে দিতে পারে, তবে তুলনায় সমস্যা খুব কমই আসলে পিছনে এবং পিছনে অর্ডার প্রেরণে দেরীতে। বেশিরভাগ ওয়েব ব্রাউজিংয়ে বিশাল প্যাকেজগুলির চেয়ে ছোট এবং ছোট অক্ষরগুলি পাঠানো জড়িত।
আশা করি এইটি কাজ করবে.
মাল্টিপ্লেক্সিংয়ের অনুরোধ করুন
HTTP / 2 একক টিসিপি সংযোগের সাথে সমান্তরালভাবে ডেটার জন্য একাধিক অনুরোধ প্রেরণ করতে পারে। এটি HTTP / 2 প্রোটোকলের সর্বাধিক উন্নত বৈশিষ্ট্য কারণ এটি আপনাকে একটি সার্ভার থেকে অ্যাসিঙ্ক্রোনালি ওয়েব ফাইলগুলি ডাউনলোড করতে দেয়। বেশিরভাগ আধুনিক ব্রাউজারগুলি একটি সার্ভারে টিসিপি সংযোগগুলি সীমাবদ্ধ করে। এটি অতিরিক্ত রাউন্ড ট্রিপ সময় (আরটিটি) হ্রাস করে, কোনও ওয়েবসাইটের অপ্টিমাইজেশন ছাড়াই আপনার ওয়েবসাইটকে দ্রুত লোড করে তোলে এবং ডোমেন শাড়িংকে অপ্রয়োজনীয় করে তোলে।
সাধারণ উত্তর ( উত্স ):
মাল্টিপ্লেক্সিং এর অর্থ আপনার ব্রাউজারটি একাধিক অনুরোধগুলি প্রেরণ করতে এবং একক টিসিপি সংযোগে "বান্ডিল" একাধিক প্রতিক্রিয়া পেতে পারে। সুতরাং একই সার্ভার থেকে আগত ফাইলগুলির জন্য ডিএনএস লকআপস এবং হ্যান্ডশেকগুলির সাথে যুক্ত কাজের চাপ সংরক্ষণ করা হয়।
জটিল / বিস্তারিত উত্তর:
@ বাজ্জাডিপি প্রদত্ত উত্তরটি দেখুন।
এইচটিটিপি ২.০-তে মাল্টিপ্লেক্সিং হ'ল ব্রাউজার এবং সার্ভারের মধ্যে সম্পর্কের ধরণ যা সমান্তরালভাবে একাধিক অনুরোধ এবং প্রতিক্রিয়া সরবরাহ করতে একক সংযোগ ব্যবহার করে, এই প্রক্রিয়াটিতে অনেকগুলি পৃথক ফ্রেম তৈরি করে।
মাল্টিপ্লেক্সিং কঠোর অনুরোধ-প্রতিক্রিয়া শব্দার্থবিজ্ঞান থেকে বিরতি এবং এক থেকে বহু বা বহু থেকে বহু সম্পর্ক সক্ষম করে।
যেহেতু @ জুয়ানমা মেনেনডেজ উত্তরটি সঠিক যখন তার ডায়াগ্রামটি বিভ্রান্তিকর হচ্ছে, তাই আমি মাল্টিপ্লেক্সিং এবং পাইপলাইনের মধ্যে পার্থক্য পরিষ্কার করে এটিকে আরও উন্নত করার সিদ্ধান্ত নিয়েছি, যে ধারণাগুলি প্রায়শই সঙ্কোচিত হয়।
পাইপলাইনিং (HTTP / 1.1)
একাধিক অনুরোধ একই পাঠানো হয় HTTP সংযোগে । প্রতিক্রিয়া একই ক্রমে প্রাপ্ত হয়। প্রথম প্রতিক্রিয়া যদি অনেক সময় নেয় তবে অন্যান্য প্রতিক্রিয়াগুলির জন্য সারিবদ্ধভাবে অপেক্ষা করতে হবে। সিপিইউ পাইপলিংয়ের অনুরূপ যেখানে একটি নির্দেশিকা আনা হয় এবং অন্যটি ডিকোড করা হচ্ছে। একাধিক নির্দেশাবলী একই সাথে ফ্লাইটে রয়েছে তবে তাদের অর্ডার সংরক্ষণ করা হয়েছে।
মাল্টিপ্লেক্সিং (HTTP / 2)
একই HTTP সংযোগে একাধিক অনুরোধ প্রেরণ করা হয় । প্রতিক্রিয়াগুলি স্বেচ্ছাসেবী ক্রমে প্রাপ্ত হয়। অন্যদেরকে ব্লক করে এমন ধীর সাড়া পাওয়ার জন্য অপেক্ষা করার দরকার নেই। আধুনিক সিপিইউগুলিতে আউট-অফ-অর্ডার নির্দেশনা কার্যকরের অনুরূপ।
আশা করি উন্নত চিত্রটি পার্থক্যটি স্পষ্ট করে: