নোড.জেজে পটভূমি প্রক্রিয়া


99

নোডজেএস অ্যাপ্লিকেশনটিতে পটভূমি প্রক্রিয়াগুলি হ্যান্ডেল করার জন্য একটি ভাল অ্যাপ্রোচ কী?

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

আরআর-তে আমি বিলম্ব জব এর মতো কিছু দিয়ে এটি করতাম। এই এপিআই এর নোড সমতুল্য কি?


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

ধন্যবাদ, এটি পুনরায় জমা।
ওলে স্পারম্যান

4
নীচে ভাল পরামর্শ। এর রয়েছে ChildProcessএপিআই যা সহায়ক হতে পারে। nodejs.org/api/child_process.html
lispHK01

stackoverflow.com/users/69349/ole-spaarmann - আপনি শেষ পর্যন্ত কীটি বেছে নিয়েছেন তা জানতে আগ্রহী এবং আপনি নোডজেএসের সাথে কীভাবে আপনার সিদ্ধান্তকে সংহত করেছিলেন তার একটি খুব সাধারণ উদাহরণ যদি আপনি দিতে পারেন - ধন্যবাদ!
এম্লিস সিট্রাস

@MLissCetrus আমি এলিক্সির শিখতে এবং
নোডজেএস

উত্তর:


114

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

যদি আপনি এমন কোনও কিছু খুঁজছেন যা একক কর্মী প্রক্রিয়া হিসাবে চলতে পারে তবে সম্ভবত কোয়ের দিকে নজর দিন । এটি একটি RESTful API সার্ভার হিসাবে চলতে পারে এবং এমনকি এটির জন্য বেশ কয়েকটি ফ্রন্ট-এন্ড অ্যাপ্লিকেশন লেখা রয়েছে।

আপনি যদি রুবির রেসকের সাথে পরিচিত হন তবে নোড- রেসকিউ নামে একটি নোড বাস্তবায়ন রয়েছে

ষাঁড়, কিউ এবং নোড-রিকুস সবই রেডিসের সমর্থনযুক্ত , যা নোড.জেস কর্মীদের সারির মধ্যে সর্বব্যাপী। সমস্ত 3 টি আরআর এর ডিলেডজব যা করতে পারে তা করতে সক্ষম হবে, এটি আপনি যে নির্দিষ্ট বৈশিষ্ট্যগুলি চান তা এবং আপনার API পছন্দসমূহের বিষয়টি preferences


4
এটি একটি খুব ভাল উত্তর, তবে চাইল্ডপ্রসেস এপিআই এবং ওয়েবকর্মী-থ্রেড মডিউলটির উল্লেখ করা এটি দুর্দান্ত করে তুলতে পারে। ;)
সুসুব

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

বুল কি পিএম 2 ক্লাস্টারিংয়ের সাথে কাজ করে? বা তাদের ডকুমেন্টেশনে যেমন দেখানো হয়েছে তেমন আপনাকে নিজের হাতে গুচ্ছ তৈরি করতে হবে?
শায়ান নাহরওয়ার

33

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

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

দুটি প্রক্রিয়া সহ-হোস্ট করা প্রয়োজন হয় না, এগুলি আপনি পৃথক ভিএম, ডকার পাত্রে রাখতে পারেন, আপনি যা কিছু ব্যবহার করুন। এটি আপনাকে অনেক ঝামেলা ছাড়াই স্কেল আউট করতে দেয়।


4
সত্যিই একমাত্র উত্তর যা খরগোশের কথা বলেছে? এটি এন্টারপ্রাইজ উত্তর। +1
অগি গার্ডনার

@ ওবেরি আপনার উত্তর নোডেজ কর্মী থ্রেড বিবেচনায় নিয়ে পরিবর্তন কি?
ব্রেন্ডন

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

