जीएई एक बुनियादी ढांचा है जो लाखों सक्रिय उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले ऐप की मेजबानी करने में सक्षम है?


9

मैं नीचे सूचीबद्ध जीएई के प्रतिबंधों के साथ जानना चाहूंगा, क्या जीएई पर उस ऐप की मेजबानी करके एक महान सामाजिक ऐप (जैसे फेसबुक) बनाना संभव है?

दूसरे शब्दों में, GAE एक बुनियादी ढांचा है जो 600 मिलियन सक्रिय उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले ऐप की मेजबानी करने में सक्षम है?

कुछ मंचों / ब्लॉगों से प्रतिबंधों को मैंने हटा दिया है (कृपया कुछ भी छूटने पर सूची में जोड़ने के लिए स्वतंत्र महसूस करें):

  1. HTTP रिक्वेस्ट / रिस्पांस

    • अधिकतम अनुरोध का आकार: 32 एमबी
    • अधिकतम प्रतिक्रिया आकार: 32 एमबी
    • सभी अनुरोधों को 30 सेकंड के भीतर जवाब देना होगा अन्यथा जीएई डेडलाइन को आगे बढ़ा देगा। अपवाद
    • प्रत्येक क्रोन नौकरी को 10 मिनट के भीतर निष्पादित किया जाना चाहिए
    • क्रॉन जॉब्स नक्शे को कम करने का उपयोग नहीं कर सकते हैं
    • प्रत्येक GET या POST किसी अन्य साइट पर 5 सेकंड के बाद छोड़ दिया जाता है। आप इसे अधिकतम 10 सेकंड तक प्रतीक्षा करने के लिए कॉन्फ़िगर कर सकते हैं। (ट्विटर और फेसबुक के साथ कई बार काम करने के लिए मध्यवर्ती सर्वर आवश्यक होगा)
    • एफ़टीपी (केवल एचटीटीपी और एचटीटीपीएस) के माध्यम से ग्राहक जीएई से कनेक्ट नहीं हो सकता है।
    • कस्टम डोमेन के लिए कोई https नहीं। केवल अपने-app-id.appspot.com डोमेन के लिए।
    • यदि आपको उपयोगकर्ताओं की आमद मिलती है, तो आपको "ओवर कोटा" त्रुटि मिलती है
  2. डेटाबेस

    • वास्तविक सर्वर की तुलना में स्थानीय विकास में डेटाबेस व्यवहार समान नहीं है।
    • GQL। और कुछ नहीं।
    • कोई भी क्वेरी 1000 से अधिक रिकॉर्ड प्राप्त नहीं कर सकती है (यदि आप अपने ग्राहक को एक क्लिक-गो-ऑफलाइन-अब बटन देना चाहते हैं तो गंभीरता से बेकार है)
    • यदि आपको ऑपरेशन करने के लिए रिकॉर्ड की एक बड़ी मात्रा में रैखिक पहुंच की आवश्यकता है, तो आप भाग्य से बाहर हैं (Google के सिस्टम बड़े पैमाने पर क्लस्टर हैं)
    • Memcache मान अधिकतम आकार 1 MB है।
    • साधारण पाठ खोज नहीं कर सकते
    • आप 2 तालिकाओं में शामिल नहीं हो सकते।
    • धीमे (आपको विरासत के उपयोग से तालिकाओं को अलग करने के तरीके के बारे में पढ़ना होगा ताकि आप तालिका में खोज कर सकें, कुंजी प्राप्त कर सकें और फिर अपने माता-पिता को प्राप्त कर सकें ताकि डिसेरलाइज़ेशन प्रदर्शन से बचा जा सके)
    • "बहुत अधिक अनुक्रमित" रनटाइम अपवाद
    • एक अनुक्रमणिका में एक इंडेक्स में अधिकतम 5000 संपत्ति मान हो सकते हैं
    • प्रपत्र के प्रमुख नाम * (दो अंडरस्कोर के साथ शुरू और अंत) आरक्षित हैं, और आवेदन द्वारा उपयोग नहीं किया जाना चाहिए।
    • प्रमुख नाम 500 बाइट्स तक सीमित हैं (UTF-8 एनकोडेड, मुझे लगता है)
  3. भाषा: हिन्दी

    • अजगर या जावा या गो (या ऐसी भाषाएँ जो JVM जैसे Groovy, Scala और अन्य का उपयोग करती हैं)
  4. सेवा के मामले

    • कोई स्थिर आईपी (थ्रॉटलिंग और कोटा की समस्या नहीं हो सकती है जो तृतीय पक्ष API कह रही है)
    • प्रत्येक एप्लिकेशन 3000 फ़ाइलों तक सीमित है
    • वेब ऐप चलाने वाले ओएस या हार्डवेयर का कोई नियंत्रण नहीं

