माइक्रोसर्विसेस: अंतिम स्थिरता को संभालना


22

मान लें कि हमारे पास एक फ़ंक्शन है जो उपयोगकर्ता के पासवर्ड को अपडेट करता है।

एक बार 'अपडेट पासवर्ड' बटन पर क्लिक करने के बाद, एक अपडेटपेसवर्डवेंट एक विषय पर भेजा जाता है, जहां 3 अन्य सेवाएं सदस्यता ली जाती हैं:

  1. एक सेवा जो वास्तव में उपयोगकर्ता के पासवर्ड को अपडेट करती है
  2. एक सेवा जो उपयोगकर्ता के पासवर्ड इतिहास को अपडेट करती है
  3. एक सेवा जो उपयोगकर्ता को यह सूचित करने के लिए एक ई-मेल भेजती है कि उसका पासवर्ड बदल दिया गया है।

आखिरकार, जो मैंने अंततः स्थिरता के बारे में समझा है, इन सभी सेवाओं (उपभोक्ताओं) को एक ही समय में घटना प्राप्त होगी और उन्हें अलग से संसाधित करेगा, जो एक अच्छे परिदृश्य में, डेटा के सुसंगत होने का कारण बनेगा।

हालांकि, अगर कोई सेवा घटना को संसाधित करने में विफल रहती है तो क्या होगा? जैसे अचानक डिस्कनेक्ट, डेटाबेस त्रुटि, आदि ... इन लेनदेन विफलताओं को संभालने के लिए एक अच्छा पैटर्न / अभ्यास क्या है?

मैं एक RollbackTopic बनाने के बारे में सोच रहा था जहाँ अगर किसी भी घटना को संसाधित करने में विफल रहता है, तो एक रोलबैकवेंट एक विषय में बनाया जाएगा जहां "रोलबैक सेवाएं" यह काम करेगी और डेटा को वापस कर देगी।


11
आप भेजे गए ईमेल को पूर्ववत नहीं कर सकते हैं :-)
Laiv

2
क्योंकि उन सभी को एक ही सेवा का हिस्सा होना चाहिए। माइक्रो सर्विस मोनोलिथ के विरोध में हैं, इसका मतलब यह नहीं है कि आपको उन्हें "शारीरिक रूप से" जितना संभव हो उतना कम डिज़ाइन करना होगा। हालाँकि यह सीधे तौर पर संबंधित नहीं है, आपको इस सवाल और दो शीर्ष उत्तरों को पढ़ना चाहिए: softwareengineering.stackexchange.com/questions/339230/…
Walfrat

1
आप डेटाबेस में उपयोगकर्ता के पासवर्ड को सिंक्रोनाइज़ करने पर विचार करना पसंद कर सकते हैं, ताकि आप उपयोगकर्ता को तत्काल प्रतिक्रिया प्रदान करें, और अन्य सेवाओं को एक संदेश भेजकर ट्रिगर कर सकें, ताकि किसी विषय पर पासवर्ड बदल जाए, ताकि आपका संदेश नहीं आए। पासवर्ड सम्‍मिलित करें
cr3

क्या उपयोगकर्ता को यह बताने के लिए ई-मेल है कि लेनदेन पूरा हो गया है, या क्या यह उपयोगकर्ता को यह बताने के लिए है कि किसी ने (उम्मीद है कि) ने पासवर्ड बदल दिया है। "अगर यह आप नहीं थे, तो आपको कार्य करने की आवश्यकता है"। यदि दूसरा तो अभी ई-मेल भेजें, सबसे अच्छा आप कर सकते हैं।
ctrl-alt-delor 11

जवाबों:


29

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

नहीं, जरूरी नहीं। जैसा कि मैंने टिप्पणी की, हम भेजे गए ईमेल को पूर्ववत नहीं कर सकते, इसलिए हमें अभी भी "अनुक्रम" की आवश्यकता है। इवेंट-संचालित डेटा प्रबंधन पर IPC ऑर्केस्ट्रेशन 1 की छूट नहीं है ।

