কোনও ওয়েব সাইটকে খুব মাপের পরিমাণে স্কেলযোগ্য করার জন্য সবচেয়ে ভাল উপায় কী?


35

যে ওয়েবসাইটগুলিকে অত্যন্ত স্কেলেবল হওয়া দরকার, যেমন ফেসবুকের মতো সামাজিক নেটওয়ার্ক, ওয়েবসাইটটি ডিজাইনের সর্বোত্তম উপায় কী?

  1. আমার কাছে এমন কোনও ওয়েব পরিষেবা থাকা উচিত যা সাইটের প্রয়োজনীয় ডেটা পেতে সাইটের জিজ্ঞাসা করে?

    অথবা

  2. সাইট সরাসরি ডাটাবেস জিজ্ঞাসা করা উচিত? (স্বয়ংক্রিয়ভাবে টেবিলগুলি পূরণ করার জন্য ভাষা কন্সট্রাক্টগুলি বিল্ট ইন ব্যবহার করে করা যেতে পারে ইত্যাদি)।

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


কোন আর্কিটেকচারটি ব্যবহার করবেন তা নিয়েও প্রশ্ন রয়েছে (এমভিসি বা এর মতো)।
ইভান

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

সাধারণত আমি বলব, বিশেষ কিছু মনে নেই ..
ড্যানিয়েল

1
এটি 'মেঘে' তৈরি করুন এবং হাইস্কুলাবিলিটি ডট কম পড়তে অনেক সময় ব্যয় করুন।
ইভান প্লেস

উত্তর:


