रेडिस और काफ्का के बीच अंतर [बंद]


87

रेडिस को काफ्का की तरह ही रियलटाइम पब-उप के रूप में इस्तेमाल किया जा सकता है।

मैं उलझन में हूँ कि कब कौन सा उपयोग करना है।

किसी भी उपयोग के मामले में एक बड़ी मदद होगी।


15
मुझे यकीन नहीं है कि यह प्रश्न "राय-आधारित" के रूप में क्यों बंद किया गया था? दोनों के बीच वस्तुनिष्ठ तकनीकी अंतर हैं और मौजूदा उत्तर उन अंतरों को स्पष्ट रूप से रेखांकित करते हैं।
डेविड एंडरसन

जवाबों:


137

रेडिस पब-उप ज्यादातर एक आग और भूल प्रणाली की तरह है जहां आपके द्वारा उत्पादित सभी संदेश सभी उपभोक्ताओं को एक ही बार में वितरित किए जाएंगे और डेटा कहीं नहीं रखा गया है। रेडिस के संबंध में आपकी स्मृति में सीमा है। साथ ही, उत्पादकों और उपभोक्ताओं की संख्या रेडिस में प्रदर्शन को प्रभावित कर सकती है।

दूसरी ओर, काफ्का एक उच्च थ्रूपुट, वितरित लॉग है जिसे कतार के रूप में इस्तेमाल किया जा सकता है। यहां किसी भी संख्या में उपयोगकर्ता उत्पादन कर सकते हैं और उपभोक्ता किसी भी समय अपनी इच्छानुसार उपभोग कर सकते हैं। यह कतार के माध्यम से भेजे गए संदेशों के लिए दृढ़ता भी प्रदान करता है।

अंतिम लें:

रेडिस का उपयोग करें:

  1. यदि आप एक आग चाहते हैं और इस तरह की प्रणाली को भूल जाते हैं, जहां आपके द्वारा उत्पादित सभी संदेश उपभोक्ताओं को तुरंत वितरित किए जाते हैं।
  2. यदि गति सबसे अधिक चिंतित है।
  3. यदि आप डेटा हानि के साथ रह सकते हैं।
  4. यदि आप नहीं चाहते कि आपका सिस्टम भेजे गए संदेश को पकड़ सके।
  5. डेटा की मात्रा के साथ निपटा जाना बहुत बड़ी नहीं है।

काफ्का का प्रयोग करें:

  1. अगर आप विश्वसनीयता चाहते हैं।
  2. यदि आप चाहते हैं कि आपके सिस्टम में संदेशों की एक प्रति हो जो उपभोग के बाद भी भेजी गई हो।
  3. यदि आप डेटा हानि के साथ नहीं रह सकते।
  4. अगर स्पीड कोई बड़ी चिंता नहीं है।
  5. डेटा का आकार बहुत बड़ा है

69
एक मुख्य अंतर यह है कि रेडिस पब / सब पुश आधारित है जबकि काफ्का पब / उप आधारित आधारित है। इसका मतलब है कि रेडिस को प्रकाशित संदेश स्वचालित रूप से ग्राहकों को तुरंत वितरित किए जाएंगे, जबकि काफ्का डेटा / संदेशों को कभी भी उपभोक्ताओं को धकेल नहीं दिया जाता है, जब उपभोक्ता संदेश को संभालने के लिए तैयार होता है तो उपभोक्ता संदेश भेजेगा। Cloudkarafka.com/blog/… kafka.apache.org/documentation.html#design_pull
Zeni

इसे पढ़ना: redis.io/topics/persistence मुझे भेजे गए संदेशों को पकड़ना संभव लगता है। क्या मै गलत हु?
डेविड डी।