उदाहरण के लिए, ईमेल तब तक नहीं भेजा जाना चाहिए जब तक कि पिछला लेनदेन सफलतापूर्वक समाप्त न हो जाए और ईमेल सेवा को इसका एक प्रमाण मिल जाए। 3

हालांकि, अगर कोई सेवा घटना को संसाधित करने में विफल रहती है तो क्या होगा? जैसे अचानक डिस्कनेक्ट, डेटाबेस त्रुटि, आदि ... इन लेनदेन विफलताओं को संभालने के लिए एक अच्छा पैटर्न / अभ्यास क्या है?

वितरित कंप्यूटिंग की गिरावट के लिए नमस्ते कहो । वे वही हैं जो चीजों को जटिल बनाते हैं और हमेशा की तरह, उनसे निपटने के लिए चांदी की गोलियां नहीं हैं।

लॉस्ट आर्क की खोज में अपनी यात्रा शुरू करने से पहले, हमें संगठन से पूछने पर विचार करना होगा। अक्सर, समाधान यह है कि संगठन वास्तविक दुनिया में इन समस्याओं का सामना कैसे करता है

हर कोई (विभाग) कुछ डेटा गुम या अपूर्ण होने पर क्या करता है?

हमें पता चलेगा कि विभिन्न विभागों के अलग-अलग समाधान हैं, जिन्हें पूरी तरह से लागू करने के लिए समाधान शामिल है।

वैसे भी, यहां कुछ प्रथाएं हैं जो हमें पालन करने की रणनीति के साथ मदद कर सकती हैं।

आखिरकार संगति

यह सुनिश्चित करने के बजाय कि सिस्टम हर समय एक सुसंगत स्थिति में है, इसके बजाय हम स्वीकार कर सकते हैं कि सिस्टम भविष्य में किसी बिंदु पर इसे प्राप्त करेगा। यह दृष्टिकोण विशेष रूप से लंबे समय तक रहने वाले व्यावसायिक कार्यों के लिए उपयोगी है।

सिस्टम के लिए स्थिरता तक पहुंचने का तरीका सिस्टम से सिस्टम में भिन्न होता है। इसमें स्वचालित प्रक्रियाओं से लेकर कुछ प्रकार के मानवीय हस्तक्षेप शामिल हो सकते हैं। उदाहरण के लिए, विशिष्ट कोशिश यह बाद में फिर से या ग्राहक सेवा के साथ संपर्क

सभी ऑपरेशन को निरस्त करें

लेन-देन की भरपाई के माध्यम से सिस्टम को एक सुसंगत स्थिति में वापस रखें । हालाँकि, हमें यह ध्यान रखना होगा कि, ये लेन-देन विफल भी हो सकते हैं, जो हमें उस बिंदु तक ले जा सकता है जहाँ असंगति को हल करना और भी कठिन है। और, फिर से, हम एक भेजे गए ईमेल को पूर्ववत नहीं कर सकते।

लेनदेन की कम संख्या के लिए, यह दृष्टिकोण संभव है, क्योंकि लेनदेन की क्षतिपूर्ति की संख्या भी कम है। अगर आईपीसी में कई व्यापारिक लेनदेन शामिल थे, तो उनमें से प्रत्येक के लिए एक क्षतिपूर्ति लेनदेन को संभालना चुनौतीपूर्ण होगा।

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

वितरण वितरित किया गया

लेन-देन प्रबंधक के रूप में ज्ञात एक समग्र शासी प्रक्रिया के माध्यम से एक ही लेनदेन के भीतर कई लेनदेन करने का विचार है । वितरित लेनदेन को संभालने के लिए एक सामान्य एल्गोरिथ्म दो-चरण प्रतिबद्ध है

वितरित लेनदेन की मुख्य चिंता यह है कि वे अपने जीवन-काल के दौरान संसाधनों को लॉक करने पर भरोसा करते हैं, और जैसा कि हम जानते हैं, लेन-देन प्रबंधक के लिए भी चीजें गलत हो सकती हैं ।

