সম্পাদনা করুন: আমার উত্তরটি কেবলমাত্র মূল অশিক্ষিত প্রশ্নকেই অন্তর্ভুক্ত করে, যা লোড ব্যালান্সার / বিপরীত প্রক্সিগুলিতে এই ধরণের জিনিসটি সাধারণ কিনা। আমি নিশ্চিত না যে এনজিনেক্স / প্রোডাক্ট এক্স এর পক্ষে সমর্থন করে কিনা, আমার বিপরীত প্রক্সিং অভিজ্ঞতার 99.9% এইচএপ্রক্সির সাথে রয়েছে।
সঠিক। এইচটিটিপি ক্লায়েন্টের পাশে রাখুন, তবে সার্ভারের পাশে নেই।
কেন?
আপনি যদি কিছু বিশদ বিভক্ত করেন তবে আপনি কেন তা সুবিধা হচ্ছেন তাড়াতাড়ি দেখতে পাবেন। এই উদাহরণের জন্য, চলুন আমরা ভেবে দেখি যে আমরা একটি পৃষ্ঠা www.example.com লোড করছি এবং সেই পৃষ্ঠাতে 3 টি চিত্র রয়েছে, img [1-3] .jpg।
ব্রাউজার কোনও কীপ-অ্যালাইভ ছাড়াই কোনও পৃষ্ঠা লোড করছে
- ক্লায়েন্ট 80 পোর্টে www.example.com- এ একটি টিসিপি সংযোগ স্থাপন করে
- ক্লায়েন্ট "/" এর জন্য একটি HTTP জিইটি অনুরোধ করে
- সার্ভার ইউআরআই "/" এর HTML সামগ্রী প্রেরণ করে (এতে 3 টি চিত্রের রেফারেন্সে এইচটিএমএল ট্যাগ অন্তর্ভুক্ত রয়েছে)
- সার্ভার টিসিপি সংযোগটি বন্ধ করে দেয়
- ক্লায়েন্ট 80 পোর্টে www.example.com- এ একটি টিসিপি সংযোগ স্থাপন করে
- ক্লায়েন্ট "/img1.jpg" এর জন্য একটি HTTP জিইটি অনুরোধ করে
- সার্ভার চিত্রটি প্রেরণ করে
- সার্ভার টিসিপি সংযোগটি বন্ধ করে দেয়
- ক্লায়েন্ট 80 পোর্টে www.example.com- এ একটি টিসিপি সংযোগ স্থাপন করে
- ক্লায়েন্ট "/img2.jpg" এর জন্য একটি HTTP জিইটি অনুরোধ করে
- সার্ভার চিত্রটি প্রেরণ করে
- সার্ভার টিসিপি সংযোগটি বন্ধ করে দেয়
- ক্লায়েন্ট 80 পোর্টে www.example.com- এ একটি টিসিপি সংযোগ স্থাপন করে
- ক্লায়েন্ট "/img3.jpg" এর জন্য একটি HTTP জিইটি অনুরোধ করে
- সার্ভার চিত্রটি প্রেরণ করে
- সার্ভার টিসিপি সংযোগটি বন্ধ করে দেয়
লক্ষ্য করুন যে সেখানে 4 টি পৃথক টিসিপি সেশন স্থাপন করা হয়েছে এবং তারপরে এটি বন্ধ রয়েছে।
ব্রাউজার কীপ-অ্যালাইভ সহ একটি পৃষ্ঠা লোড করছে
এইচটিটিপি কিপ-অ্যালাইভ একের পর এক একাধিক এইচটিটিপি অনুরোধ সরবরাহ করার জন্য একটি টিসিপি সংযোগের অনুমতি দেয়।
- ক্লায়েন্ট 80 পোর্টে www.example.com- এ একটি টিসিপি সংযোগ স্থাপন করে
- ক্লায়েন্ট "/" এর জন্য একটি HTTP জিইটি অনুরোধ করে এবং সার্ভারকে এটি একটি এইচটিটিপি কিপ-অ্যালাইভ সেশন করতে বলে make
- সার্ভার ইউআরআই "/" এর HTML সামগ্রী প্রেরণ করে (এতে 3 টি চিত্রের রেফারেন্সে এইচটিএমএল ট্যাগ অন্তর্ভুক্ত রয়েছে)
- সার্ভার টিসিপি সংযোগটি বন্ধ করে না
- ক্লায়েন্ট "/img1.jpg" এর জন্য এইচটিটিপি অনুরোধ জানায়
- সার্ভার চিত্রটি প্রেরণ করে
- ক্লায়েন্ট "/img2.jpg" এর জন্য এইচটিটিপি অনুরোধ জানায়
- সার্ভার চিত্রটি প্রেরণ করে
- ক্লায়েন্ট "/img3.jpg" এর জন্য এইচটিটিপি অনুরোধ জানায়
- সার্ভার চিত্রটি প্রেরণ করে
- সার্ভার টিটিসিপি সংযোগটি বন্ধ করে দেয় যদি তার এইচটিটিপি কিপ-অ্যালাইভ সময়সীমার মধ্যে আর কোনও HTTP অনুরোধ না আসে
খেয়াল করুন যে কিপ-অ্যালাইভের সাথে, কেবলমাত্র 1 টিসিপি সংযোগ স্থাপন করা হয়েছে এবং শেষ পর্যন্ত বন্ধ হয়ে গেছে।
কিপ-অ্যালাইভ আরও ভাল?
এর উত্তর দেওয়ার জন্য আপনাকে বুঝতে হবে ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি টিসিপি সংযোগ স্থাপন করতে কী লাগে। একে টিসিপি 3-ওয়ে হ্যান্ডশেক বলে।
- ক্লায়েন্ট একটি এসওয়াইএন (ক্রোনাইজ) প্যাকেট প্রেরণ করে
- সার্ভার একটি এসওয়াইএন (ক্রোনাইজ) এসকে (নওগ্রেশন), এসওয়াইএন-এসিকে ফেরত পাঠায়
- ক্লায়েন্ট একটি এসকে (এখনকারমেন্ট) প্যাকেট প্রেরণ করে
- টিসিপি সংযোগ এখন ক্লায়েন্ট এবং সার্ভার উভয়ই সক্রিয় বিবেচনা করে
নেটওয়ার্কগুলিতে বিলম্ব রয়েছে, সুতরাং 3-উপায় হ্যান্ডশেকের প্রতিটি পদক্ষেপে একটি নির্দিষ্ট পরিমাণ সময় লাগে। বলুন যে ক্লায়েন্ট এবং সার্ভারের মধ্যে 30 মাইল রয়েছে, টিসিপি সংযোগ স্থাপনের জন্য প্রয়োজনীয় আইপি প্যাকেটগুলি পিছনে পিছনে প্রেরণের অর্থ একটি টিসিপি সংযোগ স্থাপনে 3 x 30ms = 90ms লাগে।
এটি খুব বেশি শোনাচ্ছে না, তবে আমরা যদি আমাদের মূল উদাহরণে বিবেচনা করি তবে আমাদের 4 টি পৃথক টিসিপি সংযোগ স্থাপন করতে হবে, এটি 360 মিমি হয়ে যায়। 30 মিনিটের পরিবর্তে ক্লায়েন্ট এবং সার্ভারের মধ্যে বিলম্ব যদি 100 মিমি হয়? তারপরে আমাদের 4 টি সংযোগ স্থাপনে 1200 মিমি নিচ্ছে।
আরও খারাপ, একটি সাধারণ ওয়েব পৃষ্ঠায় লোড করার জন্য মাত্র 3 টিরও বেশি চিত্রের প্রয়োজন হতে পারে, একাধিক সিএসএস, জাভাস্ক্রিপ্ট, চিত্র বা অন্যান্য ফাইল থাকতে পারে যা ক্লায়েন্টকে অনুরোধ করতে হবে। যদি পৃষ্ঠাটি 30 টি অন্যান্য ফাইল লোড করে এবং ক্লায়েন্ট-সার্ভারের বিলম্বটি 100 মিমি হয় তবে আমরা কতক্ষণ টিসিপি সংযোগ স্থাপনে ব্যয় করব?
- 1 টিসিপি সংযোগ স্থাপন করতে 3 x বিলম্বিততা, অর্থাৎ 3 x 100ms = 300ms লাগবে।
- আমাদের অবশ্যই এটি পৃষ্ঠাটির জন্য একবার 31 বার এবং পৃষ্ঠায় রেফারেন্স করা প্রতিটি ফাইলের জন্য আরও 30 বার করতে হবে। 31 x 300ms = 9.3 সেকেন্ড।
ওয়েবপৃষ্ঠা লোড করতে টিসিপি সংযোগ স্থাপনে 9.3 সেকেন্ড ব্যয় করেছে যা 30 টি অন্যান্য ফাইল উল্লেখ করে। এবং এটি এইচটিটিপি অনুরোধগুলি প্রেরণ এবং প্রতিক্রিয়াগুলি পেতে ব্যয় করা সময়ও গণনা করে না।
এইচটিটিপি কিপ-অ্যালাইভ সহ, আমাদের কেবলমাত্র 1 টিসিপি সংযোগ স্থাপন করা দরকার, যা 300 মিমি লাগে।
যদি এইচটিটিপি কিপ-অ্যালাইভটি দুর্দান্ত হয় তবে সার্ভারের পাশাপাশি এটি ব্যবহার করবেন না কেন?
এইচটিটিপি বিপরীত প্রক্সিগুলি (এইচএপ্রক্সির মতো) সাধারণত তারা ব্যাকএন্ড সার্ভারগুলির নিকটে প্রক্স করা হয় তার খুব কাছাকাছি স্থাপন করা হয়। বেশিরভাগ ক্ষেত্রে বিপরীত প্রক্সি এবং এর ব্যাকএন্ড সার্ভার / গুলিগুলির মধ্যে বিলম্বটি 1 এমএসের নীচে থাকবে, সুতরাং একটি ক্লায়েন্টের মধ্যে একটি টিসিপি সংযোগ স্থাপন করা তার চেয়ে অনেক দ্রুত।
যদিও এটি শুধুমাত্র অর্ধেক কারণ। একটি HTTP সার্ভার প্রতিটি ক্লায়েন্ট সংযোগের জন্য একটি নির্দিষ্ট পরিমাণের মেমরি বরাদ্দ করে। কিপ-অ্যালাইভের সাহায্যে এটি সংযোগটি জীবিত রাখবে এবং এক্সটেনশনের মাধ্যমে সার্ভারে ক্যাপ-অ্যালাইভের সময়সীমা শেষ না হওয়া পর্যন্ত এটি একটি নির্দিষ্ট পরিমাণ মেমরি ব্যবহার করবে, যা সার্ভারের কনফিগারেশনের উপর নির্ভর করে 15 বছরের বেশি হতে পারে ।
সুতরাং যদি আমরা কোনও HTTP বিপরীত প্রক্সিটির সার্ভারের দিকে কীপ-অ্যালাইভ ব্যবহারের প্রভাবগুলি বিবেচনা করি, আমরা মেমরির প্রয়োজনীয়তা বাড়িয়ে তুলছি, তবে প্রক্সি এবং সার্ভারের মধ্যে বিলম্বিতা এত কম হওয়ায় আমরা কোনও সত্যিকারের সুবিধা পাই না টিসিপির 3-মুখী হ্যান্ডশেকের জন্য নেওয়া সময়ের মধ্যে হ্রাস, সুতরাং প্রক্সি এবং ওয়েব সার্ভারের মধ্যে এই দৃশ্যে কেবল-অ্যালাইভ অক্ষম রাখাই ভাল।
দাবি অস্বীকার: হ্যাঁ, এই ব্যাখ্যাটি বিবেচনায় নেই যে ব্রাউজারগুলি সাধারণত একটি সার্ভারের সাথে সমান্তরালভাবে একাধিক এইচটিটিপি সংযোগ স্থাপন করে। যাইহোক, ব্রাউজার একই হোস্টের সাথে কতগুলি সমান্তরাল সংযোগ তৈরি করবে তার সীমা রয়েছে এবং সাধারণত এটি এখনও জীবিত রাখার জন্য যথেষ্ট যথেষ্ট।