37

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

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

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

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

    ধরা যাক আপনি কোনও ব্যক্তির ব্লগে সর্বশেষ 10 জার্নাল এন্ট্রিগুলি লোড করতে চান, এবং যাক প্রতিটি জার্নাল এন্ট্রিটির দশটি বৈশিষ্ট্য রয়েছে। ক্লাসিক প্রশস্ত টেবিল বিন্যাসে, প্রতিটি সম্পত্তি একটি টেবিলের একটি কলামের সাথে সম্পর্কিত হতে পারে। তারপরে একজন ব্যবহারকারী তার প্রয়োজনীয় সমস্ত ডেটা একবারে টেবিলটি জিজ্ঞাসা করবেন। ক্যোয়ারিতে 10 টি সারি ফেরত আসবে এবং প্রতিটি সারিতে তাদের প্রয়োজনীয় সমস্ত ডেটা থাকবে (যেমন তারিখের সীমা 10 দ্বারা প্রবেশের মাধ্যমে নির্বাচন করুন * নির্বাচন করুন)। একটি সরু টেবিল বিন্যাসে তবে জিনিসগুলি কিছুটা আলাদা bit এই উদাহরণে আসলে দুটি টেবিল রয়েছে: প্রথম টেবিল (টেবিল এ) সাধারণ মাপদণ্ডগুলি সংরক্ষণ করে যার দ্বারা অনুসন্ধান করা উচিত, যেমন প্রবেশের আইডি, লেখকের আইডি, প্রবেশের তারিখ ইত্যাদি etc. দ্বিতীয় সারণী (টেবিল বি) তারপরে একটি এন্ট্রি সম্পর্কিত সমস্ত সম্পত্তি সংরক্ষণ করে। এই দ্বিতীয় সারণীতে তিনটি কলাম রয়েছে: এন্ট্রি_আইডি, কী এবং মান। টেবিল এ-এর প্রতিটি সারির জন্য টেবিল বি-তে 10 সারি থাকবে (প্রতিটি সম্পত্তির জন্য একটি সারি)। অতএব শেষ দশটি এন্ট্রি আনতে এবং প্রদর্শন করতে আপনার 11 টি প্রশ্নের প্রয়োজন হবে। প্রথম ক্যোয়ারী আপনাকে এন্ট্রি আইডিগুলির তালিকা দেয় এবং তারপরে পরবর্তী দশটি ক্যোয়ারী প্রথম ক্যোয়ারীতে প্রত্যাবর্তিত প্রতিটি প্রবেশকারীর সাথে সম্পর্কিত সম্পত্তিগুলি আনবে।

    "পবিত্র মোলি!" আপনি বলছেন, "পৃথিবীতে কীভাবে এটিকে আরও পরিমাপযোগ্য হতে পারে ?!" এটি সম্পূর্ণ পাল্টা স্বজ্ঞাত অধিকার? প্রথম দৃশ্যে আমাদের কেবল একটি ডাটাবেস ক্যোয়ারী ছিল, তবে দ্বিতীয় "আরও স্কেলেবল" সমাধানে আমাদের কাছে 11 টি ডাটাবেস অনুসন্ধান রয়েছে। ওটা কোন অর্থ প্রকাশ করে না. এই প্রশ্নের উত্তর পুরো বুলেট উপর নির্ভর করে।

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

    আসুন শুরু করা যাক যখন কোনও ব্যবহারকারী প্রথমে কোনও পৃষ্ঠাতে যান এবং কিছুই ক্যাশে নেই। আপনি টেবিল A ​​কে জিজ্ঞাসাবাদ দিয়ে শুরু করেন যা আপনি পৃষ্ঠায় প্রদর্শন করতে চান এমন 10 টি প্রবেশপথের আইডি ফিরিয়ে দেয়। সেই প্রবেশের প্রত্যেকটির জন্য আপনি সেই প্রবেশের সাথে সম্পর্কিত বৈশিষ্ট্যগুলি পুনরুদ্ধার করতে ডাটাবেসটি জিজ্ঞাসা করেন এবং তারপরে এই বৈশিষ্ট্যগুলি ব্যবহার করে এমন কোনও উপাদান তৈরি হয় যা আপনার কোডের সাথে ইন্টারফেস করতে পারে (যেমন কোনও বস্তু)। তারপরে আপনি সেই বস্তুকে (বা that বস্তুর একটি সিরিয়ালযুক্ত ফর্ম) মেমক্যাশে লুকিয়ে রাখবেন।

    দ্বিতীয়বার কেউ একই পৃষ্ঠাটি লোড করার পরে আপনি একইভাবে শুরু করবেন: এন্ট্রি আইডিগুলির তালিকার জন্য টেবিল A ​​কে জিজ্ঞাসা করে আপনি প্রদর্শিত হবে। প্রতিটি প্রবেশের জন্য আপনি প্রথমে মেমক্যাশে যান এবং বলবেন, "ক্যাশে আপনার প্রবেশাধিকার # এক্স আছে?" যদি হ্যাঁ, তবে মেমক্যাচ আপনাকে এন্ট্রি অবজেক্টটি ফিরিয়ে দেবে। যদি তা না হয় তবে এর ডাটাবেসগুলির বৈশিষ্ট্য আনতে, অবজেক্টটি গঠন করুন এবং মেমকেচে রেখে স্ট্যাশ করার জন্য আপনাকে আবার ডাটাবেসটি জিজ্ঞাসা করতে হবে। বেশিরভাগ সময়, দ্বিতীয় বার কেউ একই পৃষ্ঠায় দেখেন কেবল একটি ডাটাবেস ক্যোয়ারী রয়েছে, অন্য সমস্ত ডেটা সরাসরি মেমক্যাশ থেকে টানা হয়।

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

    এই নকশাটি আপনার বন্ধুদের সাথে যুক্ত সমস্ত পোস্টকে একটি স্ট্রিমে বা "প্রাচীর" এর সাথে যুক্ত করার সমস্যাটি সমাধান করেছে, অনেক সহজ।

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

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

"এই দুর্দান্ত পটভূমির জন্য আপনাকে ধন্যবাদ, তবে পবিত্র ক্রুড, এটি আমাকে অনেক অনেক কোড লিখতে হবে।"

অগত্যা। অনেক লাইব্রেরি লেখা হয়েছে যা মেমক্যাসের সাথে ইন্টারফেসিং করা সত্যিই সহজ। তবুও অন্যান্য গ্রন্থাগারগুলি উপরে বর্ণিত পুরো প্রক্রিয়াটি কোড করেছে; তথ্য :: পার্লের অবজেক্টড্রাইভার ঠিক একটি লাইব্রেরি। অন্যান্য ভাষার হিসাবে, আপনার নিজের গবেষণা করতে হবে।

আমি আশা করি আপনি এই উত্তরটি সহায়ক পেয়েছেন। আমি যা চেয়ে বেশি বার পেয়েছি তা হ'ল যে কোনও সিস্টেমের স্কেলাবিলিটিটি কোডের সাথে কম এবং কম সময়ে আসে এবং একটি সাউন্ড ডেটা স্টোরেজ এবং ম্যানেজমেন্ট কৌশল / প্রযুক্তিগত নকশায় আরও বেশি করে আসে।


3
+1 আমি সত্যিই এই বাহকে
পঙ্কজ উপাধ্যায়

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