यदि लेन-देन प्रबंधकों से समझौता हो जाता है, तो हम सभी अलग-अलग बंधे हुए संदर्भों के कई तालों के साथ समाप्त हो सकते हैं, जिसके परिणामस्वरूप संदेशों के कारण अप्रत्याशित व्यवहार होते हैं।2

Decomposing संचालन। क्यूं कर?

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

सैम न्यूमैन

उपर्युक्त तर्कों के साथ, सैम-उनकी पुस्तक बिल्डिंग माइक्रोसर्विसेज - में कहा गया है कि अगर हम वास्तव में, वास्तव में वास्तव में निरंतरता को बर्दाश्त नहीं कर सकते हैं, तो हमें अब ऑपरेशन को विभाजित करने से बचना चाहिए।

यदि हम कुछ परिचालन को दो या अधिक लेन-देन में विभाजित नहीं कर सकते हैं, तो यह कहना पड़ सकता है कि-ठीक-ठीक-ये लेन-देन एक ही बाउंडेड संदर्भ से संबंधित है, या-कम से कम-एक क्रॉस-कटिंग संदर्भ के लिए जो मॉडल होना बाकी है।

उदाहरण के लिए, हमारे मामले में, हमें पता चलता है कि लेनदेन # 1 और # 2 कसकर एक दूसरे से संबंधित हैं और शायद दोनों एक ही बंधे हुए संदर्भ खातों , उपयोगकर्ताओं , रजिस्टर से संबंधित हो सकते हैं , जो भी हो ...

एक ही लेनदेन की सीमाओं के भीतर दोनों संचालन रखने पर विचार करें। यह पूरे ऑपरेशन को संभालना आसान बनाता है। प्रत्येक लेनदेन की आलोचनात्मकता के स्तर को भी मापता है। संभवतः, यदि लेनदेन # 2 विफल रहता है, तो उसे पूरे ऑपरेशन से समझौता नहीं करना चाहिए। संदेह के मामले में संगठन से पूछें ।


1: ऐसा नहीं है कि आप किस तरह का ऑर्केस्ट्रेशन सोचते हैं। मैं ESB के ऑर्केस्टेशन के बारे में बात नहीं कर रहा हूँ। मैं सेवाओं को उचित घटना पर प्रतिक्रिया देने के बारे में बात कर रहा हूं।

2: आपको वितरित लेनदेन के बारे में दिलचस्प सैम न्यूमैन की राय मिल सकती है ।

3: इस विषय के बारे में डेविड पार्कर का उत्तर देखें।


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

7

आपके मामले में आप एक ही बार में तीनों चीजों को संसाधित नहीं कर सकते। आपको जो चाहिए वह एक प्रक्रिया है। यहाँ एक बहुत ही सरल उदाहरण दिया गया है:

कमान और घटना आर्केस्ट्रा

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

आपके सिस्टम को इस बात की गारंटी देनी चाहिए कि आपके सिस्टम में किसी भी घटना के बढ़ने से पहले पहले ट्रांजैक्शनल सेफ्टी के साथ रहना जरूरी है। यह सुनिश्चित करने के लिए है कि एक उठाया घटना वास्तव में वास्तव में क्या हुआ है, इसकी पुष्टि है।

इस प्रक्रिया के कई पेचीदा हिस्से हैं जैसे कि और मैं स्पष्ट लोगों को अनदेखा करने जा रहा हूं - जैसे: क्या होगा यदि आपका डेटाबेस सर्वर बदले हुए पासवर्ड वाले उपयोगकर्ता को जारी रखने के दौरान मर जाता है? आप बस फिर से UpdatePassword जारी करें। हालाँकि, कुछ हिस्सों का ध्यान रखना आपके लिए आवश्यक है, और ये हैं:

  • संदेश दोहराव से निपटने,
  • ई-मेल भेजने से निपटने।

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

