কেন ইউনিকর্নকে এনগিনেক্সের সাথে একসাথে মোতায়েন করা দরকার?


138

আমি Nginx এবং ইউনিকর্ন মধ্যে পার্থক্য জানতে চাই। আমি যতদূর বুঝতে পারি, এনগিনেক্স একটি ওয়েব সার্ভার এবং ইউনিকর্ন রুবি এইচটিটিপি সার্ভার।

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


3
ভাল প্রশ্ন ! আমি মনে করি এই প্রশ্নের শিরোনাম হওয়া উচিত, "কেন আমাদের
এনজিনেক্স

1
@ রিসার্টেজ আমি একটি উত্তর যুক্ত করেছি যা ইউনিকর্নের সামনে কেন এনগিনেক্সের মতো একটি বিপরীত প্রক্সি প্রয়োজন তা আরও বিশদভাবে ব্যাখ্যা করে। আপনি এটি যাচাই করতে চাইতে পারেন;)
এগ্রিস

উত্তর:


62

Nginx
এখানে চিত্র বর্ণনা লিখুন
ইউনিকর্ন
এখানে চিত্র বর্ণনা লিখুন
পড়ুন GitHub উপর Unicorn আরও তথ্যের জন্য।


1
প্রতীক, আমার প্রশ্নটি কী ইউনিকর্ন সার্ভার স্থিতিশীল এবং গতিশীল প্রক্রিয়া উভয়ই পরিবেশন করতে পারে, তবে আমরা কেন এনজিঙ্কস বা অ্যাপাচি ব্যবহার করছি যাঁরা কেবলমাত্র স্থির বিষয়বস্তুগুলি প্রক্রিয়া করতে পারেন, যাত্রী বা ইউনিকর্ন বা মোড_এফপি এর সাথে একত্রে?
লোগানাথন

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

4
এছাড়াও, আপনার যদি প্রচুর পরিমাণে ডেটা আসছে + চলছে, এনজিনেক্স এটি ক্লায়েন্ট থেকে (এবং চামচ ফিডে) বাফার করবে। এনগিনেক্স ছাড়াই আপনার আপলোড / ডাউনলোডের সময় আপনার ইউনিকর্নগুলির একটি বেঁধে দেওয়া হবে।
সাহসীনিউয়ের কার্পেন্সি

10
কেন nginx মোটেই প্রয়োজন তা প্রশ্নের উত্তর দেয় না। এটি কোনও মন্তব্য ছাড়াই এটি উভয় ছবিতে রাখে। নিকের উত্তরটি আরও ভাল।
জন্মে

1
আমি @ জন্মের সাথে একমত উদাহরণস্বরূপ এটি আমার কাছে কিছুই বোঝায় না।
বালিনকিংঅফ মোরিয়া পুনরায় ইনস্টল করুন সিএমএস

94

Nginx হ'ল একটি খাঁটি ওয়েব সার্ভার যা স্থির সামগ্রীর পরিবেশন এবং / অথবা অনুরোধটি পরিচালনা করতে অন্য সকেটে অনুরোধটি পুনর্নির্দেশের উদ্দেশ্যে তৈরি।

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

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


73

এই উত্তরটি অন্যগুলির পরিপূরক এবং কেন ইউনিকর্ন এর সামনে nginx প্রয়োজন তা ব্যাখ্যা করে

টিএল; ডিআর ইউনিকর্ন সাধারণত এনজিনেক্সের মতো বিপরীত প্রক্সি সহ একসাথে স্থাপনের কারণ হ'ল এর নির্মাতারা ইচ্ছাকৃতভাবে এটি নকশা করেছিলেন, সরলতার জন্য ট্রেড অফ করে।

প্রথমত, বিপরীত প্রক্সি ছাড়াই আপনাকে ইউনিকর্ন স্থাপন করা থেকে বিরত রাখার কিছুই নেই । তবে, এটি খুব ভাল ধারণা হবে না; আসুন দেখি কেন।

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

ভাগ্যক্রমে, এই জাতীয় একটি বিপরীত প্রক্সি ইতিমধ্যে বিদ্যমান এবং এটি nginx বলা হয় ।

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

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

পরিবর্তে এর নির্মাতারা যুদ্ধ-পরীক্ষিত এবং খুব ভাল নকশাকৃত বিদ্যমান সফ্টওয়্যারটি উত্তোলন করার সিদ্ধান্ত নিয়েছে এবং অন্যান্য সফ্টওয়্যার দ্বারা ইতিমধ্যে সমস্যার সমাধানে সময় এবং শক্তি অপচয় করা এড়াতে।

তবে আসুন প্রযুক্তিগত হয়ে আপনার প্রশ্নের উত্তর দিন:

কেন ইউনিকর্নকে এনজিনেক্সের সাথে একসাথে মোতায়েন করা দরকার?

এখানে কয়েকটি মূল কারণ রয়েছে:

ইউনিকর্ন ক্লায়েন্টদের জন্য I / O ব্লকিং ব্যবহার করে