यह कर सकते हैं? कौन जाने। इसे होना चाहिए? नहीं।
सिजयोज़

1
@ceejayoz pls समझाएं कि ऐसा क्यों नहीं करना चाहिए? क्या यह स्केलेबल होना चाहिए?

3
क्यों लोगों को

मुझे लगता है कि अमेज़ॅन ईसी 2 इस तरह के अनुप्रयोगों के लिए अधिक उपयुक्त होगा।
महमूद होसम

आप के बारे में हम्म 3, आप अनुवाद के बिना अन्य भाषाओं का उपयोग कर सकते हैं, मेरा मतलब है कि
जीजेएम

जवाबों:


28

मुझे लगता है कि इस प्रश्न के बारे में मुझे क्या गुस्सा आता है कि आपने इसे रद्द कर दिया है और इसे एक निश्चित संख्या में इकट्ठा करने के प्रयास में "तथ्यों" के साथ लोड किया है।

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

इसके अलावा, मैं यह देखने में विफल रहता हूं कि आपके द्वारा सूचीबद्ध किसी भी प्रतिबंध से आप इस तरह के ऐप को विकसित करने से कैसे रोक पाएंगे।

  1. HTTP रिक्वेस्ट / रिस्पांस

    • अधिकतम अनुरोध का आकार: 10 एमबी - गलत, 32 एमबी तक बढ़ा दिया गया।
    • अधिकतम प्रतिक्रिया आकार: 10 एमबी - गलत, 32 एमबी तक बढ़ा दिया गया।

    - यदि आप एक सामाजिक ऐप विकसित कर रहे हैं, जिसे अक्सर 10MB से बड़े पृष्ठों को वितरित करने की आवश्यकता होती है, तो आप शायद इसे गलत कर रहे हैं। इसके अलावा, यदि आपको 32MB से अधिक की सामग्री वितरित करने की आवश्यकता है, तो आप 2GB तक की फ़ाइलों के लिए ब्लॉस्टस्टोर का उपयोग कर सकते हैं।

    • आप फ़ाइल सिस्टम तक नहीं पहुँच सकते। (फाइलसिस्टम पर अपलोड को सहेजने के बारे में भूल जाएं) - गलत। आप स्थानीय फ़ाइल सिस्टम से पढ़ सकते हैं और ब्लॉबस्टोर पर फ़ाइल को अपलोड और पढ़ / लिख सकते हैं।

    - ऐसा कोई तरीका नहीं है कि फेसबुक, ट्विटर या टम्बलर केवल उपयोगकर्ता अपलोड ले रहे हैं और उन्हें एक फ़ोल्डर में कॉपी कर रहे हैं। कोई समस्या नहीं।

    • सभी अनुरोधों को 10 मिनट के भीतर जवाब देना होगा अन्यथा जीएई डेडलाइन को बढ़ा देगा। अपवाद - गलत। यह वास्तव में 30 सेकंड है।

    - यदि आपको उपयोगकर्ता के अनुरोध पर परिणाम देने के लिए 30 सेकंड से अधिक समय की आवश्यकता है, तो आप शायद गलत कर रहे हैं।

    • प्रत्येक क्रोन नौकरी को 30 सेकंड के भीतर निष्पादित किया जाना चाहिए - गलत, यह 10 मिनट है।

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

    • क्रॉन जॉब्स मैप कम करने का उपयोग नहीं कर सकते हैं - कभी भी मैप कम नहीं किया जाता है, लेकिन मुझे लगता है कि इसके लिए प्रशस्ति पत्र की आवश्यकता है।

    • प्रत्येक GET या POST किसी अन्य साइट पर 5 सेकंड के बाद छोड़ दिया जाता है। आप इसे अधिकतम 10 सेकंड तक प्रतीक्षा करने के लिए कॉन्फ़िगर कर सकते हैं। (मध्यवर्ती सर्वर कई बार ट्विटर और फेसबुक के साथ काम करना आवश्यक होगा) - ट्रू।

    - अगर किसी बाहरी एपीआई के लिए उपयोगकर्ता का सामना करने का अनुरोध 10 सेकंड से अधिक समय ले रहा है, तो उपयोगकर्ता को किसी भी तरह से फिर से बताने के लिए यह एक अच्छा विचार है। यदि यह उपयोगकर्ता-सामना का अनुरोध नहीं है, तो आप स्वचालित रूप से कार्य का पुनः प्रयास कर सकते हैं जब तक कि एपीआई जवाब नहीं देता।

    • एफ़टीपी (केवल एचटीटीपी और एचटीटीपीएस) के माध्यम से ग्राहक जीएई से कनेक्ट नहीं हो सकता है। - सच

    -- यह एक मुद्दा क्यों है? क्या आपको लगता है कि कोई भी बड़े पैमाने पर कंपनी एफ़टीपी के माध्यम से परिवर्तन दर्शाती है?

    • कस्टम डोमेन के लिए कोई https नहीं। केवल अपने-app-id.appspot.com डोमेन के लिए। - सच।

    - यह हालांकि रोडमैप पर है।

    • यदि आपको उपयोगकर्ताओं की आमद मिलती है, तो आपको "ओवर कोटा" त्रुटि मिलती है - आधा सच।

    - यदि आप अपने ऐप को ठीक से बजट करते हैं तो आपको कभी ओवर कोटे की त्रुटि नहीं दिखाई देगी। रॉयल वेडिंग साइट को ऐप इंजन पर होस्ट किया गया और प्रति सेकंड 32,000 अनुरोध प्राप्त हुए। कोटा त्रुटियों पर नहीं। इसके अलावा, कभी भी ट्विटर पर फेल व्हेल या टंबलर की ओवर क्षमता त्रुटि देखी गई? यह अनिवार्य रूप से उनकी ओवर कोटा त्रुटि है।

  2. डेटाबेस

    • वास्तविक सर्वर की तुलना में स्थानीय विकास में डेटाबेस व्यवहार समान नहीं है। - असत्य

    - अगर आपका मतलब है कि आपके लैपटॉप पर डेटास्टोर चलाना ऐप इंजन के क्लस्टर पर चलने की तुलना में धीमा है, तो सच है, अन्यथा बिल्कुल भी सच नहीं है।

    • GQL। और कुछ नहीं। - असत्य

    - अधिकांश डेवलपर्स डेटास्टोर को क्वेरी करने के लिए db फ़िल्टर का उपयोग करते हैं। इसके अलावा, आप समान रूप से कह सकते हैं कि MySQL "SQL। कुछ और नहीं" की अनुमति देता है।

    • कोई भी क्वेरी 1000 से अधिक रिकॉर्ड प्राप्त नहीं कर सकती है (यदि आप अपने क्लाइंट को एक क्लिक-गो-ऑफ़लाइन-अब बटन करना चाहते हैं तो गंभीरता से बेकार है) - गलत।

    - 1000 रिकॉर्ड की सीमा को बहुत पहले उठा लिया गया था। इसके अलावा, मुझे फ़ेसबुक, ट्विटर या टम्बलर पर कोई भी उपयोगकर्ता-संबंधी पृष्ठ दिखाएं, जिसे रेंडर करने के लिए 1000 से अधिक रिकॉर्ड की आवश्यकता हो।

    • यदि आपको ऑपरेशन करने के लिए रिकॉर्ड की एक बड़ी मात्रा में रैखिक पहुंच की आवश्यकता है, तो आप भाग्य से बाहर हैं (Google के सिस्टम बड़े पैमाने पर क्लस्टर हैं)

    - मुझे भी यकीन नहीं है कि आप यहाँ क्या कर रहे हैं। अधिकांश लोग Google के विशाल क्लस्टर की गति को सिस्टम का एक बड़ा लाभ मानते हैं।

    • Memcache मान अधिकतम आकार 10 MB है। - वास्तव में यह 1 एमबी प्रति मेमेक प्रविष्टि है, जो हर दूसरे मेकचे के कार्यान्वयन के समान है।

    • सरल पाठ खोज नहीं कर सकते - सच है।

    - यह एक विशेषता है जो डेक पर है। अधिकांश बड़ी साइटें अपने स्वयं के पाठ खोज अनुक्रमण नहीं करती हैं।

    • आप 2 तालिकाओं में शामिल नहीं हो सकते। - सच।

    - ऐप इंजन डेवलपर्स को अपनी सोच को एक बड़े पैमाने पर मल्टी-जॉइन एसक्यूएल क्वेरी से कई छोटे-छोटे व्यक्तिगत प्रश्नों को समायोजित करने की आवश्यकता होती है, या डेटा को असामान्य कर देते हैं ताकि जॉइन की आवश्यकता न हो।

    • धीमा (आपको विरासत के उपयोग से तालिकाओं को अलग करने के तरीके के बारे में पढ़ना होगा ताकि आप तालिका में खोज कर सकें, कुंजी प्राप्त कर सकें और फिर अपने माता-पिता को डिसेरिएलाइजेशन प्रदर्शन से बचने के लिए प्राप्त कर सकें) - ???

    - अनुवाद / उद्धरण की आवश्यकता।

    • "बहुत अधिक सूचकांक" रनटाइम अपवाद - सही

    - किसी एक ऐप में इंडेक्स की संख्या की सीमा होती है। मैंने केवल अकादमिक अनुसंधान अनुप्रयोगों को देखा है, हालांकि इसे मारा।

    • एक इंडेक्स में इंडेक्स में 5000 से अधिक संपत्ति मान हो सकते हैं - ट्रू

    - इसलिए अगर किसी के पास 5000 से अधिक दोस्त हैं तो उन्हें मित्र समूह में दो संस्थाओं की आवश्यकता होगी।

    • प्रपत्र के मुख्य नाम __*__(दो अंडरस्कोर के साथ शुरू और अंत) आरक्षित हैं, और आवेदन द्वारा उपयोग नहीं किया जाना चाहिए। - सच

    -- लेकिन तो क्या?

    • मुख्य नाम 500 बाइट्स तक सीमित हैं (UTF-8 एनकोडेड, मुझे लगता है) - ट्रू

    - फिर, तो क्या? उपन्यासों के भंडारण के लिए मुख्य नाम नहीं हैं, वे विशिष्ट रूप से एक इकाई की पहचान करने के लिए हैं।

  3. भाषा: हिन्दी

    • अजगर या जावा या गो (कुछ और भी इन भाषाओं में अनुवादित करना होगा) - आधा सच

    - दरअसल आप JVM पर चलने वाली किसी भी भाषा को भी चला सकते हैं, जिसमें PHP और JRuby शामिल हैं। सुनिश्चित नहीं है कि यह एक मुद्दा क्यों है, पाइथन और जावा दो शक्तिशाली भाषाएं हैं जिनमें बहुत सारे उपलब्ध टूल, ट्यूटोरियल और अनुभवी प्रोग्रामर हैं।

  4. सेवा के मामले

    • कोई स्थिर आईपी (थ्रॉटलिंग और कोटा समस्याओं को तीसरे पक्ष के एपीआई कॉल करना) - आधा सच

    - अधिकांश थर्ड पार्टी एपीआई ऐप इंजन के बारे में जानते हैं और / या Google के साथ संबंध रखते हैं। कुछ बार ट्विटर ने गलती से ऐप इंजन को अवरुद्ध कर दिया है और यह कुछ घंटों में ठीक हो जाता है।

    • प्रत्येक एप्लिकेशन 3000 फ़ाइलों तक सीमित है - आधा सच

    - यदि आपको वास्तव में अपने वेब एप्लिकेशन के लिए 3000 से अधिक कोड फ़ाइलों की आवश्यकता है तो आप ज़िप आयात का उपयोग कर सकते हैं (इसके अलावा, आप इसे गलत कर रहे हैं)।

    • वेब ऐप चलाने वाले OS या हार्डवेयर का कोई नियंत्रण नहीं - सच

    - ऐप इंजन सेवा के रूप में एक प्लेटफ़ॉर्म है । ओएस या हार्डवेयर की सेवा के बारे में चिंता करने की ज़रूरत नहीं है कि लोग क्या कर रहे हैं। यह ऐप इंजन का मुख्य लाभ है, न कि सीमा।