जब पीओ एक Newराज्य और प्रक्रियाओं में होता है UserPasswordHasBeenUpdated, तो वह अपनी स्थिति UserPasswordHasBeenUpdated(या जो भी आपके लिए राज्य का नाम काम करता है) को बदल देता है। क्या पीओ को अभी भी अंदर होना चाहिए और एक UserPasswordHasBeenUpdatedऔर UserPasswordHasBeenUpdatedआ जाएगा, पीओ यह पूरी तरह से एक दोहराव को जानते हुए, संदेश को अनदेखा कर देगा। इसी तरह के तंत्र को अन्य राज्यों के लिए भी लागू किया जाएगा।

ई-मेल के वास्तविक भेजने से निपटना थोड़ा मुश्किल है। यहाँ आपके पास दो विकल्प हैं:

  1. इसे अधिकतम एक बार भेजें,
  2. इसे कम से कम एक बार भेजें।

इसे अधिकतम एक बार भेजें

इस विकल्प के साथ, जब PO UserPasswordHistoryHasBeenSavedराज्य में ई-मेल भेजने की आज्ञा देता है, तो उसे राज्य परिवर्तन की प्रतिक्रिया के रूप में भेज दिया जाता है। आपका सिस्टम यह सुनिश्चित UserPasswordHistoryHasBeenSavedकरेगा कि ई-मेल भेजने से पहले राज्य कायम रहेगा, यानी डुप्लिकेट किए गए संदेश फिर से ई-मेल भेजने को ट्रिगर नहीं करेंगे। इस दृष्टिकोण के साथ आप यह सुनिश्चित करते हैं कि पीओ के लिए सही स्थिति बच गई है, लेकिन निम्नलिखित ऑपरेशन की गारंटी नहीं दे सकता है।

इसे कम से कम एक बार भेजें

यह वही है जिसके लिए मैं जाऊंगा।

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

आपके मामले में आप यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता वास्तव में ई-मेल प्राप्त करता है। इसलिए मैं पहले के मुकाबले दूसरा विकल्प चुनूंगा।


2

क्यूइंग सिस्टम उतने नाजुक नहीं हैं जितना आप सोच सकते हैं।

यदि हम सभी तीन प्रक्रियाओं को संबंधपरक db में लिख रहे थे, तो हम एक मध्य प्रक्रियाओं की विफलता को संभालने के लिए लेनदेन का उपयोग कर सकते हैं।

अंतिम प्रतिबद्ध के बिना आंशिक काम छोड़ दिया जाएगा।

जब आप मध्य प्रक्रिया विफलताओं को संभालने के लिए कतार से एक संदेश पढ़ते हैं तो एक कतार आधार प्रणाली में आपके पास एक समान विकल्प होंगे।

उदाहरण के लिए अमेज़न SQS केवल उन संदेशों को छिपाता है जो पढ़े जाते हैं। जब तक एक अंतिम डिलीट कमांड नहीं भेजा जाता है तब तक संदेश फिर से दिखाई देगा या एक मृत पत्र कतार में रखा जाएगा।

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

संभावित रूप से आप एक 'रोलबैक सेवा' बना सकते हैं, जो इन मिटाए गए संदेशों की निगरानी करती है, संबंधित संदेशों और पिछली स्थिति के बारे में जानती है और रोलबैक का प्रदर्शन करती है।

तथापि! यह आमतौर पर बेहतर है कि मिटाए गए संदेशों को फिर से भेजें। इन सब के बाद किनारे के मामले होते हैं। या तो एक सर्वर भयावह रूप से विफल हो गया या किसी विशेष संदेश प्रकार को संभालने में एक बग था।

एक बार त्रुटि के बाद सेवा की मरम्मत की जा सकती है और संदेशों को सफलतापूर्वक संसाधित किया जा सकता है। सिस्टम को संपूर्ण स्थिति में वापस लाना।


2

आप यहाँ जो सामना कर रहे हैं वह दो जनरलों की समस्या है । संक्षेप में: आप कैसे सुनिश्चित कर सकते हैं कि कोई संदेश प्राप्त हुआ है और उस संदेश की प्रतिक्रिया होती है? कई मामलों में, एक सही समाधान मौजूद नहीं है। वास्तव में, एक वितरित प्रणाली में संदेशों का बिल्कुल सटीक वितरण प्राप्त करना अक्सर असंभव होता है