বিপরীত প্রক্সি নির্ভর করার অর্থ ইউনিকর্নকে অ-ব্লকিং I / O ব্যবহার করার দরকার নেই । পরিবর্তে এটি I / O- কে ব্লক করা ব্যবহার করতে পারে যা প্রোগ্রামারটির পক্ষে মেনে চলা সহজ এবং সহজ।

ডিজাইনের নথিতে যেমন বলা হয়েছে:

[I / O- কে ব্লক করা] ব্যবহারের ফলে রুবি ইন্টারপ্রেটার এবং আরও কম সিস্টেমের মধ্যে একটি সহজ কোড পাথ অনুসরণ করা যায়।

তবে এর কিছু পরিণতিও রয়েছে:

মূল পয়েন্ট # 1: ইউনিকর্ন ধীর ক্লায়েন্টগুলির সাথে দক্ষ নয়

(সরলতার জন্য, আমরা 1 ইউনিকর্ন কর্মীর সাথে একটি সেটআপ ধরে নিই)

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

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

ভাগ্যক্রমে Nginx এই ভূমিকার জন্য দুর্দান্ত প্রার্থী, যেহেতু এটি কয়েক হাজার শত সহবর্তী ক্লায়েন্টকে দক্ষতার সাথে পরিচালনা করার জন্য ডিজাইন করা হয়েছে।

এটি অত্যন্ত গুরুত্বপূর্ণ যে বিপরীত প্রক্সিটি ইউনিকর্নের মতো একই স্থানীয় নেটওয়ার্কের মধ্যে হওয়া উচিত (সাধারণত একই শারীরিক মেশিনে ডাব্লু / ইউনিকর্ন একটি ইউনিক্স ডোমেন সকেটের মাধ্যমে যোগাযোগ করে) যাতে নেটওয়ার্কের বিলম্বটিকে সর্বনিম্ন রাখা হয় to

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

মূল পয়েন্ট # 2: ইউনিকর্ন এইচটিটিপি / 1.1 টি লাইভ রাখার পক্ষে সমর্থন করে না

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

তাই এইচটিটিপি চালিয়ে যাওয়ার জন্য, কী ধারণা করুন: একটি বিপরীত প্রক্সি ব্যবহৃত হয়।

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

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

পয়েন্ট # 3: ইউনিকর্ন স্ট্যাটিক ফাইলগুলি পরিবেশন করতে খুব ভাল নয়

আবার, স্ট্যাটিক ফাইলগুলি পরিবেশন করা এমন জিনিস যা ইউনিকর্ন করতে পারে তবে দক্ষতার জন্য ডিজাইন করা হয়নি।

অন্যদিকে, এনজিনেক্সের মতো বিপরীত প্রক্সিগুলি যদিও এতে আরও বেশি ভাল (যেমন sendfile(2)& & ক্যাশিং)।

অধিক

অন্যান্য পয়েন্ট, যা রূপরেখা হয় দর্শনের দলিল (দেখুন "বিপরীত প্রক্সী মাধ্যমে উন্নত পারফরমেন্স" )।

এছাড়াও কিছু দেখতে nginx এর মৌলিক বৈশিষ্ট্য

আমরা দেখতে পাই যে বিদ্যমান সফ্টওয়্যারটি (যেমন। এনজিনেক্স) উপকারের মাধ্যমে এবং "একটি কাজ করে ভালভাবে পরিচালনা করুন" এর ইউনিক্স দর্শনের অনুসরণ করে, ইউনিকর্ন র্যাক অ্যাপ্লিকেশনগুলিতে দক্ষতা বজায় রাখার জন্য একটি সহজ নকশা এবং বাস্তবায়ন অনুসরণ করতে সক্ষম হয় (উদাঃ। আপনার রেল অ্যাপ্লিকেশন)।

আরও তথ্যের জন্য ইউনিকর্ন এর পড়ুন দর্শন এবং নকশা নথি যা আরো বিস্তারিত ব্যাখ্যা ইউনিকর্ন এর নকশা পিছনে পছন্দ এবং কেন nginx একটি ভাল ইউনিকর্ন জন্য রিভার্স প্রক্সি বিবেচনা করা হয়।


তবে কেন কেবল এনগিনেক্স ব্যবহার করবেন না বলে আমি মনে করি তিনি জিজ্ঞাসা করেছিলেন, না কেন 'ইউনিকর্নের nginx প্রয়োজন হয় না'। ইউনিকর্ন এমন কী সরবরাহ করে যা এনগিনেক্স উদাহরণস্বরূপ দেয় না?
21

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

2
এটি খাঁটি সোনার। ধন্যবাদ!
ম্যাগনে

14

এনগিনেক্স ইউনিকর্ন সার্ভারে ধীর ক্লায়েন্টদের পরিবেশন করতে ব্যবহার করা যেতে পারে কারণ ধীর ক্লায়েন্টদের ইউনিকর্ন সার্ভার বন্ধ হয়ে যায়। Nginx কোনও ধরণের প্রক্সি হিসাবে ক্লায়েন্টদের ধীরে ধীরে সমস্ত অনুরোধ এবং প্রতিক্রিয়াগুলিকে বাফার করে।

Http://unicorn.bogomips.org/ দেখুন

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