একই প্রক্রিয়ায় গৃহকর্ম এবং লেনদেনের কোডের সংমিশ্রণের সাথে প্রধান উদ্বেগগুলি হ'ল মেমরি এবং I / O। যদি গৃহকর্মী কোডটি কোনও হগতে পরিণত হয় তবে এটি ট্র্যাফিককে প্রভাবিত করতে পারে। কর্মী প্যাকেজটি ব্যবহার করা কোনও ব্রোকারের প্রয়োজনীয়তা সরিয়ে ফেলবে তবে আপনাকে এই ঝুঁকির মধ্যে ফেলবে।
wबेীর

11

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

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


3

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

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

কর্মী ডিমনাইজিংয়ের জন্য আমি পিএম 2 ব্যবহার করার পরামর্শ দিই । এটি বহুল ব্যবহৃত এবং সক্রিয়ভাবে পরিচালিত। এটি প্রচুর সমস্যার সমাধান করে (যেমন, মোতায়েন, নিরীক্ষণ, ক্লাস্টারিং) সুতরাং এটি নিশ্চিত করুন যে এটি আপনার পক্ষে ওভারকিল হবে না।


1

আমি মৌমাছি-সারিতে চেষ্টা করেছি & ষাঁড়টি এবং শেষ পর্যন্ত ষাঁড়টি বেছে । আমি প্রথমে মৌমাছি-ক্যু বি / সি বেছে নিয়েছিলাম এটি বেশ সহজ, তাদের উদাহরণগুলি বোঝা সহজ, যখন ষাঁড়ের উদাহরণগুলি কিছুটা জটিল। মৌমাছির উইকি মৌমাছির ক্যু এর উত্সও আমার সাথে অনুরণিত হয়। তবে মৌমাছি নিয়ে সমস্যাটি <1> তাদের সমস্যার সমাধানের সময়টি বেশ ধীর, তাদের সর্বশেষ আপডেট 10 মাস আগে। <2> আমি কাজ বিরতি / বাতিল করার সহজ উপায় খুঁজে পাচ্ছি না।

অন্যদিকে, বুল প্রায়ই তাদের কোডগুলি আপডেট করে, সমস্যার প্রতিক্রিয়া জানায়। নোড.জেএস জব সারির মূল্যায়ন বলেছে যে ষাঁড়টির দুর্বলতা "স্লো ইস্যু রেজুলেশন সময়", তবে আমার অভিজ্ঞতাটি বিপরীত!

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


-7

আমি আপনাকে অ্যাপ তৈরির জন্য একটি উপযুক্ত নোড.জেএস ফ্রেমওয়ার্ক ব্যবহার করার পরামর্শ দিচ্ছি।

আমি মনে করি যে সবচেয়ে শক্তিশালী এবং সহজেই ব্যবহারযোগ্য হ'ল সেলস.জেএস

এটি একটি এমভিসি কাঠামো যাতে আপনার যদি আরওআর-এ বিকাশ ঘটে তবে আপনি এটি খুব সহজ খুঁজে পাবেন!

আপনি যদি এটি ব্যবহার করেন তবে এটি ইতিমধ্যে একটি শক্তিশালী (জাভাস্ক্রিপ্টের পদে) জব ম্যানেজারের কাছে উপস্থিত রয়েছে।

new sails.cronJobs('0 01 01 * * 0', function () {
   sails.log.warn("START ListJob");
}, null, true, "Europe/Dublin");

আপনার যদি আরও তথ্যের প্রয়োজন হয় তবে আমার সাথে যোগাযোগ করতে দ্বিধা করবেন না!


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

ঠিক আছে আপনি বুল বা ওয়েবকর্মী থ্রেড চেষ্টা করতে পারেন ... শুভ কামনা নোড.জেএস :)
জিয়ো ম্যাক সা

দেখে মনে হচ্ছে সেলস.জেগুলি বেশ বড় এবং ক্রোনজবসের চেয়ে অনেক বেশি কাজ করে। আমি নোড-ক্রোন ( github.com/kelektiv/node-cron ) পেয়েছি যা আমি বাজি ধরেছিলাম যা সেল.জেএস ব্যবহার করে।
pbatey
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.