पहली स्पष्ट टिप्पणी यह ​​है कि पासवर्ड को बदलने वाली सेवा को पासवर्ड-परिवर्तन की घटना को भेजना चाहिए। इस तरह से पासवर्ड इतिहास और मेल भेजने वाली सेवाओं को केवल तभी ट्रिगर किया जाता है जब पासवर्ड वास्तव में बदल जाता है, भले ही यह क्यों बदल गया हो।

वास्तव में आपकी समस्या को हल करने के लिए मैं वितरित लेनदेन पर विचार नहीं करूंगा, बल्कि इसके बजाय कम से कम-एक बार संदेश वितरण और निष्क्रिय प्रसंस्करण की दिशा में देखें।

  • कम से कम एक बार

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

  • Idempotence

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

किसी भी मामले में, सावधान रहें कि आप अपनी सेवाओं को कितना सूक्ष्म बनाते हैं। क्या आपकी पासवर्ड इतिहास सेवा वास्तव में पासवर्ड परिवर्तन सेवा से स्वतंत्र होने की आवश्यकता है?


1

मैं बहुत से जवाबों से असहमत हूं।

  1. अब ई-मेल भेजें "किसी ने आपका पासवर्ड बदल दिया है। यदि यह आप थे तो आपको कुछ भी करने की आवश्यकता नहीं है। घबराइए नहीं। '' यह आते ही सामने आ जाएगा।
  2. पासवर्ड बदलें। हालांकि आपके पास अंततः संगति है। आप यह सुनिश्चित करना चाहते हैं कि यह सत्र उपयोगकर्ता द्वारा किए गए परिवर्तनों को देखता है।

अन्य संगतता वादे हैं जो आप जोड़ सकते हैं।

  • सुनिश्चित करें कि समय क्रम में परिवर्तन हो।
  • सुनिश्चित करें कि उपयोगकर्ता कभी भी रोल-बैक नहीं देखता है, लेकिन अन्य उपयोगकर्ता अभी भी परिवर्तन नहीं देख सकते हैं।
  • और भी हैं

ये अतिरिक्त संगतता आवेदन के कर्मों के आधार पर लागू करने की आवश्यकता होगी।


मुझे नहीं पता कि आप "इतिहास को अपडेट करते हैं" से क्या मतलब है, लेकिन कृपया इतिहास को कभी न बदलें। यदि आप केवल डीएजी का विस्तार कर रहे हैं, तो यह वर्तमान स्थिति में परिवर्तन का कारण होना चाहिए। वे स्वतंत्र नहीं हैं। यदि वे हैं तो आप इतिहास पर भरोसा नहीं कर सकते कि क्या हुआ था। (और अंतिम लेकिन कम से कम, पासवर्ड स्टोर न करें देखें कि पासवर्ड कैसे स्टोर करें )


यदि आप शुरुआत में ईमेल भेज सकते हैं तो आपका दृष्टिकोण ठीक है। अगर आपको ईमेल के साथ कुछ भेजना है। हो सकता है कि एक प्रकार का लिंक / डेटा जो केवल स्थिरता प्राप्त होने के बाद प्राप्त किया जा सकता है, फिर आप पहले ईमेल नहीं भेज सकते। यही मैंने टिप्पणी की consider asking the organization first.। आप सही होने की संभावना है। हालाँकि, मैंने उन घटनाओं की स्थिति के लिए महत्वपूर्ण पाया है जिन्हें हम पूर्ववत नहीं कर सकते हैं। उदाहरण के लिए एंड-यूज़र को सूचनाएँ। उपयोगकर्ता के डेटा की वास्तविक स्थिति पर पड़ी अधिसूचना खराब प्रभाव डाल सकती है।
Laiv

इस विशिष्ट परिदृश्य (पासवर्ड बदलने की सूचना) के लिए, मैंने इस दृष्टिकोण से सहमति व्यक्त की। जैसे ही यह आवश्यकताओं को पूरा करता है।
लैवि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.