logologo
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
logologo
क्लस्टर मोड
अवलोकन
तैयारी
Kubernetes डिप्लॉयमेंट
O&M प्रक्रिया
सर्विस स्प्लिटिंग
विकास संदर्भ
Previous PageO&M प्रक्रिया
Next Pageविकास संदर्भ
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#सेवाओं का विभाजन v1.9.0+

#परिचय

आमतौर पर, एक NocoBase एप्लिकेशन की सभी सेवाएँ एक ही Node.js इंस्टेंस में चलती हैं। जैसे-जैसे व्यवसाय के साथ एप्लिकेशन की कार्यक्षमता जटिल होती जाती है, कुछ समय लेने वाली सेवाएँ समग्र प्रदर्शन को प्रभावित कर सकती हैं।

एप्लिकेशन के प्रदर्शन को बेहतर बनाने के लिए, NocoBase क्लस्टर मोड में एप्लिकेशन की सेवाओं को अलग-अलग नोड्स पर चलाने का समर्थन करता है। यह किसी एक सेवा की प्रदर्शन समस्याओं को पूरे एप्लिकेशन को प्रभावित करने से रोकता है, जिससे उपयोगकर्ता के अनुरोधों का ठीक से जवाब देने में कोई बाधा नहीं आती।

दूसरी ओर, यह कुछ विशिष्ट सेवाओं के लिए लक्षित हॉरिजॉन्टल स्केलिंग की भी अनुमति देता है, जिससे क्लस्टर के संसाधन उपयोग को बेहतर बनाया जा सकता है।

क्लस्टर में NocoBase को डिप्लॉय करते समय, विभिन्न सेवाओं को अलग-अलग नोड्स पर विभाजित करके डिप्लॉय किया जा सकता है। नीचे दिया गया आरेख विभाजन संरचना को दर्शाता है:

20250803214857

#कौन सी सेवाएँ विभाजित की जा सकती हैं

#अतुल्यकालिक वर्कफ़्लो

सर्विस KEY: workflow:process

अतुल्यकालिक मोड में वर्कफ़्लो, ट्रिगर होने के बाद, निष्पादन के लिए कतार में लग जाएंगे। इन वर्कफ़्लो को बैकग्राउंड टास्क माना जा सकता है, और आमतौर पर उपयोगकर्ताओं को परिणाम वापस आने का इंतजार करने की आवश्यकता नहीं होती है। विशेष रूप से जटिल और समय लेने वाली प्रक्रियाओं के लिए, जब ट्रिगर की संख्या भी अधिक हो, तो उन्हें स्वतंत्र नोड्स पर चलाने के लिए विभाजित करने की सलाह दी जाती है।

#अन्य उपयोगकर्ता-स्तर के अतुल्यकालिक कार्य

सर्विस KEY: async-task:process

इसमें अतुल्यकालिक आयात (import) और निर्यात (export) जैसे उपयोगकर्ता कार्यों द्वारा बनाए गए कार्य शामिल हैं। बड़े डेटा वॉल्यूम या उच्च समवर्ती (concurrency) के मामलों में, उन्हें स्वतंत्र नोड्स पर चलाने के लिए विभाजित करने की सलाह दी जाती है।

#सेवाओं को कैसे विभाजित करें

विभिन्न सेवाओं को अलग-अलग नोड्स में विभाजित करने के लिए WORKER_MODE एनवायरनमेंट वेरिएबल को कॉन्फ़िगर करना होगा। इस एनवायरनमेंट वेरिएबल को निम्नलिखित नियमों के अनुसार कॉन्फ़िगर किया जा सकता है:

  • WORKER_MODE=<खाली>: जब कॉन्फ़िगर नहीं किया गया हो, या खाली कॉन्फ़िगर किया गया हो, तो वर्कर मोड वर्तमान सिंगल-इंस्टेंस मोड के समान होता है, सभी अनुरोधों को स्वीकार करता है और सभी कार्यों को भी संसाधित करता है। यह उन एप्लिकेशनों के साथ संगत है जो पहले कॉन्फ़िगर नहीं किए गए थे।
  • WORKER_MODE=!: वर्कर मोड केवल अनुरोधों को संसाधित करता है और कोई कार्य संसाधित नहीं करता है।
  • WORKER_MODE=workflow:process,async-task:process: एक या अधिक सर्विस आइडेंटिफ़ायर (अंग्रेजी अल्पविराम से अलग किए गए) के साथ कॉन्फ़िगर किया गया हो, तो वर्कर मोड केवल उन आइडेंटिफ़ायर के कार्यों को संसाधित करता है और अनुरोधों को संसाधित नहीं करता है।
  • WORKER_MODE=*: वर्कर मोड सभी बैकग्राउंड कार्यों को संसाधित करता है, चाहे वे किसी भी मॉड्यूल के हों, लेकिन अनुरोधों को संसाधित नहीं करता है।
  • WORKER_MODE=!,workflow:process: वर्कर मोड अनुरोधों को संसाधित करता है और साथ ही किसी विशिष्ट आइडेंटिफ़ायर के कार्यों को भी संसाधित करता है।
  • WORKER_MODE=-: वर्कर मोड किसी भी अनुरोध या कार्य को संसाधित नहीं करता है (यह मोड वर्कर प्रोसेस के भीतर आवश्यक है)।