1
(ধারাবাহিক) সিরিয়ালাইজেশন সর্বদা ওভারহেড যুক্ত করবে তবে কেবলমাত্র API স্তরটিতে সম্ভবত একসাথে চলমান একাধিক ঘটনা থাকতে পারে। যদি আপনি তারের ওপারে স্থানান্তর গতি সম্পর্কে উদ্বিগ্ন হন, JSON এ রূপান্তর করুন এবং এটি সম্ভবত gzip দিয়ে সংকুচিত হবে। সার্ভার থেকে ক্লায়েন্টের কাছে কাজ ঠেকানো হলে সবচেয়ে সহজ পারফরম্যান্স লাভ পাওয়া যায়। জিজ্ঞাসা করা গুরুত্বপূর্ণ প্রশ্নটি হ'ল আপনি কি অ্যাপ্লিকেশনগুলির মধ্যে বা সার্ভার স্তরে অনুরোধগুলি বিতরণ করবেন? নকল করা সহজ কোনটি?
ইভান প্লেস

1
@ ইভানপ্লাইস - পরিষেবাগুলি ব্যবহার করার সময় পুনঃব্যবহারযোগ্যতা এবং পরিষেবা যুক্তি প্রয়োগকরণের পরিবর্তন সম্পর্কে দুর্দান্ত পয়েন্ট। এছাড়াও- ক্যাশে অবকাঠামো সরাসরি ডেটাবেস কলের পরিবর্তে পরিষেবাগুলি ব্যবহার করতে পারে।
আশীষ গুপ্ত

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

13

যে ওয়েবসাইটগুলিতে ফেসবুকের মতো সামাজিক নেটওয়ার্কগুলির মতো খুব বেশি স্কেলেবল হওয়া দরকার, ওয়েবসাইট ডিজাইনের সর্বোত্তম উপায় কোনটি?

পরিমাপ।

আমি ভাবব ...

খারাপ নীতি।

প্রকৃত পরিমাপ প্রয়োজন।


পরিমাণগত মেট্রিক্স এফটিডাব্লু।
ভাগ্যাস

1
ঠিক আছে ... তাহলে পরিমাপের পরে কি?
পেসিয়ার

9

স্ক্যাল্যাব্লিলিটি নির্দিষ্ট প্রয়োগের কৌশলগুলির একটি কাজ নয় বরং আপনার অ্যাপ্লিকেশন আর্কিটেকচারটি ডিজাইনের পরিবর্তে যাতে ডেটা অ্যাক্সেস স্তরটি বিশাল রিফ্যাক্টরিং এবং পুনর্লিখন ছাড়াই বিকশিত হতে পারে।

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

আপনার অ্যাপ্লিকেশন ব্যবসায়ের যুক্তি এবং ডেটা অ্যাক্সেস লজিকের মধ্যে আপনার অগত্যা কোনও নেটওয়ার্ক চ্যানেলের প্রয়োজন নেই; লজিকাল অপারেশন প্রতি এক পদ্ধতি সহ একটি পদ্ধতি কল ইন্ডিয়ারেশন শুরু করার জন্য ঠিক করবে।

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

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

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


4

একটি সাধারণ ওয়েবসাইট বিকাশ করুন এবং এটিকে কিছু ট্র্যাফিক স্তরে পৌঁছে দিন। লাইনের সাথে আপনি কীভাবে স্কেলযোগ্য ওয়েবসাইট তৈরি করবেন তা শিখবেন।

আপনি সমস্যার মুখোমুখি না হওয়া অবধি সমাধানের কথা ভাবতে পারবেন না

আপনি একবার সাইটটি ঘূর্ণায়মান এবং স্কেলিংয়ের প্রয়োজনীয়তার মুখোমুখি হয়ে গেলে আমার উপর বিশ্বাস করুন, আপনি অবশ্যই এটি কীভাবে করবেন তা জানতে পারবেন। :-)


শুভ উক্তি !!!!!!!!!!
আমিরহসিন

2

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

আপনার অ্যাপ্লিকেশনের জন্য স্তরগুলির নির্দিষ্ট সংখ্যা এবং উপযুক্ত আর্কিটেকচারের যদিও এটি বা অন্য কোনও মডেলের সাথে মেলে না।

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

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


2