पूरी तरह से अपने सभी बिंदुओं से सहमत हैं। +1
लुका माटिस

इनपुट के लिए thx मैंने प्रश्न को तदनुसार संपादित किया है। btw अगर 1000 की रिकॉर्ड सीमा हटा ली जाए तो नया रिकॉर्ड क्या है?
पचेरियर

2.1 को छोड़कर सभी बिंदुओं से सहमत; स्थानीय डीबी सुंदर बेकार है।
systempuntoout

14

नहीं, 600 मिलियन सक्रिय उपयोगकर्ताओं वाले ऐप के लिए ऐप इंजन उपयुक्त नहीं है।

यथार्थवादी रूप से, इस बड़े रन को अपने स्वयं के डेटाचेनर्स से बाहर उच्च अनुकूलित बुनियादी ढांचे पर चलाया जाता है। संभवतः Google के साथ इस तरह के ऐप को होस्ट करना संभव है, लेकिन आप समाधान डिजाइन करने के लिए उनकी बिक्री टीम के साथ सीधे काम करेंगे; आपके द्वारा ऊपर दिए गए सैंडबॉक्स प्रतिबंध लंबे समय के बाद अप्रासंगिक हो जाएंगे।

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


3
"ऐप्स इस बड़े" - आप बहुवचन का उपयोग करते हैं, क्या एक से अधिक है? ;-)
स्टीव जेसोप