उदाहरण के लिए, K8S वातावरण में, विभाजन कार्यक्षमता वाले समान नोड्स को एक ही एनवायरनमेंट वेरिएबल कॉन्फ़िगरेशन का उपयोग करके कॉन्फ़िगर किया जा सकता है, जिससे किसी विशिष्ट प्रकार की सेवा के लिए हॉरिजॉन्टल स्केलिंग करना आसान हो जाता है।

#कॉन्फ़िगरेशन उदाहरण

#कई नोड्स द्वारा अलग-अलग प्रोसेसिंग

मान लीजिए तीन नोड्स हैं, जो node1, node2 और node3 हैं, उन्हें इस प्रकार कॉन्फ़िगर किया जा सकता है:

  • node1: केवल उपयोगकर्ता UI अनुरोधों को संसाधित करता है, WORKER_MODE=! कॉन्फ़िगर करें।
  • node2: केवल वर्कफ़्लो कार्यों को संसाधित करता है, WORKER_MODE=workflow:process कॉन्फ़िगर करें।
  • node3: केवल अतुल्यकालिक कार्यों को संसाधित करता है, WORKER_MODE=async-task:process कॉन्फ़िगर करें।

#कई नोड्स द्वारा मिश्रित प्रोसेसिंग

मान लीजिए चार नोड्स हैं, जो node1, node2, node3 और node4 हैं, उन्हें इस प्रकार कॉन्फ़िगर किया जा सकता है:

  • node1 और node2: सभी सामान्य अनुरोधों को संसाधित करते हैं, WORKER_MODE=! कॉन्फ़िगर करें, और एक लोड बैलेंसर द्वारा स्वचालित रूप से अनुरोधों को इन दोनों नोड्स पर वितरित किया जाता है।
  • node3 और node4: अन्य सभी बैकग्राउंड कार्यों को संसाधित करते हैं, WORKER_MODE=* कॉन्फ़िगर करें।

#डेवलपर संदर्भ

बिजनेस प्लगइन विकसित करते समय, आप आवश्यकतानुसार अधिक संसाधन खपत वाली सेवाओं को विभाजित कर सकते हैं। इसे निम्नलिखित तरीकों से प्राप्त किया जा सकता है:

  1. एक नया सर्विस आइडेंटिफ़ायर परिभाषित करें, उदाहरण के लिए, my-plugin:process, जो एनवायरनमेंट वेरिएबल कॉन्फ़िगरेशन के लिए उपयोग किया जाएगा, और इसके लिए दस्तावेज़ प्रदान करें।
  2. प्लगइन के सर्वर-साइड बिजनेस फ़ंक्शन में, app.serving() इंटरफ़ेस का उपयोग करके वातावरण की जाँच करें, यह तय करने के लिए कि क्या एनवायरनमेंट वेरिएबल वर्तमान नोड द्वारा किसी विशिष्ट सेवा के प्रावधान को नियंत्रित करता है।
const MY_PLUGIN_SERVICE_KEY = 'my-plugin:process';
// प्लगइन के सर्वर-साइड कोड में
if (this.app.serving(MY_PLUGIN_SERVICE_KEY)) {
  // इस सेवा के लिए बिजनेस लॉजिक को संसाधित करें
} else {
  // इस सेवा के लिए बिजनेस लॉजिक को संसाधित न करें
}