2010-01-04 13 views
5

मुझे आश्चर्य है कि बहु-थ्रेडेड ऐप में अनुमोदित अभ्यास है या नहीं। क्या मेरे पास प्रति थ्रेड एक डीएओ होना चाहिए या बस एक डीएओ को थ्रेड सुरक्षित सिंगलटन बनाना चाहिए।धागा या थ्रेडसेफ डीएओ प्रति एक डीएओ?

उत्तर

4

यह वास्तव में उस डेटा पर निर्भर करता है जिसका उपयोग आप डेटा एक्सेस के लिए कर रहे हैं। यदि आपके पास बहुत स्केलेबल डेटा एक्सेस है, और थ्रेड स्टैटिक डेटा एक्सेस के कुछ रूपों का उपयोग करके बहुत सारे धागे फायदेमंद हो सकते हैं।

यदि आपके पास स्केलेबल डेटा पहुंच नहीं है, तो आपका प्रदाता प्रति प्रक्रिया एकाधिक थ्रेड का समर्थन नहीं करता है, या आपको उस बिंदु पर स्केलेबिलिटी की आवश्यकता नहीं है, उचित सिंक्रनाइज़ेशन वाले सिंगलटन का उपयोग करना सरल और कार्यान्वित करना आसान है ।

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

+0

मेरा डीएओ वास्तव में दो स्रोतों से कनेक्ट हो रहा है: सरल डीबी और आरपीसी के माध्यम से एक PHP एपीआई। मेरा अनुमान है कि मुझे बाधाओं के मुद्दों से बचने के लिए लगभग 100 धागे के साथ प्रति थ्रेड डीएओ का उपयोग करना चाहिए। क्या आप इस मामले में नहीं होने के किसी भी स्पष्ट कारण देखते हैं? – pondermatic

+0

डीएओ को सिंगलटन बनाने के लिए शायद बेहतर है, और आंतरिक रूप से, बस असीमित रूप से काम करें। इसके बाद यह आवश्यकतानुसार थ्रेडपूल का उपयोग करके स्केल कर सकता है ... यह विशेष रूप से PHP एपीआई के लिए सच है, क्योंकि वेब अनुरोध असीमित रूप से काम करते हैं, और अधिकांश वेब ढांचे के लिए इसका अच्छा समर्थन है ... –

0

उपयोग दृष्टिकोण है कि सबसे अच्छा सूट अपने आवेदन वास्तुकला, जब तक:

1) आपका डेटा का उपयोग वस्तुओं को बनाने के महंगा, जिस स्थिति में आप एक धागा सुरक्षित सिंगलटन की ओर झुक जाना चाहिए।

2) Active Record pattern में आपकी वस्तुएं उत्परिवर्तनीय स्थिति बनाए रखती हैं। (अपरिवर्तनीय डीएओ कॉन्फ़िगरेशन स्थिति, जैसे टाइमआउट थ्रेसहोल्ड, गिनती नहीं है।)

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