नमूना चैट एप्लिकेशन पर विचार करें जहां उपयोगकर्ता मासिक/वार्षिक सदस्यता (अमेज़ॅन प्राइम, आदि जैसी सदस्यता) खरीदते हैं।

जैसे ही सदस्यता समाप्त हो जाती है, उपयोगकर्ता ऐप में संदेश भेजने में सक्षम नहीं होना चाहिए।

उपयोगकर्ता मूल सदस्यता समाप्ति तिथि से पहले अपनी सदस्यता समाप्त कर सकते हैं।

मेरे दिमाग में एक समाधान (फ्रंटेंड) - ऐप में समाप्ति तिथि को कैश करने के लिए और प्रत्येक "संदेश भेजें" ऑपरेशन से पहले, समाप्ति तिथि और वर्तमान तिथि की तुलना करें।

लेकिन समस्या यह है कि - यदि उपयोगकर्ता सदस्यता को जल्दी समाप्त कर देता है, तब भी उपयोगकर्ता संदेश भेजने में सक्षम होगा।

मैं कैश में नई सदस्यता समाप्ति तिथि को अपडेट कैसे कर सकता हूं।

एक अन्य समाधान था (बैकएंड) - मेरे पास सब्सक्रिप्शन विवरण जैसे सब्सक्रिप्शन_आईडी, यूजर_आईडी, सब्सक्रिप्शन_एंडडेट स्टोर करने वाले बैकएंड में एक टेबल है। तो किसी भी "संदेश भेजें" ऑपरेशन से पहले, सदस्यता तालिका से पूछताछ करें और तिथियों की तुलना करें और फिर आगे के कार्यों को जारी/रद्द करें।

Q1. क्या मुझे बैकएंड समाधान के साथ जाना चाहिए या क्या आप इस परिदृश्य के लिए फ्रंटएंड विधि या किसी सर्वोत्तम अभ्यास में कुछ सुधार साझा कर सकते हैं?

प्रश्न 2. सदस्यता विवरण अलग तालिका सर्वोत्तम अभ्यास या इसके बजाय किसी भी अच्छे डिज़ाइन में संग्रहीत कर रहा है। ?

पीएस- सैंपल चैट ऐप एडब्ल्यूएस एम्पलीफाई डेटास्टोर पर आधारित है

0
Yusuf 4 जिंदा 2021, 06:45
1
यदि आप 'राय' की तलाश में हैं, तो आपको यहां बेहतर प्रतिक्रिया मिल सकती है: reddit.com/r/aws
 – 
John Rotenstein
4 जिंदा 2021, 10:00

1 उत्तर

सबसे बढ़िया उत्तर

मुझे उत्तर को तोड़ने और अपनी राय देने का प्रयास करने दें। मैं यह भी उल्लेख करना चाहूंगा कि ऐसी समस्याओं के समाधान पैमाने और विभिन्न ट्रेडऑफ़ द्वारा निर्धारित किए जाते हैं।

Q1-

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

enter image description here

सदस्यता के लिए फ़्रंटएंड कैश जोड़ने से यह सुनिश्चित होगा कि यदि कैश के साथ छेड़छाड़ नहीं की गई है तो आप फ़्रंटएंड पर अधिकांश संदेशों को फ़िल्टर करने में सक्षम होंगे।

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

Q2-

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

एक अलग माइक्रो-सर्विस कब है?

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

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

1
sourabh1024 4 जिंदा 2021, 10:50
fetch current subscription expiry for x seconds flow क्या है? मैं इस एक को छोड़कर सभी प्रवाहों को समझ गया
 – 
Yusuf
5 जिंदा 2021, 05:04
1
आप सदस्यता के वर्तमान समाप्ति समय को प्राप्त करके कैशे को फ़्रंटएंड में अपडेट कर सकते हैं और X सेकंड TTL जोड़ सकते हैं ताकि आप इस डेटा को ताज़ा करते रहें। आपके अपेक्षित क्यूपीएस के आधार पर एक्स बड़ा (5-10 मिनट) या 10 सेकंड की तरह छोटा हो सकता है।
 – 
sourabh1024
5 जिंदा 2021, 06:09
Q1 का समाधान - चूंकि हम बैकएंड पर चेक कर रहे हैं इसलिए मुझे लगता है कि हमें दो बार चेक करने से बचने के लिए फ्रंट-एंड पर कैशे की आवश्यकता नहीं है। Q2 का समाधान- मैं अलग तालिका के साथ जाऊंगा क्योंकि मेरे परिदृश्य में तर्क जटिल नहीं है।
 – 
Yusuf
5 जिंदा 2021, 08:22