मुझे यह अनुमान नहीं है कि मेरा ऐप फेसबुक के रूप में लोकप्रिय होने जा रहा है। वास्तव में यह धारणा, या इसकी कमी, मेरे प्रश्न की कोई प्रासंगिकता नहीं है।

1
यदि आपके पास 600 मिलियन उपयोगकर्ता हैं, तो आप एक Google अधिग्रहण का लक्ष्य होंगे , इसलिए चाहे आप AppEngine पर चल सकें, काफी हद तक अप्रासंगिक है।
डीन हार्डिंग

1
@ डीन हार्डिंग चाहे आप AppEngine पर चला सकते हैं, भले ही आप एक Google अधिग्रहण का लक्ष्य हैं, फिर भी यह काफी हद तक ठीक है
Pacerier

3

मुझे लगता है कि इसमें अक्सर पूछे जाने वाले प्रश्न मुख्य क्षेत्रों में आते हैं।

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

इस तरह, एक ही नोड पर छोटे अनुरोधों को "बड़े" अनुरोधों के एक समूह के बारे में चिंता किए बिना आपके क्लस्टर में नोड्स के बीच अनुरोध आसानी से वितरित किए जा सकते हैं। यह रखरखाव, प्रदर्शन और विश्वसनीयता के मामले में आपके बुनियादी ढांचे को सरल रखता है।