1
@ डेविड: आपके द्वारा प्रदान किया गया लिंक यह बताता है कि आप redisयह सुनिश्चित करने के लिए कॉन्फ़िगर कर सकते हैं कि जो संदेश भेजे गए हैं लेकिन अभी तक संसाधित नहीं हुए हैं वे फिर से शुरू होने के बाद खो नहीं जाएंगे redis। हालांकि यह है कि ऐसा करने के लिए संभव है, redisकी अनुमति नहीं है पकड़ (या रखने @Karthikeyan का पुन: उपयोग करने के लिए शब्द) बाहर बॉक्स के।
Younes

11

Redis 5.0+ वर्जन स्ट्रीम डेटा स्ट्रक्टुटेर प्रदान करता है । इसे डिलीवरी गारंटी के साथ लॉग डेटा संरचना माना जा सकता है। यह उत्पादकों द्वारा एक धारा में जोड़े गए नए डेटा की प्रतीक्षा करने के लिए उपभोक्ताओं को अवरुद्ध करने की अनुमति देता है, और इसके अलावा उपभोक्ता समूहों नामक एक अवधारणा की अनुमति देता है।

मूल रूप से स्ट्रीम संरचना कफ़्का के समान कैपबिलिटी प्रदान करती है।

यहाँ प्रलेखन https://redis.io/topics/streams-intro है

दो सबसे लोकप्रिय जावा क्लाइंट इस सुविधा का समर्थन करते हैं: रेडिसन और जेडिस


1
निकिता खुद :) सुरुचिपूर्ण पुस्तकालय! बस इसे इस्तेमाल करना शुरू कर दिया। अच्छी तरह से संरचित और सोचा! आप एक जीनियस हैं सर!
एमएम

@mmm धन्यवाद!
निकिता कोकश्रोव

मुझे उचित उपयोग के बारे में कुछ प्रश्न हैं और नहीं, और मैं गलत धारणाएं बनाने से डरता हूं? शायद आप उन दो सवालों की समीक्षा कर सकते हैं जो मैंने SO पर यहां जोड़े हैं। इसके अलावा कभी-कभार ठीक होने पर आपको परेशान करने के लिए आपको Skype पर जोड़ना अच्छा लगेगा। मैं इसका उपयोग करने की इच्छा के बारे में कुछ जानकारी प्रदान कर सकता हूं। कुल नहीं noob :)
mmm

उदाहरण के लिए, मैं वर्तमान में एक कैशलेस मैप बना रहा हूं ... एक रनटाइम आईडी को कुंजी के रूप में उपयोग कर रहा हूं, और फिर सामान की एक सूची जोड़ रहा हूं कि सिस्टम वर्तमान में एक डीईसी से प्रसंस्करण कर रहा है ... सूची, मैं अनुमान के लिए एक ArrayList बना सकता हूं , मेरा मानना ​​है कि रेडिसन इसे आंतरिक रूप से मेरे लिए परिवर्तित कर देगा, लेकिन अगर मैं रीडिसलॉन सूची नहीं बनाता हूं, तो मुझे इसे एक नाम देना होगा, सही? आप उस सूची को आंतरिक रूप से क्या नाम देंगे? एक यादृच्छिक आईडी? क्या आपके एपीआई को तब भी कोई पैरामीटर नहीं बनाया जाना चाहिए, जिससे कोई लिस्ट तैयार न हो, क्योंकि इसके लिए usecase है?
एमएम

यकीन है कि मैं एक randomUuid में भेज सकते हैं, लेकिन यह जानना अच्छा होगा कि रेडिसन में एक अच्छा नाम जनरेटर है। मैं बैच की नौकरियों के प्रसंस्करण के लिए अपना खुद का डेक्स भी लिख रहा हूं, जिसमें एक रेडिसन डीक है, जो "लिया" तत्वों से युक्त एक मानचित्र द्वारा समर्थित है। अगर हमारे पास कतार में प्रसंस्करण करने वाले प्रत्येक 8 थ्रेड्स के साथ 10 प्रणालियां हैं, और एक परमाणु बम होता है, तो वे सभी खो जाएंगे और अप्रमाणित रह जाएंगे, क्योंकि उन्हें लिया गया था लेकिन पूरी तरह से संसाधित नहीं किया गया था।
एमएम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.