2013-01-25 57 views
5

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

लेकिन मुझे इसे लागू करने के सबसे स्केलेबल/भविष्य-सबूत तरीके को निर्धारित करने में समस्या हो रही है (बिना जुड़ने के)।

मैं फ्लास्क/heroku/sqlalchemy/postgres का उपयोग कर रहा हूँ। मैं ओपन-रेडिस एडन का उपयोग करके सोच रहा हूं और इंस्टाग्राम जैसे कुछ कर रहा हूं: प्रत्येक उपयोगकर्ता की एक रेडिस सूची होती है और जब भी 'अनुवर्ती' पोस्ट होती है, तो यह प्रत्येक अनुयायी सूची की शुरुआत में पोस्ट जोड़ती है और इसके कुल आकार को ट्रिम करती है।

मुझे सिर्फ यह जानने के लिए लालसा के बारे में पर्याप्त जानकारी नहीं है कि क्या प्रत्येक उपयोगकर्ता स्ट्रीम के लिए इस पर भरोसा करना सुरक्षित है या नहीं। ओपन-रेडिस के साथ, वे दृढ़ता के बारे में कुछ भी नहीं बताते हैं, इसलिए मुझे नहीं पता कि यह आजकल एक आम बात है कि यह अभी माना जाता है।

यदि रेडिस 100% विश्वसनीय/सुरक्षित नहीं है, तो मैं पोस्टग्रेस/हेस्टोर के साथ ऐसा कैसे कर सकता हूं (कोई भी शामिल नहीं है) पर कोई विचार है।

+0

यह होगारेडिस दृढ़ता के बारे में इस लेख को पढ़ने के लिए अच्छा http://oldblog.antirez.com/post/redis-persistence-demystified.html –

उत्तर

1

मुझे लगता है कि यह पर्याप्त सुरक्षित है। रेडिस persistence के दो रूपों का समर्थन करता है। आप एओएफ दृढ़ता को कॉन्फ़िगर कर सकते हैं ताकि आप किसी दुर्घटना की स्थिति में कोई भी डेटा न खोएं।

रेडिस अपेक्षाकृत सरल सॉफ्टवेयर है और आसानी से क्रैश नहीं होता है। मेरा अचूक सबूत एक ऐप है जहां सब कुछ रेडिस में संग्रहीत है। वर्तमान में यह लगभग 220k उपयोगकर्ताओं और संबंधित जानकारी के लिए रेडिस में लगभग 340 के चाबियाँ संग्रहीत करता है। रेडिस कभी दुर्घटनाग्रस्त नहीं हुआ है या कोई समस्या है। ऐप लगभग 6 महीने तक चल रहा है और सर्वर को दोबारा शुरू करते समय मैंने केवल रेडिस को फिर से शुरू कर दिया है।

1

आप जो कर रहे हैं उसका नाम "लिखने पर प्रशंसक" कहा जाता है और यहां और अन्य दृष्टिकोणों पर कुछ अच्छी चर्चाएं हैं: http://www.quora.com/Activity-Streams/What-are-the-scaling-issues-to-keep-in-mind-while-developing-a-social-network-feed

वास्तव में रेडिस के साथ विशेष रूप से ऐसा करने पर एक पोस्ट है: http://nosql.mypopescu.com/post/4588381681/activity-feeds-with-redis

एक चीज जिसे मैं लोगों को सावधानी बरतता हूं, समय-समय पर स्केलिंग है - जब तक आपको आगे जाने की आवश्यकता नहीं होती है तब तक क्या करें। रेडिस का आपका उपयोग काफी उच्च पैमाने तक काफी सुरक्षित होना चाहिए।

यह एक पुरानी पोस्ट है, इसलिए आप शायद इस परियोजना पर पूरा पूरा कर रहे हैं, लेकिन किसी भी अन्य व्यक्ति के लिए जो इस पथ को आगे बढ़ा रहा है, यह आपके लिए गतिविधि धाराओं को संभालने वाली सेवा का उपयोग करने के लिए समझ में आ सकता है। पूर्ण प्रकटीकरण: मेरी कंपनी की सेवा, कोलाबिनिट (http://www.collabinate.com) स्पष्ट रूप से बिल्डिंग गतिविधि स्ट्रीम को बहुत सरल, प्रदर्शन करने योग्य और स्केलेबल बनाने के लिए डिज़ाइन की गई है।

3

हम 2 सबसे बड़ा ऑनलाइन फ़ैशन समुदाय के लिए एक समाधान का निर्माण किया और खुले हमारे दृष्टिकोण sourced: https://github.com/tschellenbach/Feedly यह वर्तमान में सबसे बड़ा खुला स्रोत इस समस्या को हल करने के उद्देश्य से पुस्तकालय है। आप रेडिस और कैसंद्रा दोनों को भंडारण बैकएंड के रूप में उपयोग कर सकते हैं।

हम बिना किसी परेशानी के एक वर्ष से अधिक समय तक रेडिस पर भाग गए हैं। अगर सही ढंग से सेटअप किया जाता है तो यह बेहद स्थिर रहता है और डेटा खोने की संभावना नहीं है।

फीडली बनाने वाली एक ही टीम एक होस्टेड एपीआई भी प्रदान करती है, जो आपके लिए जटिलता को नियंत्रित करती है। getstream.io पर एक नज़र डालें Python, PHP, नोड और रूबी के लिए क्लाइंट लाइब्रेरीज़ हैं।

इसके अलावा इस उच्च scalability पोस्ट पर एक नज़र थे हम शामिल डिजाइन फैसले के कुछ समझाने: http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

This tutorial आप सेटअप Redis का उपयोग कर Pinterest की फ़ीड की तरह एक प्रणाली में मदद मिलेगी। शुरू करना बहुत आसान है।

फ़ीड डिजाइन के बारे में अधिक जानने के लिए मैं अत्यधिक जो हम पर Feedly आधारित लेख के कुछ पढ़ने की सलाह: वापस आने

  • Cassandra at Instagram
  • Etsy feed scaling
  • Facebook history साथ