यदि आप इस तरह के भारी प्रवाह के लिए एक ऐप आर्किटेक्ट कर रहे हैं, तो आपको इसके न्यूनतम घटकों को पूर्ण न्यूनतम तक सीमित करने की आवश्यकता होगी।
उस तरह की तीव्रता के लिए एक पूर्ण रेल स्टैक का उपयोग करना वास्तव में व्यावहारिक नहीं है, न ही आवश्यक है। एक बहुत ही पतली रैक परत बनाने के लिए यह बेहतर होगा जो सीधे डीबी कॉल करके वोटिंग को संभालता है, एक ओआरएम छोड़ देता है, मूल रूप से INSERT
कथन के आसपास एक रैपर होता है। यह सिनात्रा और सेक्वेल कुछ है, जो एक कुशल क्वेरी जेनरेटर के रूप में कार्य करता है, इससे मदद मिल सकती है।
आपको अपने डेटाबेस को ठीक से ट्यून करना भी सुनिश्चित करना चाहिए, इसके साथ ही यह सुनिश्चित करने के लिए कई भार परीक्षण चलाएं कि यह उच्च लोडिंग के लिए स्वस्थ मार्जिन के साथ अपेक्षित प्रदर्शन करता है।
एक मिनट में 10,000 डीबी कॉल करना एक बड़ा सौदा नहीं है, प्रत्येक कॉल ठीक से ट्यून किए गए ढेर पर मिलीसेकंड का केवल एक अंश लेगा। Memcached उच्च प्रदर्शन की पेशकश कर सकते हैं विशेष रूप से अगर परिणाम स्थायी होने का इरादा नहीं है। मेमकैचड में परमाणु वृद्धि ऑपरेटर होता है जो कि वही है जो आप आसानी से मतदान करते समय ढूंढ रहे हैं। रेडिस भी एक बहुत ही सक्षम अस्थायी स्टोर है।
एक और विचार डीबी को पूरी तरह से स्क्रैप करना और एक सतत सर्वर प्रक्रिया लिखना है जो एक साधारण JSON- आधारित प्रोटोकॉल बोलता है। इवेंटमाचिन इन चीजों को एक साथ फेंकने के लिए बहुत बढ़िया है यदि आप रुबी के प्रति प्रतिबद्ध हैं, जैसा कि नोडजेएस है, यदि आप जावास्क्रिप्ट में एक विशेष टैली सर्वर बनाने के इच्छुक हैं।
एक मिनट में 10,000 ऑपरेशंस एक पूर्ण डीबी स्टैक के ऊपरी हिस्से के बिना एक विशेष सर्वर प्रक्रियाओं का उपयोग करके मामूली हार्डवेयर पर भी आसानी से प्राप्त किया जा सकता है।
आपको यह सुनिश्चित करना होगा कि आपका दायरा बहुत अच्छी तरह परिभाषित है ताकि आप इसे तैनात करने से पहले अपने कार्यान्वयन का परीक्षण और भारी दुरुपयोग कर सकें।
आप है कि क्या वर्णन कर रहे हैं, बहुत कोर पर के बाद से, कुछ एक हैश देखने के बराबर, आवश्यक कोड बस है:
contest = @contest[contest_id]
unless (contest[:voted][ip])
contest[:voted][ip] = true
contest[:votes][entry_id] += 1
end
इस कई लाख गुना चल रहा है एक दूसरे में पूरी तरह से व्यावहारिक है, तो एकमात्र ओवरहेड इसके चारों ओर एक JSON परत लपेट जाएगा।
नोएसक्यूएल डीबीएस और 10k लिखते हैं एक मिनट प्रति सेकंड लगभग 165 लिखते हैं। यह काफी नहीं है। – Viktor
मैंने इसके बारे में सोचा नहीं था, आप सबसे विश्वसनीय क्या सलाह देते हैं? No12QL के लिए –
MongoDB। यदि आप MySQL का उपयोग एक MyISAM तालिका का उपयोग कर रहे हैं। – Dex