ডাটাবেসের সাথে সংযোগ স্থাপনের যে কোনও অতিরিক্ত পদক্ষেপ কেবল একটি ওভারহেড। উদাহরণস্বরূপ, UI -> Business Facade -> Business -> Data Access -> Databaseএবং এর মধ্যে UI -> Database, দ্বিতীয় পদ্ধতির দ্রুত হয়। তবে, আপনি যত বেশি পদক্ষেপ অপসারণ করবেন আপনার সিস্টেম তত কম রক্ষণাবেক্ষণযোগ্য হবে এবং তত বেশি সদৃশ উপস্থিত হবে। প্রোফাইলে, হোম পেজ, ফিয়েন্ডস ম্যানেজমেন্ট পৃষ্ঠা ইত্যাদিতে বন্ধুদের তালিকা পুনরুদ্ধার করার জন্য প্রয়োজনীয় কোডটি লিখার কল্পনা করুন

সুতরাং, আপনার এখানে উচ্চতর কর্মক্ষমতা (অবশ্যই উচ্চতর স্কেলাবিলিটিটি সরাসরি প্রভাবিত করে) এবং আরও ভাল রক্ষণাবেক্ষণের মধ্যে ভারসাম্য তৈরি করা উচিত ।

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

  1. সঠিক প্ল্যাটফর্মটি বেছে নেওয়া (পিএইচপি তার স্ক্রিপ্টিং প্রকৃতির কারণে দ্রুততর, তবে এএসপি.নেটকে এটি প্রক্রিয়া করতে এবং কিছু পরিবেশন করার জন্য ফ্লাইতে অনুরোধ করা ফাইলটি সংকলন করা দরকার Also এছাড়াও নোড.জেএস এর কলব্যাকের কারণে - আরও স্কেলযোগ্য বলে দাবি করা হচ্ছে - ভিত্তিক স্থাপত্য )
  2. ওয়েব পরিষেবা মডেল (এসওএ) এর পরিবর্তে RESTful আর্কিটেকচার ব্যবহার করা
  3. এক্সএমএলের পরিবর্তে ডেটা স্থানান্তরের জন্য জেএসএন ব্যবহার করা (যার ফলে কম বাইটে স্থানান্তরিত হতে পারে)
  4. ইয়াহুর পারফরম্যান্স নির্দেশিকা অনুসরণ করা
  5. নেটওয়ার্ক এবং হার্ডওয়্যার বিষয় যেমন লোড ব্যালেন্সিং , বা টিয়ার আর্কিটেকচার

2
আপনি বলতে পারবেন না যে পিএইচপি দ্রুত। যথাযথভাবে লিখিত এএসপি.এনইটি অ্যাপ্লিকেশনগুলি পিএইচপি কে অনেক ক্ষেত্রে ছাপিয়ে যেতে পারে। naspinski.net/post/AspNet-vs-php--speed-compistance.aspx
অ্যান্ড্রু লুইস

+1 প্রকৃতপক্ষে, আপনার 'সরল' সমাধানটি হ'ল, ইউআই -> ডেটা অ্যাক্সেস -> ডাটাবেস। 2 আরইএসটি 'সহজ' কারণ এটি ইতিমধ্যে বেশিরভাগ ব্রাউজারে অন্তর্নির্মিত। কমান্ড-প্রতিক্রিয়া API হুইলটি পুনরায় তৈরি করার দরকার নেই। 3 কেবল জেএসএনই ছোট নয় তবে এটি সিরিয়ালাইজ-ডিজিজায়ালাইজ করার জন্য আরও কয়েকটি পদক্ষেপের প্রয়োজন কারণ আপনার এইচটিএমএল সত্ত্বাগুলি পরীক্ষা করার প্রয়োজন নেই। ভাল জিনিস.
ইভান প্লেস

1

স্কেল করার দুটি প্রাথমিক উপায় রয়েছে, উপরে এবং বাইরে।

স্কেলিং আপ একটি মেশিনকে আরও শক্তিশালী করে প্রতিস্থাপন করছে। স্কেল আউট করার অর্থ বিদ্যমান মেশিনগুলি যে কাজ করছে তা করতে অন্য মেশিন যুক্ত করা।

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

সাধারণত এর অর্থ অ্যাপ্লিকেশনকে স্তরগুলিতে বিভক্ত করা যাতে প্রতিটি স্তরে আরও বেশি সার্ভার প্লাগ করতে এবং খেলতে পারে।

আমি বিকল্প 1 করবো, সরাসরি এটি করার পরিবর্তে কোনও পরিষেবা করব। আপনি এখন পর্যন্ত কেবলমাত্র একতরফা অ্যাপ্লিকেশনটি স্কেল করতে পারেন।


0

কোনও প্রযুক্তি প্ল্যাটফর্ম ব্যবহার করে আপনার সাইটটি বিকাশ করুন যা মেঘের জন্য সম্পূর্ণ সংহত সমর্থন রয়েছে।

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