ताकि चीजें शामिल हों:

  • अधिकतम अनुरोध / प्रतिक्रिया का आकार
  • प्रतिक्रिया समय का अनुरोध करें
  • बाहरी अनुरोध प्रतिक्रिया समय सीमा
  • Memcache अधिकतम आकार (वास्तव में, memcache के डिफ़ॉल्ट निर्माण में, अधिकतम मूल्य आकार 1 MB है, इसलिए जाहिर है कि Google एक कस्टम बाइनरी चला रहा है जो 10-सीमा को बढ़ाता है)
  • अधिकतम डेटाबेस प्रतिक्रिया आकार (यानी 1,000 पंक्ति सीमा)
  • आदि

दूसरी श्रेणी वे चीजें हैं जो केवल आउट-ऑफ-डेट हैं:

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


0

यदि आप एक विचार के साथ आते हैं जो 100 को भी आकर्षित करेगा, तो अकेले 600, मिलियन उपयोगकर्ताओं को आपके पास किसी भी बुनियादी ढांचे को विकसित करने और चलाने के लिए कोई उद्यम पूंजी और कोई भी तकनीकी टीम होगी। और आप उस मामले में भी अपनी बौद्धिक संपदा की रक्षा करना चाहते हैं, जो जीएई प्रदान नहीं करेगा क्योंकि Google हर GAE ऐप के स्रोत कोड तक पहुँच प्राप्त करना चाहता है (आप वास्तव में वैसे भी पायथन और जावा कोड की सुरक्षा नहीं कर सकते हैं)।
जीएई उन उद्यमों के लिए उपयुक्त है जो अपनी आईटी अवसंरचना लागत से छुटकारा चाहते हैं और उन्हें कोड आईपी की सुरक्षा की आवश्यकता नहीं है, लेकिन केवल उनके डेटा की।


आपके पास किसी भी बुनियादी ढाँचे को विकसित करने और चलाने के लिए कोई भी उद्यम पूंजी और कोई भी तकनीकी टीम होगी, इसका मतलब यह नहीं है
Pacerier
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.