मैंने PHP में बड़े पैमाने पर गेम सर्वर विकास के कुछ वर्षों का काम किया है। एक भार संतुलन क्लस्टर में एक सर्वर के आने वाले अनुरोधों को प्रतिनिधि करता है। बेहतर प्रदर्शन के नाम पर, हमने apc_store
और apc_fetch
का उपयोग करके, उस क्लस्टर में प्रत्येक इंस्टेंस पर सीधे सभी डेटा डेटा (अनिवार्य रूप से गेम वर्ल्ड की मॉडल ऑब्जेक्ट्स) को कैश करना शुरू किया।PHP अपाचे के लिए एक अच्छा फ्लास्क/पायथन/डब्लूएसजीआई एनालॉग क्या है apc_store/apc_fetch जैसे मेमोरी स्टोर्स साझा किया गया है?
कई कारणों से लिए, हम अब अजगर में एक ऐसी ही खेल ढांचा विकसित करने के लिए, बोतल microframework का उपयोग कर शुरू कर रहे हैं। पहली नज़र में, इस इंस्टेंस की मेमोरी स्टोर एक ऐसा टुकड़ा है जो सीधे पायथन/फ्लास्क में अनुवाद नहीं करता है। वर्तमान में हम प्रत्येक उदाहरण पर स्थानीय रूप से मेमकैच चल रहे हैं (हमारे मुख्य मेमकैड क्लस्टर से काफी बड़े मॉडल ऑब्जेक्ट्स को स्ट्रीम करने से बचने के लिए।)
इसके बजाय हम इसका क्या उपयोग कर सकते हैं?
मैं अल्पकालिक कुंजी/मान के लिए मेरा सच्चा डेटा संग्रह के लिए केंद्रीकृत Membase, और केंद्रीकृत Memcache का उपयोग करें। जैसा कि मैंने अपनी पोस्ट में उल्लेख किया है, बिंदु "हमारे मुख्य मेमकैड क्लस्टर से तारों के काफी बड़े मॉडल ऑब्जेक्ट्स स्ट्रीमिंग से बचने के लिए है"। पिछले गेम में स्थानीय बदलाव में इस बदलाव को मुझे एक बड़ा प्रदर्शन बढ़ावा दिया। इस तरह के गेम के लिए संपूर्ण स्थिर डेटा सेट 50 एमबी से कम है, इसलिए स्टोरेज/लोड कोई मुद्दा नहीं है।आखिरकार, आपको इसे फिर भी स्थानीय स्मृति में खींचना होगा; सभी बेहतर अगर इसे वहां से संग्रहीत करने के लिए संग्रहीत किया जाता है :) –
मूल आधार यह है कि केंद्रीकृत होना चाहिए डेटा को केंद्रीकृत किया जाना चाहिए, और डेटा को ऐप सर्वर पर धक्का दिया जा सकता है (यानी स्टेटिक/गेम वर्ल्ड डेटा जो स्टेटलेस और नोड्स में समान है) ऐप सर्वर पर धक्का दिया जाना चाहिए। –
क्षमा करें, मैं इस जवाब को स्वीकार नहीं कर सकता क्योंकि यह मेरी खोज से दो महत्वपूर्ण बिंदुओं को अनदेखा करता है: [1] मैं केवल स्थिर डेटा के बारे में बात कर रहा हूं, और [2] मैं पहले से ही केंद्रीकृत मेमकैड का उपयोग करता हूं। –