Nginx ক্যাশে একাধিক সার্ভারের মধ্যে ভাগ করা হয়েছে


9

অনুরোধগুলি পরিচালনা করতে আমাদের পিএনএফপি-এফপিএম সহ ফাস্টগিজি ব্যবহার করে এনগিনেক্সের সাথে 8 টি আরএসটি-ইশ এপিআই সার্ভার রয়েছে। আমরা বর্তমানে এনগিনেক্সের ফাস্টসিজিআই ক্যাশে ব্যবহার করছি (এর মতো নির্দেশাবলী fastcgi_cache_path)। এর অর্থ হ'ল API প্রতিক্রিয়াগুলি ক্যাশে করা হয়েছে তবে প্রতিটি সার্ভারের জন্য আলাদা ক্যাশে রয়েছে।

আটটি সার্ভারের মধ্যে কি ক্যাশে স্টোরেজ ভাগ করার ভাল উপায় আছে?

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


আপনি সামনের স্তর (এনগিনেক্স) না করে ব্যাকএন্ড লেয়ারে (পিএইচপি অ্যাপ্লিকেশন) কেন ক্যাচিং করবেন না?
ম্যাক্স কোচুবেই

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

1
ঠিক আছে, আপনি ডেডিকেটেড মেমক্যাচড ওড রেডিসে ক্যাশেড সামগ্রী সংরক্ষণ করতে তৃতীয় পক্ষের এনগিনেক্স এসআরসি ক্যাচ মডিউলটি ব্যবহার করার চেষ্টা করতে পারেন than
ম্যাক্স কোচুবি

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

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

উত্তর:


1

এই সমস্যাটি সম্পর্কে https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-1/ এ বরং একটি নতুন ব্লগ পোস্ট বলে মনে হচ্ছে । আপনি যদি আরও দুটি এনজিনেক্স ক্যাশে সার্ভার চালান তবে এই প্রথম উদাহরণটি কার্যকর হতে পারে।

বিশেষ করে পোস্টের দ্বিতীয় ভাগটি আমার বর্তমান ব্যবহারের ক্ষেত্রে আকর্ষণীয় মনে হচ্ছে, যেখানে আমি আমার ক্যাশে পরিবর্তিত আইটেমগুলিকে স্বয়ংক্রিয়ভাবে পুনরায় ক্রল করতে চাই।

এটি এনজিআইএনএক্সের ওপেন সোর্স সংস্করণেও কাজ করা উচিত। মূলত এটি প্রতিটি এনজিআইএনএক্স সার্ভারের মাধ্যমে ক্যাসকেড করা অনুরোধের প্রক্সিং করে কাজ করে (এনগিনেক্স-ক্যাশে ১-> এনজিঞ্জ-ক্যাশে ২-> অরিজিন-সার্ভার) প্রতিটি সার্ভার প্রাসঙ্গিক উজানের থেকে ক্যাশে করে এবং যদি ইচ্ছা হয় তবে এইচএ ক্লাস্টারও তৈরি করা সম্ভব। https://www.nginx.com/blog/shared-caches-nginx-plus-cache-clusters-part-2/

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