2013-08-11 14 views
13

मैं एक उल्का ऐप के लिए सर्वर-साइड तर्क लिख रहा हूं जिसे क्लाइंट से अनुरोधों के जवाब में मेमोरी स्थिति में अद्यतन करना है। इस एप्लिकेशन को मजबूत समवर्ती गारंटी की आवश्यकता है - विशेष रूप से, मैं यह सुनिश्चित करना चाहता हूं कि एक समय में केवल एक अपडेट निष्पादित किया गया हो।उल्का समरूपता मॉडल क्या है?

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

क्या यह मामला है? मीटियर के समवर्ती मॉडल पर मुझे और जानकारी कहां मिल सकती है?

+0

मुझे लगता है कि आपको अपने आप में मेमोरी स्टोरेज के लिए ताले लगाएंगे या आप मोंगो परमाणु संचालन का उपयोग कर सकते हैं। – Denis

+0

यदि यह मदद करता है, तो फाइबर लाइब्रेरी के लिए प्रलेखन [यहां] [1] [1]: https://github.com/laverdet/node-fibers –

+0

@Denis यदि मैं इन-मेमोरी लॉक को कार्यान्वित कर सकता हूं क्योंकि गैर-आईओ, गैर-उपज वाले ऑपरेशन परमाणु हैं, फिर मुझे इस एप्लिकेशन के लिए भी उनकी आवश्यकता नहीं है। किसी भी मामले में, मैं जानना चाहता हूं कि मौसम में जानकारी के लिए मौसम में कितनी सहमति है। यह सामान कहीं स्पष्ट रूप से दस्तावेज किया जाना चाहिए; यह नहीं है मैं शायद उल्का स्रोत कोड के माध्यम से जा रहा हूँ। – disatisfieddinosaur

उत्तर

11

ठीक है, मैं उल्का स्रोत के माध्यम से देखा और यहाँ कैसे चीजें काम है:

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

2) सभी कॉल Meteor.call, Meteor.setInterval, और किसी संग्रह संग्रह को फाइबर में लपेटा जाता है। इसका मतलब है कि ये सभी कॉल संदर्भ उत्पन्न करते हैं।

3) इसके अतिरिक्त, फाइबर/वायदा मॉड्यूल का कोई भी उपयोग उपज करता है।

इस संरचना का ऊपरी भाग यह है कि यदि आप परमाणु परिचालन लिखना चाहते हैं, तो केवल उस कोड के ब्लॉक में उल्का फ्रेमवर्क द्वारा प्रदान की गई वस्तुओं तक पहुंचने से बचें, जिसे आप परमाणु बनाना चाहते हैं। यदि इस ब्लॉक को वास्तव में एक डीबी एक्सेस की आवश्यकता है (कहें), तो आप परेशानी के बिना इन-मेमोरी लॉक को कार्यान्वित कर सकते हैं, लेकिन मेरे आवेदन के लिए, यह ज्ञान पर्याप्त है। मेरे कोर अपडेट फंक्शन को मोंगो से पहले से पढ़ने वाले सभी दस्तावेजों के साथ बुलाया जाना चाहिए।

1

उल्का डॉक्स से:

उल्का में, आपके सर्वर कोड अनुरोध के अनुसार किसी एकल थ्रेड, अतुल्यकालिक कॉलबैक शैली नोड के विशिष्ट में नहीं में चलता है। हमें रैखिक निष्पादन मॉडल एक उल्का एप्लिकेशन में सामान्य सर्वर कोड के लिए बेहतर फिट मिलता है।

http://docs.meteor.com/#structuringyourapp

किसी को भी इस बात का प्रदर्शन निहितार्थ पता है?

संबंधित मुद्दे